Skip to content

Commit 6ea9b7f

Browse files
committed
implement INT21.33FC (set DOS version, FreeDOS compatible call)
1 parent eac2b20 commit 6ea9b7f

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

drdos/header.asm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ PCMODE_DATA segment public word 'DATA'
172172
Public share_stub
173173
Public sector_size
174174
Public setverPtr
175+
Public true_version
175176
Public dos_version
176177

177178
Public @hist_flg ; History control flag

drdos/misc.asm

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ GLOBAL_DATA segment public word 'DATA'
8989
extrn info5_len:abs
9090
extrn info6_len:abs
9191
extrn info7_len:abs
92+
extrn true_version:word
9293
extrn dos_version:word
9394
extrn country_filename:byte
9495
GLOBAL_DATA ends
@@ -461,6 +462,8 @@ f33_XX:
461462
je f33_30
462463
cmp al,6 ; get true version ?
463464
je f33_60
465+
cmp al,0fch ; set DOS version?
466+
je f33_fc
464467
mov reg_AL[bp],0FFh ; return AL = FF
465468
ret ; Illegal function request
466469
f33_10:
@@ -478,17 +481,21 @@ f33_40:
478481

479482
f33_60:
480483
mov es,current_psp
481-
mov ax,es:PSP_VERSION ; reported version for current program
484+
mov ax,es:PSP_VERSION ; reported version for current program
482485
cmp ax,dos_version ; has this been faked with SETVER?
483486
mov reg_BX[bp],ax
484487
jne f33_61 ; yes, then fake the true version, too
485-
mov ax,dos_version-2 ; if not, then honestly return true version number
488+
mov ax,true_version ; if not, then honestly return true version number
486489
mov reg_BX[bp],ax
487490
f33_61:
488491
mov ax,patch_version
489492
mov reg_DX[bp],ax ; return revision+HMA
490493
ret
491494

495+
f33_fc:
496+
mov ax,reg_BX[bp]
497+
mov dos_version,ax
498+
ret
492499

493500
;
494501
; *****************************

0 commit comments

Comments
 (0)