Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

not setting carry (Developers)

posted by ecm Homepage E-mail, Düsseldorf, Germany, 17.10.2025, 10:29

> > It is deliberate. The "high" functions use the MS-DOS v1 style error
> > return, which consists of Carry Flag unchanged, al = 00h.
>
> Thanks. And do we now have a definite definition of "high"?

This is the instructions in MS-DOS v4.01: https://hg.pushbx.org/ecm/msdos4/file/51ad27d225a8/src/DOS/DISP.ASM#l237

The variable is defined here: https://hg.pushbx.org/ecm/msdos4/file/51ad27d225a8/src/DOS/MS_TABLE.ASM#l234

VAL2 is calculated after the table: https://hg.pushbx.org/ecm/msdos4/file/51ad27d225a8/src/DOS/MS_TABLE.ASM#l409

That means all calls above ah=6Ch are high.

The same is true of MS-DOS v5.00 and presumably v6 as well. Here's disassembly of MS-DOS v5.00 running in dosemu2:


C:\>ldebug
-a
2BC9:0100 mov ah, 80
2BC9:0102 int 21
2BC9:0104 nop
2BC9:0105 int3
2BC9:0106 nop
2BC9:0107
-di 21
int 21 B001:008C (IISP)
 --> F000:EAA1 (nonstandard IISP)
 --> 011C:109E
-g 11C:109E
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=011C IP=109E NV UP DI PL ZR NA PE NC
011C:109E 90                nop
-p
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=011C IP=109F NV UP DI PL ZR NA PE NC
011C:109F 90                nop
-
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=011C IP=10A0 NV UP DI PL ZR NA PE NC
011C:10A0 E8CC00            call    116F
-
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=011C IP=10A3 NV UP DI PL ZR NA PE NC
011C:10A3 2EFF2E6A10        jmp     far [cs:106A]             CS:106A=FDC8:40EB
-
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=FDC8 IP=40EB NV UP DI PL ZR NA PE NC
FDC8:40EB FA                cli
-
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=FDC8 IP=40EC NV UP DI PL ZR NA PE NC
FDC8:40EC 80FC6C            cmp     ah, 6C
-
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=FDC8 IP=40EF OV UP DI PL NZ AC PE NC
FDC8:40EF 77D2              ja      40C3                                jumping
-
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=FDC8 IP=40C3 OV UP DI PL NZ AC PE NC
FDC8:40C3 32C0              xor     al, modrm al
-
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=FDC8 IP=40C5 NV UP DI PL ZR NA PE NC
FDC8:40C5 CF                iret
-
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2BC9 ES=2BC9 SS=2BC9 CS=2BC9 IP=0104 NV UP EI PL ZR NA PE NC
2BC9:0104 90                nop
-


Here's disassembly of MS-DOS v7.00, apparently it supports some(?) functions of ah=73h: (The interrupt list has some functions marked as MS-DOS 7 and others as FAT32 (corresponding to MS-DOS v7.10).)



lDebug connected to serial port. Enter KEEP to confirm.
= keep
^a
2D6A:0100 mov ah, 80
          B480
2D6A:0102 int 21
          CD21
2D6A:0104 nop
          90
2D6A:0105 int3
          CC
2D6A:0106 nop
          90
2D6A:0107
^r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=0100 NV UP EI PL ZR NA PE NC
2D6A:0100 B480              mov     ah, 80
^tm 1
trace mode is 1 - interrupts are traced
^install indos
^r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=0100 NV UP EI PL ZR NA PE NC
2D6A:0100 B480              mov     ah, 80
^t
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=0102 NV UP EI PL ZR NA PE NC
2D6A:0102 CD21              int     21
^
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=00C9 IP=0FB2 NV UP DI PL ZR NA PE NC
00C9:0FB2 90                nop
^
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=00C9 IP=0FB3 NV UP DI PL ZR NA PE NC
00C9:0FB3 90                nop
^
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=00C9 IP=0FB4 NV UP DI PL ZR NA PE NC
00C9:0FB4 E8D100            call    1088
^p
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=00C9 IP=0FB7 NV UP DI PL ZR NA PE NC
00C9:0FB7 2EFF2E820F        jmp     far [cs:0F82]             CS:0F82=FF03:41E7
^t
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=FF03 IP=41E7 NV UP DI PL ZR NA PE NC
FF03:41E7 FA                cli
^
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=FF03 IP=41E8 NV UP DI PL ZR NA PE NC
FF03:41E8 80FC73            cmp     ah, 73
^
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=FF03 IP=41EB OV UP DI PL NZ AC PO NC
FF03:41EB 77D2              ja      41BF                                jumping
^t
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=FF03 IP=41BF OV UP DI PL NZ AC PO NC
FF03:41BF 32C0              xor     al, al
^
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=FF03 IP=41C1 NV UP DI PL ZR NA PE NC
FF03:41C1 CF                iret
^
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=0104 NV UP EI PL ZR NA PE NC
2D6A:0104 90                nop
^a
2D6A:0107 mov ax, 3306
          B80633
2D6A:010A int 21
          CD21
2D6A:010C nop
          90
2D6A:010D int3
          CC
2D6A:010E
^tm 0
trace mode is 0 - interrupts are processed
^t
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=0105 NV UP EI PL ZR NA PE NC
2D6A:0105 CC                int3
^
Unexpected breakpoint interrupt
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=0106 NV UP EI PL ZR NA PE NC
2D6A:0106 90                nop
^
AX=8000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=0107 NV UP EI PL ZR NA PE NC
2D6A:0107 B80633            mov     ax, 3306
^
AX=3306 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=010A NV UP EI PL ZR NA PE NC
2D6A:010A CD21              int     21
^
AX=3306 BX=0007 CX=0000 DX=1000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=2D6A ES=2D6A SS=2D6A CS=2D6A IP=010C NV UP EI PL ZR NA PE NC
2D6A:010C 90                nop
^

---
l

 

Complete thread:

Back to the forum
Board view  Mix view
22747 Postings in 2119 Threads, 402 registered users, 423 users online (0 registered, 423 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum