ralf@b.gp.cs.cmu.edu (Ralf Brown) (09/18/88)
BH = 0WF00000 W = auto commit on write F = return error rather than doing INT 24h CX = create attribute DL = action if file exists/does not exists bits 7-4 action if file does not exist 0000 fail 0001 create bits 3-0 action if file exists 0000 fail 0001 open 0010 replace/open DH = 0 DS:SI -> ASCIZ file name Return: CF set on error AX = error code CF clear if successful AX = file handle CX = 1 file opened 2 file created 3 file replaced ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = B6h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = B8h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = BBh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = BCh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = BDh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = BEh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = BFh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C0h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C1h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C2h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C3h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C4h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C5h AL = subfunction 00h-04h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C6h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C7h AL = subfunction 00h-04h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C8h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = C9h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = CAh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = CBh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = CCh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = CDh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = CEh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = CFh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = D0h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = D1h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = D2h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = D3h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = D4h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = D5h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = D6h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = D7h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = DAh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = DBh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - GET STATION NUMBER AH = DCh Return: AL = station number 0 if NetWare not loaded or this machine is a non-dedicated server ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = DDh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - SET BROADCAST MODE AH = DEh ??? Return: ??? = old broadcast mode ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = DFh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = E0h AL = subfunction 00h-06h ??? 09h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - BROADCAST MESSAGES AH = E1h AL = subfunction 00h send broadcast message 01h get broadcase message 02h-09h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = E2h AL = subfunction 00h-06h ??? 0Ah-19h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - CONNECTION CONTROL AH = E3h AL = subfunction 00h-14h ??? 15h get object connection numbers 16h get connection information 32h-47h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = E4h ??? Return: ??? ------------------------------------------------------ INT 21 - DoubleDos - INSTALLATION CHECK AX = E400h Return: AL <> 0 if DoubleDos is active ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = E5h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = E6h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = E7h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = E8h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = E9h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = EAh ??? Return: ??? ------------------------------------------------------ INT 21 - DoubleDos - TURN OFF TASK SWITCHING AH = EAh Return: task switching turned off ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = EBh ??? Return: ??? ------------------------------------------------------ INT 21 - DoubleDos - TURN ON TASK SWITCHING AH = EBh Return: task switching turned on ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = ECh ??? Return: ??? ------------------------------------------------------ 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 - ??? AH = EDh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - GET NODE ADDRESS 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 NetWare - ??? AH = EFh ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = F0h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = F1h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = F2h ??? Return: ??? ------------------------------------------------------ INT 21 - Novell NetWare - ??? AH = F3h ??? Return: ??? ------------------------------------------------------ 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 = 1 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 = 1 if 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! ------------------------------------------------------ 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 = 1 if 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 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 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 == 0 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.0 ------------------------------------------------------ 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 ??? Return: ??? 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 ------------------------------------------------------ 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 DWORD pointer to ASCIZ filename (no wildcards) Return: CF = 1 if error AX = error code ------------------------------------------------------ INT 2F - Multiplexor - PRINT - REMOVE FILE AX = 0102h DS:DX -> file name (wildcards allowed) Return: CF = 1 if error AX = error code ------------------------------------------------------ INT 2F - Multiplexor - PRINT - REMOVE ALL FILES AX = 0103h Return: CF = 1 if error AX = error code ------------------------------------------------------ INT 2F - Multiplexor - PRINT - HOLD QUEUE/GET STATUS AX = 0104h Return: CF = 1 if 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 = 1 if 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 - 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/CLEAN??? BUFFER AX = 1210h DS:DI -> first disk buffer Return: DS:DI -> first disk buffer which has ??? 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 - XMS - INSTALLATION CHECK AX = 4300h Return: AL = 80h XMS driver installed AL <> 80h no driver Note: XMS gives access to extended memory and noncontiguous/nonEMS memory above 640K ------------------------------------------------------ INT 2F - Multiplexor - XMS - GET DRIVER ADDRESS AX = 4310h Return: ES:BX -> driver entry point Perform a FAR call to the driver entry point with AH set to the function code AH function 00h Get XMS version number Return: AX = XMS version BX = internal revision number DX = 1 if HMA (1M to 1M + 64K) exists 0 if HMA does not exist 01h Request High Memory Area (1M to 1M + 64K) DX = memory in bytes (for TSR or device drivers) FFFFh if application program Return: AX = 1 success = 0 failure BL = error code 02h Release High Memory Area Return: AX = 1 success = 0 failure BL = error code 03h Global enable A20 Return: AX = 1 success = 0 failure BL = error code 04h Global disable A20 Return: AX = 1 success = 0 failure BL = error code 05h Local enable A20 Return: AX = 1 success = 0 failure BL = error code 06h Local disable A20 Return: AX = 1 success = 0 failure BL = error code 07h Query A20 Return: AX = 1 success = 0 failure BL = error code 08h Query free extended memory Return: AX = size of largest extended memory block in K DX = total extended memory in K 09h Allocate extended memory block DX = Kbytes needed Return: AX = 1 success DX = handle for memory block = 0 failure BL = error code 0Ah Free extended memory block DX = handle of block to free Return: AX = 1 success = 0 failure BL = error code 0Bh Move extended memory block DS:SI -> EMM structure DWORD number of bytes to move WORD source handle DWORD offset into source block WORD destination handle DWORD offset into destination block Note: if either handle is 0000h, the corresponding offset is considered to be an absolute Segment:Offset address in directly addressable memory Return: AX = 1 success = 0 failure BL = error code 0Ch Lock extended memory block DX = handle of block to lock Return: AX = 1 success DX:BX = 32-bit linear address of locked block = 0 failure BL = error code 0Dh Unlock extended memory block DX = handle of block to unlock Return: AX = 1 success = 0 failure BL = error code 0Eh Get handle information DX = handle for which to get info Return: AX = 1 success BH = block's lock count BL = number of free handles left DX = block size in K = 0 failure BL = error code 0Fh Reallocate extended memory block DX = handle of block BX = new size of block in K Return: AX = 1 success = 0 failure BL = error code 10h Request upper memory block (nonEMS memory above 640K) DX = size of block in paragraphs Return: AX = 1 success BX = segment address of UMB DX = actual size of block = 0 failure BL = error code DX = largest available block 11h Release upper memory block DX = segment address of UMB to release Return: AX = 1 success = 0 failure BL = error code Error codes returned in BL: 80h Function not implemented 81h Vdisk was detected 82h An A20 error occurred 8Eh a general driver error 8Fh unrecoverable driver error 90h HMA does not exist 91h HMA is already in use 92h DX is less than the /HMAMIN= parameter 93h HMA is not allocated A0h all extended memory is allocated A1h all available extended memory handles are allocated A2h Invalid handle A3h Source handle is invalid A4h Source offset is invalid A5h Destination handle is invalid A6h Destination offset is invalid A7h Length is invalid A8h Move has an invalid overlap A9h Parity error occurred AAh Block is not locked ABh Block is locked ACh Block lock count overflowed ADh Lock failed B0h Only a smaller UMB is available B1h No UMB's are available B2h UMB segment number is invalid ------------------------------------------------------ INT 2F - Multiplexor - SCRNSAV2.COM - INSTALLATION CHECK AX = 6400h Return: AL = 00h not installed FFh installed Note: SCRNSAV2.COM is a screen saver for PS/2's with VGA by Alan Ballard ------------------------------------------------------ INT 2F - Multiplexor - Novell NetWare - INSTALLATION CHECK AX = 7A00h Return: ??? Note: returns address of entry point for IPX and SPX ------------------------------------------------------ INT 2F - Multiplexor - VIDCLOCK.COM - INSTALLATION CHECK AX = AA00h Return: AL = 00h not installed FFh installed Note: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III ------------------------------------------------------ INT 2F - Multiplexor - APPEND - INSTALLATION CHECK AX = B700h Return: AH <> 0 if installed ------------------------------------------------------ INT 2F - Multiplexor - APPEND - ??? AX = B701h ??? ------------------------------------------------------ INT 2F - Multiplexor - APPEND - VERSION CHECK AX = B702h ??? Return: ??? ------------------------------------------------------ INT 2F - Multiplexor - Network - INSTALLATION CHECK AX = B800h Return: AH = 0 not installed <> 0 installed BX = installed component flags (test in this order!) bit 6 server bit 2 messenger bit 7 receiver bit 3 redirector ------------------------------------------------------ INT 2F - Multiplexor - Network - GET CURRENT POST ADDRESS AX = B803h Return: ES:BX = post address ------------------------------------------------------ INT 2F - Multiplexor - Network - SET NEW POST ADDRESS AX = B804h ES:BX = new post address ------------------------------------------------------ INT 2F - Multiplexor - Network - VERSION CHECK AX = B809h ??? Return: ??? ------------------------------------------------------ INT 2F - Multiplexor - AUTOPARK.COM - INSTALLATION CHECK AX = F700h Return: AL = 00h not installed FFh installed Note: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones ------------------------------------------------------ INT 2F - Multiplexor - AUTOPARK.COM - SET PARKING DELAY AX = F701h BX:CX = 32 bit count of 55ms timer ticks ------------------------------------------------------ INT 30 - (NOT A VECTOR!) FAR JuMP instruction for CP/M-style calls INT 31 the CALL 5 entry point does a FAR jump to here ------------------------------------------------------ INT 32 - not used ------------------------------------------------------ INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS AX = 0000h Return: AX = status 0 hardware/driver not installed -1 hardware/driver installed BX = number of buttons -1 two buttons 0 other than two 3 Mouse Systems mouse ------------------------------------------------------ INT 33 - MS MOUSE - SHOW MOUSE CURSOR AX = 0001h ------------------------------------------------------ INT 33 - MS MOUSE - HIDE MOUSE CURSOR AX = 0002h Note: multiple calls to hide the cursor will require multiple calls to function 01h to unhide it. ------------------------------------------------------ INT 33 - MS MOUSE - RETURN POSITION AND BUTTON STATUS AX = 0003h Return: BX = button status bit 0 left button pressed if 1 bit 1 right button pressed if 1 bit 2 middle button pressed if 1 (Mouse Systems mouse) CX = column DX = row ------------------------------------------------------ INT 33 - MS MOUSE - POSITION MOUSE CURSOR AX = 0004h CX = column DX = row ------------------------------------------------------ INT 33 - MS MOUSE - RETURN BUTTON PRESS DATA AX = 0005h BX = button 0 left 1 right 2 middle (Mouse Systems mouse) Return: AX = button states bit 0 left button pressed if 1 bit 1 right button pressed if 1 bit 2 middle button pressed if 1 (Mouse Systems mouse) BX = number of times specified button has been pressed since last call CX = column at time specified button was last pressed DX = row at time specified button was last pressed ------------------------------------------------------ INT 33 - MS MOUSE - RETURN BUTTON RELEASE DATA AX = 0006h BX = button 0 left 1 right 2 middle (Mouse Systems mouse) Return: AX = button states bit 0 left button pressed if 1 bit 1 right button pressed if 1 bit 2 middle button pressed if 1 (Mouse Systems mouse) BX = number of times specified button has been released since last call CX = column at time specified button was last released DX = row at time specified button was last released ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE HORIZONTAL CURSOR RANGE AX = 0007h CX = minimum column DX = maximum column ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE VERTICAL CURSOR RANGE AX = 0008h CX = minimum row DX = maximum row ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE GRAPHICS CURSOR AX = 0009h BX = column of cursor hot spot in bitmap (-16 to 16) CX = row of cursor hot spot (-16 to 16) ES:DX -> bitmap 16 words screen mask 16 words cursor mask each word defines the sixteen pixels of a row, low bit rightmost ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE TEXT CURSOR AX = 000Ah BX = hardware/software text cursor 0 software CX = screen mask DX = cursor mask 1 hardware CX = start scan line DX = end scan line Note: when the software cursor is selected, the char/attribute data at the current screen position is ANDed with the screen mask and then XORed with the cursor mask ------------------------------------------------------ INT 33 - MS MOUSE - READ MOTION COUNTERS AX = 000Bh Return: CX = number of mickeys mouse moved horizontally since last call DX = number of mickeys mouse moved vertically Notes: a mickey is the smallest increment the mouse can sense positive values indicate up/right ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE INTERRUPT SUBROUTINE PARAMETERS AX = 000Ch CX = call mask bit 0 call if mouse moves bit 1 call if left button pressed bit 2 call if left button released bit 3 call if right button pressed bit 4 call if right button released bit 5 call if middle button pressed (Mouse Systems mouse) bit 6 call if middle button released (Mouse Systems mouse) ES:DX = address of FAR routine Note: when the subroutine is called, it is passed the following values: AX = condition mask (same bit assignments as call mask) BX = button state CX = cursor column DX = cursor row DI = horizontal mickey count SI = vertical mickey count ------------------------------------------------------ INT 33 - MS MOUSE - LIGHT PEN EMULATION ON AX = 000Dh ------------------------------------------------------ INT 33 - MS MOUSE - LIGHT PEN EMULATION OFF AX = 000Eh ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE MICKEY/PIXEL RATIO AX = 000Fh CX = number of mickeys per 8 pixels horizontally DX = number of mickeys per 8 pixels vertically ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE SCREEN REGION FOR UPDATING AX = 0010h CX,DX = X,Y coordinates of upper left corner SI,DI = X,Y coordinates of lower right corner Note: mouse cursor is hidden during updating, and needs to be explicitly turned on again ------------------------------------------------------ INT 33 - PCMOUSE - SET LARGE GRAPHICS CURSOR BLOCK AX = 0012h BH = cursor width in words CH = rows in cursor BL = horizontal hot spot (-16 to 16) CL = vertical hot spot (-16 to 16) ES:DX -> bit map of screen and cursor maps Return: AX = -1 if successful ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE DOUBLE-SPEED THRESHOLD AX = 0013h DX = threshold speed in mickeys/second, 0 = default of 64/second Note: if speed exceeds threshold, the cursor's on-screen motion is doubled ------------------------------------------------------ INT 33 - MS MOUSE - EXCHANGE INTERRUPT SUBROUTINES AX = 0014h ??? ------------------------------------------------------ INT 33 - MS MOUSE - RETURN DRIVER STORAGE REQUIREMENTS AX = 0015h Return: BX = size of buffer needed to store driver state ------------------------------------------------------ INT 33 - MS MOUSE - SAVE DRIVER STATE AX = 0016h ES:DX -> buffer for driver state ------------------------------------------------------ INT 33 - MS MOUSE - RESTORE DRIVER STATE AX = 0017h ES:DX -> buffer containing saved state ------------------------------------------------------ INT 33 - MS MOUSE - DEFINE DISPLAY PAGE NUMBER AX = 001Dh ??? ------------------------------------------------------ INT 33 - MS MOUSE - RETURN DISPLAY PAGE NUMBER AX = 001Eh Return: ??? ------------------------------------------------------ INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS AX = 0042h Return: AX = FFFFh successful BX = buffer size in bytes for functions 50h and 52h = 0 MSMOUSE not installed = 42h functions 42h, 50h, and 52h not supported ------------------------------------------------------ INT 33 - PCMOUSE - SAVE MSMOUSE STATE AX = 0050h BX = buffer size ES:DX -> buffer Return: AX = FFFFh if successful ------------------------------------------------------ INT 33 - PCMOUSE - RESTORE MSMOUSE STATE AX = 0052h BX = buffer size ES:DX -> buffer Return: AX = FFFFh if successful ------------------------------------------------------ INT 34 - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates opcode D8h ------------------------------------------------------ INT 35 - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates opcode D9h ------------------------------------------------------ INT 36 - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates opcode DAh ------------------------------------------------------ INT 37 - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates opcode DBh ------------------------------------------------------ INT 38 - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates opcode DCh ------------------------------------------------------ INT 39 - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates opcode DDh ------------------------------------------------------ INT 3A - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates opcode DEh ------------------------------------------------------ INT 3B - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates opcode DFh ------------------------------------------------------ INT 3C - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates instructions with an ES segment override ------------------------------------------------------ INT 3D - Turbo C/Microsoft languages - Floating Point emulation This interrupt emulates a standalone FWAIT instruction ------------------------------------------------------ INT 3E - Turbo C/Microsoft languages - Floating Point emulation ------------------------------------------------------ INT 3F - Overlay manager interrupt (Microsoft LINK.EXE) ------------------------------------------------------ INT 40 - Hard disk - Relocated Floppy Handler (original INT 13h) ------------------------------------------------------ INT 41 - FIXED DISK PARAMETERS (XT,AT,XT2,XT286,PS except ESDI disks) WORD cylinders BYTE heads WORD starting reduced write current cylinder (XT only, 0 for others) WORD starting write pre-comp cylinder BYTE maximum ECC burst length BYTE control byte bits 0-2: drive option (XT only, 0 for others) bit 3: set if more than 8 heads bit 4: always 0 bit 5: set if manufacturer's defect map on max cylinder+1 bit 6: disable ECC retries bit 7: disable access retries BYTE standard timeout (XT only, 0 for others) BYTE formatting timeout (XT only, 0 for others) BYTE timeout for checking drive (XT only, 0 for others) WORD landing zone (AT/PS2) BYTE sectors/track (AT/PS2) BYTE 0 ------------------------------------------------------ INT 42 - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) ------------------------------------------------------ INT 42 - Z100 - ??? ------------------------------------------------------ INT 43 - EGA/VGA/PS - User font table ------------------------------------------------------ INT 44 - EGA/VGA/CONV/PS - EGA/PCjr fonts, characters 00h to 7Fh ------------------------------------------------------ INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API ------------------------------------------------------ INT 44 - Z100 - ??? ------------------------------------------------------ INT 45 - Z100 - ??? ------------------------------------------------------ INT 46 - Secondary Fixed Disk Params (see INT 41h) (AT,XT286,PS except ESDI) ------------------------------------------------------ INT 46 - Z100 - ??? ------------------------------------------------------ INT 47 - reserved ------------------------------------------------------ INT 48 - PCjr - Cordless Keyboard Translation ------------------------------------------------------ INT 49 - PCjr - Non-keyboard Scan Code Translation Table ------------------------------------------------------ INT 4A - AT/CONV/PS - User Alarm Invoked by BIOS when real-time clock alarm occurs ------------------------------------------------------ INT 4B - reserved ------------------------------------------------------ INT 4C - reserved ------------------------------------------------------ INT 4D - reserved ------------------------------------------------------ INT 4E - reserved ------------------------------------------------------ INT 4F - reserved ------------------------------------------------------ INT 50 to 57 - IRQ0-IRQ7 relocated by DESQview ------------------------------------------------------ INT 58 - reserved ------------------------------------------------------ INT 59 - GSS Computer Graphics Interface (GSS*CGI) DS:DX = Pointer to block of 5 array pointers Return: CF = 0 AX = return code CF = 1 AX = error code Note: INT 59 is the means by which GSS*CGI language bindings communicate with GSS*CGI device drivers and the GSS*CGI device driver controller. also used by the IBM Graphic Development Toolkit ------------------------------------------------------ INT 5A - Cluster adapter BIOS entry address ??? ------------------------------------------------------ INT 5B - Used by cluster adapter ------------------------------------------------------ INT 5C - NETBIOS INTERFACE ES:BX -> Network Control Block Return: AL = Error Code (0 if none) struct ncb { unsigned char ncb_command; unsigned char ncb_retcode; unsigned char ncb_lsn; unsigned char ncb_num; char far *ncb_buffer; unsigned short ncb_length; char ncb_callname[16]; char ncb_name[16]; unsigned char ncb_rto; unsigned char ncb_sto; int (far *ncb_post)(); unsigned char ncb_lana_num; unsigned char ncb_cmd_cplt; char ncb_reserve[14]; }; Command codes: #define NCB_NOWAIT 0x80 #define NCB_RESET 0x32 #define NCB_CANCEL 0x35 #define NCB_ADAPTER_STATUS 0x33 #define NCB_UNLINK 0x70 #define NCB_ADD_NAME 0x30 #define NCB_ADD_GROUP_NAME 0x36 #define NCB_DELETE_NAME 0x31 #define NCB_CALL 0x10 #define NCB_LISTEN 0x11 #define NCB_HANG_UP 0x12 #define NCB_SEND 0x14 #define NCB_CHAIN_SEND 0x17 #define NCB_RECEIVE 0x15 #define NCB_RECEIVE_ANY 0x16 #define NCB_SESSION_STATUS 0x34 #define NCB_SEND_DATAGRAM 0x20 #define NCB_SEND_BROADCAST_DATAGRAM 0x22 #define NCB_RECEIVE_DATAGRAM 0x21 #define NCB_RECEIVE_BROADCAST_DATAGRAM 0x23 struct name { char nm_name[16]; unsigned char nm_num; unsigned char nm_status; }; struct astatus { unsigned char as_id[6]; unsigned char as_jumpers; unsigned char as_post; unsigned char as_major; unsigned char as_minor; unsigned short as_interval unsigned short as_crcerr; unsigned short as_algerr; unsigned short as_colerr; unsigned short as_abterr; unsigned long as_tcount; unsigned long as_rcount; -- {harvard,uunet,ucbvax}!b.gp.cs.cmu.edu!ralf -=-=- AT&T: (412)268-3053 (school) ARPA: RALF@B.GP.CS.CMU.EDU |"Tolerance means excusing the mistakes others make. FIDO: Ralf Brown at 129/31 | Tact means not noticing them." --Arthur Schnitzler BITnet: RALF%B.GP.CS.CMU.EDU@CMUCCVMA -=-=- DISCLAIMER? I claimed something?