Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ Notes: this function is preferred over direct modification of the interrupt
of just two words in addition to the IRET frame, allowing it to be
called from INT 21h functions, specificially device drivers. This
fixes the MCS SMB client
lDOS as of 2026-04-26 also runs this function on the user stack
Novell NetWare (except the new DOS Requester) monitors the offset of
any INT 24 set, and if equal to the value at startup, substitutes
its own handler to allow handling of network errors; this introduces
the potential bug that any program whose INT 24 handler offset
happens to be the same as COMMAND.COM's will not have its INT 24
handler installed
SeeAlso: AX=2501h,AH=35h

Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ INT 21 - DOS 2+ - GET INTERRUPT VECTOR
Return: ES:BX -> current interrupt handler
Notes: under DR DOS 5.0+, this function does not use any of the DOS-internal
stacks and may thus be called at any time
lDOS as of 2026-04-26 also runs this function on the user stack
SeeAlso: AH=25h,AX=2503h

Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,18 @@ Bitfields for file time:
Bit(s) Description (Table 01665)
15-11 hours (0-23)
10-5 minutes
4-0 seconds/2
4-0 seconds/2 (this cannot encode odd seconds)
Notes: all of these fields are 0-based

Bitfields for file date:
Bit(s) Description (Table 01666)
15-9 year - 1980
15-9 year minus 1980 (0 to 127, corresponding to 1980 to 2107)
8-5 month
4-0 day

Notes: the month and day are encoded 1-based, so that if they hold zeroes
they encode an invalid date. this is typically the case if
the entire file date is all-zeroes.
the lDOS bootimg assembler script usually initialises all file dates
and times as all-zeroes. some shells (eg MS-DOS v4.01 command.com)
will detect these and not display any date, others (eg FreeCOM)
may display a stamp like "1980-00-00 00:00:00"
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ INT 21 U - DOS 3.1+ internal - SERVER FUNCTION CALL
DS:DX -> DOS parameter list (see #01686)
DPL contains all register values for a call to INT 21h
Return: as appropriate for function being called
Notes: does not check AH. Out of range values will crash the system
Notes: does not check AH. out of range values will crash the system (see BUGS)
executes using specified computer ID and process ID
sharing delay loops skipped
a special sharing mode is enabled to handle FCBs opened across network
Expand All @@ -26,6 +26,19 @@ BUGS: the OS/2 2.0 DOS Boot Session incorrectly maps DOS drive letters,
DR DOS 5.0-6.0 merely recursively call INT 21 after loading the
registers from the DPL, leading to problems for peer-to-peer
networks
on MS-DOS v4.01 and v5, calling AH=33h,AH=50h,AH=51h,AH=62h, or AH=64h
using this function crashes the system. this is because the DISPATCH
table entries point to the user stack functions, which do not expect
to be called from the main REDISP entry. high function numbers that
exceed the DISPATCH table size (eg AH=6Dh,AH=71h,AH=73h) also crash.
lDOS as of 2026-04-26 returns MS-DOS v1 style errors (AL = 00h, CF
unchanged) for the above listed function numbers. AH=25h and AH=35h
are handled in a special way: if they are called directly they use
small handlers on the user stack. if they are called using this
function then the old code that works from REDISP is used instead.
Enhanced DR-DOS appears to handle function AH=33h fine(?) but crashes
on AH=75h or higher. it corrupts memory for function AH=62h. likely,
function AH=51h is broken as well. function AH=50h appears fine.
SeeAlso: AH=3Dh,AH=41h,AH=56h,AH=60h

Format of DOS parameter list:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ Return: CF clear if successful
AH = 68h
CF set on error
AX = error code (06h) (see #01680 at AH=59h/BX=0000h)
Notes: identical to AH=68h in DOS 5.0-6.0; not known whether this is the case
in DOS 4.x
Notes: identical to AH=68h in MS-DOS v4.01, v5.00, and v6.00
SeeAlso: AH=68h

Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ Return: CF clear if successful
AX = error code
7100h if function not supported
Notes: the file may be renamed into a different directory, but not across
disks
drives (just like for AH=56h)
SeeAlso: AH=56h,AX=7141h,AX=43FFh/BP=5053h