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) --