ralf@b.gp.cs.cmu.edu (Ralf Brown) (12/18/88)
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.6 - RELEASE PHYSICAL RECORD SET
AH = C3h
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.6 - CLEAR PHYSICAL RECORD SET
AH = C4h
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.6 - SEMAPHORES
AH = C5h
AL = subfunction
00h open semaphore
DS:DX -> semaphore name
CL = initial value
01h examine semaphore
Return: CX = semaphore value (sign extended)
DL = open count
02h wait on semaphore
BP = timeout in timer ticks (1/18 sec)
03h signal semaphore
04h close semaphore
CX:DX = semaphore handle (except function 00h)
Return: AL = error code
if function 00h
CX:DX = semaphore handle
BL = open count
---------------------------------------------
INT 21 - Novell NetWare 4.6 - GET OR SET LOCK MODE
AH = C6h
AL = subfunction
00h set old "compatibility" mode
01h set new extended locks mode
02h get lock mode
Return: AL = current lock mode
---------------------------------------------
INT 21 - Novell NetWare 4.0 - TTS
AH = C7h
AL = subfunction
00h begin transaction (NetWare SFT level II)
Return: AL = error code
01h end transaction (NetWare SFT level II)
Return: AL = error code
CX:DX = transaction reference number
02h TTS available (NetWare SFT level II)
Return: AL = completion code
00h TTS not available
01h TTS available
FDh TTS available but disabled
03h abort transaction (NetWare SFT level II)
Return: AL = error code
04h transaction status
05h get application thresholds
06h set application thresholds
07h get workstation thresholds
08h set workstation thresholds
Return: ???
---------------------------------------------
INT 21 - Novell NetWare 4.0 - BEGIN LOGICAL FILE LOCKING
AH = C8h
if function C6h lock mode 00h:
DL = mode
00h no wait
01h wait
if function C6h lock mode 01h:
BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - END LOGICAL FILE LOCKING
AH = C9h
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - LOG PERSONAL FILE (FCB)
AH = CAh
DS:DX -> FCB
if function C6h lock mode 01h:
AL = log and lock flag
00h log file only
01h lock as well as log file
BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - LOCK FILE SET
AH = CBh
if function C6h lock mode 00h:
DL = mode
00h no wait
01h wait
if function C6h lock mode 01h:
BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - RELEASE FILE (FCB)
AH = CCh
DS:DX -> FCB
Return: none
---------------------------------------------
INT 21 - Novell NetWare 4.0 - RELEASE FILE SET
AH = CDh
Return: none
---------------------------------------------
INT 21 - Novell NetWare 4.0 - CLEAR FILE (FCB)
AH = CEh
DS:DX -> FCB
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - CLEAR FILE SET
AH = CFh
Return: AL = 00h
---------------------------------------------
INT 21 - Novell NetWare 4.6 - LOG LOGICAL RECORD
AH = D0h
DS:DX -> record string
if function C6h lock mode 01h:
AL = flags
bit 0: lock as well as log the record
bit 1: non-exclusive lock
BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.6 - LOCK LOGICAL RECORD SET
AH = D1h
if function C6h lock mode 00h:
DL = mode
00h no wait
01h wait
if function C6h lock mode 01h:
BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - RELEASE LOGICAL RECORD
AH = D2h
DS:DX -> record string
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - RELEASE LOGICAL RECORD SET
AH = D3h
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - CLEAR LOGICAL RECORD
AH = D4h
DS:DX -> record string
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - CLEAR LOGICAL RECORD SET
AH = D5h
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - END OF JOB
AH = D6h
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - SYSTEM LOGOUT
AH = D7h
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - GET VOLUME STATISTICS
AH = DAh
DL = volume number
ES:DI -> reply buffer
Return: AL = 00h
reply buffer
WORD sectors/block
WORD total blocks
WORD unused blocks
WORD total directory entries
WORD unused directory entries
16 BYTEs volume name, null padded
WORD removable flag, 0 = not removable
---------------------------------------------
INT 21 - Novell NetWare 4.0 - GET NUMBER OF LOCAL DRIVES
AH = DBh
Return: AL = number of local disks
---------------------------------------------
INT 21 - Novell NetWare 4.0 - GET STATION NUMBER
AH = DCh
Return: AL = station number
0 if NetWare not loaded or this machine is a non-dedicated server
CX = station number in ASCII
---------------------------------------------
INT 21 - Novell NetWare 4.0 - SET ERROR MODE
AH = DDh
DL = error mode
00h display critical I/O errors
01h extended errors for all I/O in AL
02h extended errors for critical I/O in AL
Return: AL = previous error mode
---------------------------------------------
INT 21 - Novell NetWare 4.0 - SET BROADCAST MODE
AH = DEh
AL = broadcast mode
00h receive console and workstation broadcasts
01h receive console broadcasts only
02h receive no broadcasts
03h store all broadcasts for retrieval
04h get broadcast mode
05h disable shell tiemr interrupt checks
06h enable shell timer interrupt checks
Return: AL = old broadcast mode
---------------------------------------------
INT 21 - Novell NetWare 4.0 - CAPTURE
AH = DFh
AL = subfunction
00h start LPT capture
01h end LPT capture
02h cancel LPT capture
03h flush LPT capture
04h start specific capture
05h end specific capture
06h cancel specific capture
07h flush specific capture
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - PRINT SPOOLING
AH = E0h
DS:SI -> request buffer
ES:DI -> reply buffer
subfunction in third byte of request buffer
00h spool data to a capture file
01h close and queue capture file
02h set spool flags
03h spool existing file
04h get spool queue entry
05h remove entry from spool queue
06h get printer status
09h create a disk capture file
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - BROADCAST MESSAGES
AH = E1h
DS:SI -> request buffer
ES:DI -> reply buffer
subfunction in third byte of request buffer
00h send broadcast message
01h get broadcase message
02h disable station broadcasts
03h enable station broadcasts
04h send personal message
05h get personal message
06h open message pipe
07h close message pipe
08h check pipe status
09h broadcast to console
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - DIRECTORY FUNCTIONS
AH = E2h
DS:SI -> request buffer
ES:DI -> reply buffer
subfunction in third byte of request buffer
00h set directory handle
01h get directory path
02h scan directory information
03h get effective directory rights
04h modify maximum rights mask
05h get volume number
06h get volume name
0Ah create directory
0Bh delete directory
0Ch scan directory for trustees
0Dh add trustee to directory
0Eh delete trustee from directory
0Fh rename directory
10h purge erased files
11h restore erased file
12h allocate permanent directory handle
13h allocate temporary directory handle
14h deallocate directory handle
15h get volume info with handle
16h allocate special temporary directory handle
17h retrieve a short base handle (Advanced NetWare 2.0)
18h restore a short base handle (Advanced NetWare 2.0)
19h set directory information
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - CONNECTION CONTROL
AH = E3h
DS:SI -> requst buffer
ES:DI -> reply buffer
subfunction in third byte of request buffer
00h login
01h change password
02h map user to station set
03h map object to number
04h map number to object
05h get station's logged information
06h get station's root mask (obsolete)
07h map group name to number
08h map number to group name
09h get memberset M of group G
0Ah enter login area
0Bh
0Ch
0Dh log network message
0Eh get disk utilization (Advanced NetWare 1.0)
0Fh scan file information (Advanced NetWare 1.0)
10h set file information (Advanced NetWare 1.0)
11h get file server information (Advanced NetWare 1.0)
12h
13h get internet address (Advanced NetWare 1.02)
14h login to file server (Advanced NetWare 2.0)
15h get object connection numbers (Advanced NetWare 2.0)
16h get connection information (Advanced NetWare 1.0)
32h create object (Advanced NetWare 1.0)
33h delete object (Advanced NetWare 1.0)
34h rename object (Advanced NetWare 1.0)
35h get object ID (Advanced NetWare 1.0)
36h get object name (Advanced NetWare 1.0)
37h scan object (Advanced NetWare 1.0)
38h change object security (Advanced NetWare 1.0)
39h create propery (Advanced NetWare 1.0)
3Ah delete property (Advanced NetWare 1.0)
3Bh change property security (Advanced NetWare 1.0)
3Ch scan property (Advanced NetWare 1.0)
3Dh read property value (Advanced NetWare 1.0)
3Eh write property value (Advanced NetWare 1.0)
3Fh verify object password (Advanced NetWare 1.0)
40h change object password (Advanced NetWare 1.0)
41h add object to set (Advanced NetWare 1.0)
42h delete object from set (Advanced NetWare 1.0)
43h is object in set? (Advanced NetWare 1.0)
44h close bindery (Advanced NetWare 1.0)
45h open bindery (Advanced NetWare 1.0)
46h get bindery access level (Advanced NetWare 1.0)
47h scan object trustee paths (Advanced NetWare 1.0)
C8h check console priviledges
C9h get file server description strings
CAh set file server date and time
CBh disable file server login
CCh enable file server login
CDh get file server login status
CEh purge all erased files
CFh disable transaction tracking
D0h enable transaction tracking
D1h send console broadcast
D2h clear connection number
D3h down file server
D4h get file system statistics
D5h get transaction tracking statistics
D6h read disk cache statistics
D7h get drive mapping table
D8h read physical disk statistics
D9h get disk channel statistics
DAh get connection's task information
DBh get list of connection's open files
DCh get list of connections using a file
DDh get physical record locks by connection and file
DEh get physical record locks by file
DFh get logical records by connection
E0h get logical record information
E1h get connection's semaphores
E2h get semaphore information
E3h get LAN driver's configuration information
E5h get connection's usage statistics
E6h get object's remaining disk space
E7h get server LAN I/O statistics
E8h get server miscellaneous information
E9h get volume information
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - SET FILE ATTRIBUTES (FCB)
AH = E4h
CL = file attributes
bit 0: read only
1: hidden
2: system
7: shareable
DX:DX -> FCB
Return: AL = error code
---------------------------------------------
INT 21 - DoubleDos - INSTALLATION CHECK
AX = E400h
Return: AL <> 0 if DoubleDos is active
---------------------------------------------
INT 21 - Novell NetWare 4.0 - UPDATE FILE SIZE (FCB)
AH = E5h
DS:DX -> FCB
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - COPY FILE TO FILE (FCB)
AH = E6h
CX:DX = number of bytes to copy
DS:SI -> source FCB
ES:DI -> destination FCB
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.0 - GET FILE SERVER DATE AND TIME
AH = E7h
DS:DX -> reply buffer
BYTE year - 1900
BYTE month
BYTE day
BYTE hours
BYTE minutes
BYTE seconds
BYTE day of week (0 = Sunday)
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.6 - SET FCB RE-OPEN MODE
AH = E8h
DL = mode
00h no automatic re-open
01h auto re-open
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.6 - SHELL'S "GET BASE STATUS"
AH = E9h
AL = subfunction
00h get directory handle
DX = drive number to check (0 = A:)
Return: AL = network pathbase
AH = base flags
00h drive not currently mapped to a base
01h drive is mapped to a permanent base
02h drive is mapped to a temporary base
03h drive exists locally
---------------------------------------------
INT 21 - Novell NetWare 4.6 - RETURN SHELL VERSION
AH = EAh
AL = subfunction
00h return code in AL
Return: AL = hardware type
00h IBM PC
01h Victor 9000
01h get workstation environment string
ES:DI -> 40-byte buffer
Return: buffer filled with three null-terminated entries:
major operating system
version
hardware type
Return: AH = 0 if DOS
---------------------------------------------
INT 21 - DoubleDos - TURN OFF TASK SWITCHING
AH = EAh
Return: task switching turned off
---------------------------------------------
INT 21 - Novell NetWare 4.6 - LOG FILE
AH = EBh
DS:DX -> ASCIZ filename
if function C6h lock mode 01h:
AL = flags
00h log file only
01h lock as well as log file
BP = timeout in timer ticks (1/18 second)
Return: AL = error code
---------------------------------------------
INT 21 - DoubleDos - TURN ON TASK SWITCHING
AH = EBh
Return: task switching turned on
---------------------------------------------
INT 21 - Novell NetWare 4.6 - RELEASE FILE
AH = ECh
DS:DX -> ASCIZ filename
Return: none
---------------------------------------------
INT 21 - DoubleDos - GET VIRTUAL SCREEN ADDRESS
AH = ECh
Return: ES = segment of virtual screen
Note: Screen address can change if task-switching is on!!
---------------------------------------------
INT 21 - Novell NetWare - CLEAR FILE
AH = EDh
DS:DX -> ASCIZ filename
Return: AL = error code
---------------------------------------------
INT 21 - Novell NetWare 4.6 - GET PHYSICAL STATION NUMBER
AH = EEh
Return: CX:BX:AX = six-byte address
---------------------------------------------
INT 21 - DoubleDos - GIVE AWAY TIME TO OTHER TASKS
AH = EEh
AL = number of 55ms time slices to give away
Return: returns after giving away time slices
---------------------------------------------
INT 21 - Novell Advanced NetWare 1.0+ - GET DRIVE INFO
AH = EFh
AL = subfunction
00h get drive handle table
01h get drive flag table
02h get drive connection ID table
03h get connection ID table
04h get file server name table
Return: ES:DI -> shell status table
---------------------------------------------
INT 21 - Novell Advanced NetWare 1.0+ - CONNECTION ID
AH = F0h
AL = subfunction
00h set preferred connection ID
01h get preferred connection ID
02h get default connection ID
03h LPT capture active
04h set primary connection ID
05h get primary connection ID
DL = preferred file server
Return: AL = selected file server
---------------------------------------------
INT 21 - Novell Advanced NetWare 1.0+ - FILE SERVER CONNECTION
AH = F1h
AL = subfunction
00h attach to file server
DL = preferred file server
01h detach from file server
02h logout from file server
Return: AL = completion code
---------------------------------------------
INT 21 - Novell NetWare - ???
AH = F2h
???
Return: ???
---------------------------------------------
INT 21 - Novell Advanced NetWare 2.0+ - FILE SERVER FILE COPY
AH = F3h
ES:DI -> request string
WORD source file handle
WORD destination file handle
DWORD starting offset in source
DWORD starting offset in destination
DWORD number of bytes to copy
Return: AL = status/error code
CX:DX = number of bytes copied
---------------------------------------------
INT 21 - CED - INSTALLABLE COMMANDS
AH = FFh
AL = 0 add installable command
BL = mode - bit 0 = 1 callable from DOS prompt
bit 1 = 1 callable from application
DS:SI -> CR-terminated command name
ES:DI -> FAR routine entry point
AL = 1 remove installable command
DS:SI -> CR-terminated command name
AL = 2 reserved, may be used to test for CED installation
Return: CF set on error
AX = 01h invalid function
02h command not found (subfunction 1 only)
08h insufficient memory (subfunction 0 only)
0Eh bad data (subfunction 0 only)
AH = 0FFh if CED not installed
---------------------------------------------
INT 22 - DOS - TERMINATE ADDRESS
FAR (DWORD) address of routine to be executed when program "returns to DOS".
Should NEVER be called directly.
---------------------------------------------
INT 23 - DOS - CONTROL "C" EXIT ADDRESS
Automatically called from keyboard scanner when CTRL-C or CTRL-BREAK is
detected. Normally aborts program and returns to DOS, but may be changed.
---------------------------------------------
INT 24 - DOS - FATAL ERROR HANDLER ADDRESS
Automatically called upon detection of unrecoverable I/O error.
Normally points to routine in resident part of COMMAND.COM that prints
"Abort, Retry, Ignore?" message and takes the reply, but may be overridden
if desired.
Provides the following values in registers on entry to interrupt handler:
AH: bit 7 = 0 disk I/O error
= 1 other error -- if block device, bad FAT
-- if char device, code in DI
bit 6 unused
bit 5 = 1 if Ignore allowed, 0 if not (DOS 3.x)
bit 4 = 1 if Retry allowed, 0 if not (DOS 3.x)
bit 3 = 1 if Fail allowed, 0 if not (DOS 3.x)
bit 2 \ disk area of error 00 = DOS area 01 = FAT
bit 1 / 10 = root dir 11 = data area
bit 0 = 1 if write, 0 if read
AL = drive number if AH bit 7 = 1, otherwise undefined
BP:SI = address of device header for which error occurred
block device if high bit of BP:[SI+4] set
low byte of DI:
00h write-protect error
01h unknown unit
02h drive not ready
03h unknown command
04h data error (bad CRC)
05h bad request structure length
06h seek error
07h unknown media type
08h sector not found
09h printer out of paper
0Ah write fault
0Bh read fault
0Ch general failure
0Dh (DOS 3.x) sharing violation
0Eh (DOS 3.x) lock violation
0Fh (DOS 3.x) invalid disk change
10h (DOS 3.x) FCB unavailable
11h (DOS 3.x) sharing buffer overflow
Handler must return
AL = 00 ignore error
= 01 retry operation
= 02 terminate program through INT 22h
= 03 fail system call in progress (DOS 3.x)
---------------------------------------------
INT 25 - DOS - ABSOLUTE DISK READ (except DOS 4.0/COMPAQ DOS 3.31 >32M partitn)
AL = Drive number (0=A, 1=B, etc)
DS:BX = Disk Transfer Address (buffer)
CX = Number of sectors to read
DX = First relative sector to read
Return: CF set on error
AL = error code issued to INT 24h in low half of DI
AH = 80h if attachment failed to respond
40h if seek operation failed
20h if controller failed
10h if data error (bad CRC)
08h if DMA failure
04h if requested sector not found
03h if write-protected disk
02h if bad address mark
01h if bad command
Note: ORIGINAL FLAGS ON STACK! May destroy all registers except segment regs
---------------------------------------------
INT 25 - DOS 4.0/COMPAQ DOS 3.31 - ABSOLUTE DISK READ (>32M hard-disk partitn)
AL = Drive number (0=A, 1=B, etc)
CX = FFFFh
DS:BX = Packet address
DWORD sector number
WORD number of sectors to read
DWORD transfer address
Return: same as above???
Note: partition is potentially >32M (and requires this form of the call) if
bit 1 of device attribute word in device driver is set
---------------------------------------------
INT 26 - DOS - ABSOLUTE DISK WRITE (except DOS 4.0/COMPAQ DOS 3.31 >32M partn)
AL = Drive number (0=A, 1=B, etc)
DS:BX = Disk Transfer Address (buffer)
CX = Number of sectors to write
DX = First relative sector to write
Return: CF set on error
AL = error code issued to INT 24h in low half of DI
AH = same error codes as for INT 25h
Note: ORIGINAL FLAGS ON STACK!
---------------------------------------------
INT 26 - DOS 4.0/COMPAQ DOS 3.31 - ABSOLUTE DISK WRITE (>32M hard-disk partitn)
AL = Drive number (0=A, 1=B, etc)
CX = FFFFh
DS:BX = Packet address
DWORD sector number
WORD number of sectors to write
DWORD transfer address
Return: same as above???
Note: partition is potentially >32M (and requires this form of the call) if
bit 1 of device attribute word in device driver is set
---------------------------------------------
INT 27 - DOS - TERMINATE BUT STAY RESIDENT
CS = current program segment
DX = last program byte + 1
Return: never
---------------------------------------------
INT 28 - DOS 2+ internal - KEYBOARD BUSY LOOP
This interrupt is called from inside the "get input from keyboard" routine
in DOS, if and only if it is safe to use INT 21 to access the disk at that
time. It is used primarily by the PRINT.COM routines and TSR programs, but
any number of other routines could be chained to it by saving the original
vector, and calling it with a FAR call (or just JMPing to it) at the end of
the new routine.
The INT 28h handler may invoke any INT 21h function except functions 00h
through 0Ch (and 50h/51h under DOS 2.xx unless DOS CritErr flag is set).
Until some program installs its own routine, this interrupt vector simply
points to an IRET opcode.
---------------------------------------------
INT 29 - DOS 2+ internal - FAST PUTCHAR
This interrupt is called from the DOS output routines if output is going to
a device rather than a file, and the device driver's attribute word has
bit 3 (04h) set to "1".
---------------------------------------------
INT 2A - Microsoft Networks - NETWORK INSTALLATION CHECK
AH = 00h
Return: AH <> 0 if installed
---------------------------------------------
INT 2A - Microsoft Networks - CHECK DIRECT I/O
AX = 0300h
DS:SI -> ASCIZ disk device name
Return: CF clear if allowed
---------------------------------------------
INT 2A - Microsoft Networks - EXECUTE NETBIOS
AH = 04h
AL = 0 for error retry, 1 for no retry
ES:BX -> NCB
Return: AX = 0 for no error
AH = 1, AL = error code
---------------------------------------------
INT 2A - Microsoft Networks - GET NETWORK RESOURCE INFORMATION
AX = 0500h
Return: AX = reserved
BX = number of network names
CX = number of commands
DX = number of sessions
---------------------------------------------
INT 2A - NETBIOS 1.10 - NETWORK PRINT-STREAM CONTROL
AH = 06h
???
Return: ???
---------------------------------------------
INT 2A - ???
AX = 2001h
???
Return: ???
Note: intercepted by DESQview 2.x
---------------------------------------------
INT 2A - Microsoft Networks - BEGIN DOS CRITICAL SECTION
AH = 80h
AL = 1 to 6
---------------------------------------------
INT 2A - Microsoft Networks - END DOS CRITICAL SECTION
AH = 81h
AL = 1 to 6
---------------------------------------------
INT 2A - Microsoft Networks - SERVER HOOK
AH = 82h
STACK: AX from call to INT 21
Return: stack unchanged
Note: called by the INT 21h function dispatcher for function 0 and functions
greater than 0Ch except 59h
---------------------------------------------
INT 2A - Microsoft Networks - KEYBOARD BUSY LOOP
AH = 84h
Note: similar to DOS's INT 28h
---------------------------------------------
INT 2B - Internal routine for MSDOS (IRET)
---------------------------------------------
INT 2C - Internal routine for MSDOS (IRET)
---------------------------------------------
INT 2D - Internal routine for MSDOS (IRET)
---------------------------------------------
INT 2E - DOS 2+ internal - EXECUTE COMMAND
DS:SI -> counted CR-terminated command string
The top-level command.com executes the command; all registers are destroyed
as in EXEC (INT 21/AH=4Bh).
---------------------------------------------
INT 2F - notes
AH identifies which program is to handle the interrupt
00h-7Fh reserved for DOS
C0h-FFh reserved for applications
AL is the function code
This is a general mechanism for verifying the presence of a TSR and
communicating with it.
---------------------------------------------
INT 2F - BMB Compuscience Canada Utilities Interface
AH = xx (dynamically assigned based upon a search for a multiplex
number which doesn't answer installed)
AL = 00h install check
ES:DI = EBEB:BEBE
Return: AL = 00h - not installed
01h - not installed, no ok to install
FFh - installed and is ES:DI=EBEB:BEBE then ES:DI will point
to a string 'BMB xxxx' where xxxx is a product name and
version
---------------------------------------------
INT 2F - Multiplexor - PRINT - INSTALLATION CHECK
AX = 0100h
Return: AL =
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
---------------------------------------------
INT 2F - Multiplexor - PRINT - SUBMIT FILE
AX = 0101h
DS:DX -> packet
BYTE level (must be 0)
DWORD pointer to ASCIZ filename (no wildcards)
Return: CF set on error
AX = error code
---------------------------------------------
INT 2F - Multiplexor - PRINT - REMOVE FILE
AX = 0102h
DS:DX -> ASCIZ file name (wildcards allowed)
Return: CF set on error
AX = error code
---------------------------------------------
INT 2F - Multiplexor - PRINT - REMOVE ALL FILES
AX = 0103h
Return: CF set on error
AX = error code
---------------------------------------------
INT 2F - Multiplexor - PRINT - HOLD QUEUE/GET STATUS
AX = 0104h
Return: CF set on error
AX = error code
01h function invalid
02h file not found
03h path not found
04h too many open files
05h access denied
08h queue full
09h spooler busy
0Ch name too long
0Fh drive invalid
DX = error count
DS:SI -> print queue (null-string terminated
list of 64-byte ASCIZ file names)
---------------------------------------------
INT 2F - Multiplexor - PRINT - RESTART QUEUE
AX = 0105h
Return: CF set on error
AX = error code
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x CRITICAL ERROR HANDLER - INSTALLATION CHECK
AX = 0500h
Return: AL = 00h not installed, OK to install
01h not installed, can't install
FFh installed
Note: this set of functions allows a user program to partially or completely
override the default critical error handler in COMMAND.COM
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x CRITICAL ERROR HANDLER - HANDLE ERROR
AH = 05h
AL = extended error code (not zero)
Return: CF clear
ES:DI -> ASCIZ error message
AL = ???
CF set: use default error handler
---------------------------------------------
INT 2F - Multiplexor - ASSIGN - INSTALLATION CHECK
AX = 0600h
Return: AH <> 0 if installed
---------------------------------------------
INT 2F - Multiplexor - ASSIGN - GET MEMORY SEGMENT
AX = 0601h
Return: ES = segment of ASSIGN work area
---------------------------------------------
INT 2F - Multiplexor - DRIVER.SYS - INSTALLATION CHECK
AX = 0800h
Return: AL = 00h not installed, OK to install
01h not installed, not OK to install
FFh installed
---------------------------------------------
INT 2F - Multiplexor - DRIVER.SYS - ???
AX = 0801h
DS:DI -> ???
Note: moves down list of drivers???, copying and modifying word at offset 29h
---------------------------------------------
INT 2F - Multiplexor - DRIVER.SYS - SET
AX = 0802h
ES:BX -> ???
Return: nothing
---------------------------------------------
INT 2F - Multiplexor - SHARE - INSTALLATION CHECK
AX = 1000h
Return: AL = 00h not installed, OK to install
01h not installed, not OK to install
FFh installed
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - INSTALLATION CHECK
AX = 1100h
Return: AL = 00h not installed, OK to install
01h not installed, not OK to install
FFh installed
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1101h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1103h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1105h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - CLOSE REMOTE FILE
AX = 1106h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1107h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1108h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1109h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 110Ah
STACK: WORD ???
Return: CF set on error
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 110Bh
STACK: WORD ???
Return: CF set on error???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 110Ch
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 110Eh
STACK: WORD ???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 110Fh
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - RENAME FILE???
AX = 1111h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1113h
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1116h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1117h
STACK: WORD ???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1118h
STACK: WORD ???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1119h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 111Bh
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 111Ch
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 111Dh
DS???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - DO REDIRECTION
AX = 111Eh
STACK: WORD function to execute
Return: CF set on error
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - PRINTER SETUP
AX = 111Fh
STACK: WORD function???
Return: CF set on error???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1120h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1121h
???
Return: CF set on error???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1122h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1123h
???
Return: CF set on error???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1124h
???
Return: ???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1125h
STACK: WORD ???
Return: ???
CF set on error???
---------------------------------------------
INT 2F - Multiplexor - NETWORK REDIRECTOR - ???
AX = 1126h
???
Return: CF set on error???
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - INSTALLATION CHECK
AX = 1200h
Return: AL = FFh (for compatibility with other INT 2F functions)
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - CLOSE FILE???
AX = 1201h
STACK: WORD ???
Return: BX???
CX???
ES:DI -> ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET INTERRUPT ADDRESS
AX = 1202h
STACK: WORD vector number
Return: ES:BX -> interrupt vector
Stack unchanged
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET DOS DATA SEGMENT
AX = 1203h
Return: DS = segment of IBMDOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - NORMALIZE PATH SEPARATOR
AX = 1204h
STACK: WORD character to normalize
Return: AL = normalized character (forward slash turned to backslash)
Stack unchanged
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - OUTPUT CHARACTER
AX = 1205h
STACK: WORD character to output
Return: Stack unchanged
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - INVOKE CRITICAL ERROR
AX = 1206h
Return: AL = 0-3 for Abort, Retry, Ignore, Fail
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - MOVE DISK BUFFER???
AX = 1207h
DS:DI -> disk buffer
Return: buffer moved to end of buffer list
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - DECREMENT WORD
AX = 1208h
ES:DI -> word to decrement
Return: AX = new value of word
word pointed to by ES:DI decremented, skipping zero
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 1209h
DS:DI -> disk buffer???
Return: ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 120Ah
???
Return: ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 120Bh
ES:DI -> system file table entry???
???
Return: AX = ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 120Ch
???
Return: ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET DATE AND TIME
AX = 120Dh
Return: AX = current date in packed format
DX = current time in packed format
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ??? ALL DISK BUFFERS
AX = 120Eh
Return: DS:DI -> first disk buffer
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 120Fh
DS:DI -> ???
Return: DS:DI -> ???
Note: can be called only from within DOS
calls on function 1207h
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - FIND DIRTY BUFFER
AX = 1210h
DS:DI -> first disk buffer
Return: DS:DI -> first disk buffer which has clean flag clear
ZF clear if found, set if not found
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - NORMALIZE ASCIZ FILENAME
AX = 1211h
DS:SI -> ASCIZ filename to normalize
ES:DI -> buffer for normalized filename
Return: destination buffer filled with uppercase filename, with slashes turned
to backslashes
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET LENGTH OF ASCIZ STRING
AX = 1212h
ES:DI -> ASCIZ string
Return: CX = length of string
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - UPPERCASE CHARACTER
AX = 1213h
STACK: WORD character to convert to uppercase
Return: AL = uppercase character
Stack unchanged
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - COMPARE FAR POINTERS
AX = 1214h
DS:SI = first pointer
ES:DI = second pointer
Return: ZF set if pointers are equal, ZF clear if not equal
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 1215h
DS:DI -> disk buffer
STACK: WORD ???
Return: Stack unchanged
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET ADDRESS OF SYSTEM FCB
AX = 1216h
BX = system file table entry number
Return: ES:DI -> system file table entry
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - SET DEFAULT DRIVE ???
AX = 1217h
STACK: WORD drive (0 = A:, 1 = B:, etc)
Return: DS:SI -> drive data block for specified drive
Stack unchanged
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET ???
AX = 1218h
Return: DS:SI -> ???
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 1219h
STACK: WORD drive (0 = default, 1 = A:, etc)
Return: ???
Stack unchanged
Note: can be called only from within DOS
calls function 1217h
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET FILE'S DRIVE
AX = 121Ah
DS:SI -> filename
Return: AL = drive (0 = default, 1 = A:, etc, FFh = invalid)
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - SET ???
AX = 121Bh
CL = ???
Return: AL = ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - CHECKSUM MEMORY
AX = 121Ch
DS:SI -> start of memory to checksum
CX = number of bytes
DX = initial checksum
Return: DX = checksum
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 121Dh
DS:SI -> ???
CX = ???
DX = ???
Return: AX = ???
CX = ???
DX = ???
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - COMPARE FILENAMES
AX = 121Eh
DS:SI -> first ASCIZ filename
ES:DI -> second ASCIZ filename
Return: ZF set if filenames equivalent, ZF clear if not
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - BUILD DRIVE INFO BLOCK
AX = 121Fh
STACK: WORD drive letter
Return: ES:DI -> drive info block (will be overwritten by next call)
Stack unchanged
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET SYSTEM FILE TABLE NUMBER
AX = 1220h
BX = file handle
Return: CF set on error
AL = 6 (invalid file handle)
CF clear if successful
BYTE ES:[DI] = system file table entry number for file handle
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 1221h
DS:SI -> ???
Return: ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - ???
AX = 1222h
SS:SI -> ???
Return: nothing???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - CHECK IF CHARACTER DEVICE???
AX = 1223h
???
Return: DS:SI -> device driver with same name as ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - DELAY
AX = 1224h
Return: after delay of ??? ms
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.x internal services - GET LENGTH OF ASCIZ STRING
AX = 1225h
DS:SI -> ASCIZ string
Return: CX = length of string
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 internal services - ???
AX = 1226h
CL = ???
Return: ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 internal services - ???
AX = 1227h
BX = file handle
Return: AL = 6 invalid file handle
???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 internal services - ???
AX = 1228h
BP = ???
Return: ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 internal services - ???
AX = 1229h
???
Return: ???
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 internal services - SET ???
AX = 122Ah
DS:SI -> FAR procedure for ???
Return: CF set if pointer already set
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 internal services - ???
AX = 122Bh
DS:SI -> ???
STACK: WORD ???
Return: ???
STACK unchanged
Note: can be called only from within DOS
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 internal services - ???
AX = 122Ch
Return: BX:AX -> header of second device driver (NUL is first) in driver chain
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 internal services - ???
AX = 122Dh
Return: AX = ??? (value of some flag or counter)
---------------------------------------------
INT 2F - Multiplexor - DOS 3.3 - ???
AH = 13h
DS:DX -> ???
ES:BX -> ???
Return: DS:DX from previous invocation of this function
ES:BX from previous invocation of this function
---------------------------------------------
INT 2F - Multiplexor - NLSFUNC.COM - INSTALLATION CHECK
AX = 1400h
Return: AL = 00h not installed, OK to install
01h not installed, not OK
FFh installed
---------------------------------------------
INT 2F - Multiplexor - CDROM - INSTALLATION CHECK
AX = 1500h
BX = 0
Return: BX = number of CDROM drive letters used
CX = strating drive letter (0=A:)
Note: this installation check DOES NOT follow the format used by other software
---------------------------------------------
INT 2F - Multiplexor - CDROM - GET DRIVE DEVICE LIST
AX = 1501h
ES:BX -> bufer to hold drive letter list (5 bytes per drive letter)
Return: buffer filled, for each drive letter
BYTE subunit number in driver
DWORD address of device driver header
---------------------------------------------
INT 2F - Multiplexor - CDROM - GET COPYRIGHT FILE NAME
AX = 1502h
ES:BX -> 38-byte buffer for name of copyright file
CX = drive number (0=A:)
Return: CF set if drive is not a CDROM drive
AX = 15 (invalid drive)
---------------------------------------------
INT 2F - Multiplexor - CDROM - GET ABSTRACT FILE NAME
AX = 1503h
ES:BX -> 38-byte buffer for name of abstract file
CX = drive number (0=A:)
Return: CF set if drive is not a CDROM drive
AX = 15 (invalid drive)
---------------------------------------------
INT 2F - Multiplexor - CDROM - GET BIBLIOGRAPHIC DOC FILE NAME
AX = 1504h
ES:BX -> 38-byte buffer for name of bibliographic documentation file
CX = drive number (0=A:)
Return: CF set if drive is not a CDROM drive
AX = 15 (invalid drive)
---------------------------------------------
INT 2F - Multiplexor - CDROM - READ VTOC
AX = 1505h
ES:BX -> 2048-byte buffer
CX = drive number (0=A:)
DX = sector index (0=first volume descriptor,1=second,...)
Return: CF set on error
AX = error code (15=invalid drive,21=not ready)
CF clear if successful
AX = volume descriptor type (1=standard,FFh=terminator,0=other)
---------------------------------------------
INT 2F - Multiplexor - CDROM - TURN DEBUGGING ON
AX = 1506h
BX = debugging function to enable
Note: reserved for development
---------------------------------------------
INT 2F - Multiplexor - CDROM - TURN DEBUGGING OFF
AX = 1507h
BX = debugging function to disable
Note: reserved for development
---------------------------------------------
INT 2F - Multiplexor - CDROM - ABSOLUTE DISK READ
AX = 1508h
ES:BX -> buffer
CX = drive number (0=A:)
SI:DI = starting sector number
DX = number of sectors to read
Return: CF set on error
AL = error code (15=invalid drive,21=not ready)
---------------------------------------------
INT 2F - Multiplexor - CDROM - ABSOLUTE DISK WRITE
AX = 1509h
ES:BX -> buffer
CX = drive number (0=A:)
SI:DI = starting sector number
DX = number of sectors to write
Note: corresponds to INT 26h and is currently reserved and nonfunctional
---------------------------------------------
INT 2F - Multiplexor - CDROM - RESERVED
AX = 150Ah
---------------------------------------------
INT 2F - Multiplexor - CDROM 2.00 - DRIVE CHECK
AX = 150Bh
CX = drive number (0=A:)
Return: BX = ADADh if MSCDEX.EXE installed
AX = 0 if drive not supported
<> 0 if supported
---------------------------------------------
INT 2F - Multiplexor - CDROM 2.00 - GET MSCDEX.EXE VERSION
AX = 150Ch
Return: BH = major version
BL = minor version
Note: MSCDEX.EXE versions prior to 1.02 return BX=0
---------------------------------------------
INT 2F - Multiplexor - CDROM 2.00 - GET CDROM DRIVE LETTERS
AX = 150Dh
ES:BX -> buffer for drive letter list (1 byte per drive)
Return: buffer filled with drive numbers (0=A:). Each byte corresponds
to the drive in the same position for function 1501h
---------------------------------------------
INT 2F - Multiplexor - CDROM 2.00 - GET/SET VOLUME DESCRIPTOR PREFERENCE
AX = 150Eh
BX = subfunction
00h get preference
DX = 0
Return: DX = preference settings
01h set preference
DH = volume descriptor preference
1 = primary volume descriptor
2 = supplementary volume descriptor
DL = supplementary volume descriptor preference
1 = shift-Kanji
CX = drive number (0=A:)
Return: CF set on error
AX = error code (15=invalid drive,1=invalid function)
--