[comp.sys.ibm.pc] Interrupt list, part 4 of 8

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?