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

ralf@b.gp.cs.cmu.edu (Ralf Brown) (09/18/88)

	unsigned short as_retran;
	unsigned short as_xresrc;
	char as_res0[8];
	unsigned short as_ncbfree;
	unsigned short as_ncbmax;
	unsigned short as_ncbx;
	char as_res1[4];
	unsigned short as_sespend;
	unsigned short as_msp;
	unsigned short as_sesmax;
	unsigned short as_bufsize;
	unsigned short as_names;
	struct name as_name[16];
};

Note: Sytek PCnet card uses DMA 3.
------------------------------------------------------
INT 5C - TOPS INTERFACE
	ES:BX -> Network Control Block
Note: TOPS card uses DMA 1, 3 or none.
------------------------------------------------------
INT 5D - reserved
------------------------------------------------------
INT 5E - reserved
------------------------------------------------------
INT 5F - reserved
------------------------------------------------------
INT 60 - reserved for user interrupt
------------------------------------------------------
INT 60 - 10-NET - LOCK AND WAIT
	AH = 11h
	AL = drive number or 0
	DX = number of seconds to wait
	ES:SI = Ethernet address or 0
	DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status
	    0 successful
	    1 timeout
	    2 server not responding
	    3 invalid semaphore name
	    4 semaphore list is full
	    5 invalid drive ID
	    6 invalid Ethernet address
	    7 not logged in
	    8 write to network failed
	    9 semaphore already logged for this CPU
------------------------------------------------------
INT 60 - 10-NET - LOCK
	AH = 12h
	AL = drive number or 0
	ES:SI = Ethernet address or 0
	DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see function 11h)
	    1 semaphore currently logged
Note: unlike function 11h, this function returns immediately
------------------------------------------------------
INT 60 - 10-NET - UNLOCK
	AH = 13h
	AL = drive number or 0
	ES:SI = Ethernet address or 0
	DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see function 11h)
	    1 semaphore not logged
------------------------------------------------------
INT 61 - reserved for user interrupt
------------------------------------------------------
INT 62 - reserved for user interrupt
------------------------------------------------------
INT 63 - reserved for user interrupt
------------------------------------------------------
INT 64 - reserved for user interrupt
------------------------------------------------------
INT 65 - reserved for user interrupt
------------------------------------------------------
INT 66 - reserved for user interrupt
------------------------------------------------------
INT 67 - LIM EMS - GET MANAGER STATUS
	AH = 40h
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested by application
Note: this call can be used only after establishing that the EMS driver
      is in fact present
------------------------------------------------------
INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
	AH = 41h
Return: AH = 00h function successful
	    BX = segment of page frame
	AH = error code (see AH=40h above)
------------------------------------------------------
INT 67 - LIM EMS - GET NUMBER OF PAGES
	AH = 42h
Return: AH = 00h function successful
	    BX = number of unallocated pages
	    DX = total number of pages
	AH = error code (see AH=40h above)
------------------------------------------------------
INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
	AH = 43h
	BX = number of logical pages to allocate
Return: AH = status
	    00h function successful
		DX = handle
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
	    85h no more handles available
	    87h more pages requested than physically exist
	    88h more pages requested than currently available
	    89h zero pages requested
------------------------------------------------------
INT 67 - LIM EMS - MAP MEMORY
	AH = 44h
	AL = physical page number (0-3)
	BX = logical page number
	DX = handle
Return: AH = status
	    00h function successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
	    8Ah invalid logical page number
	    8Bh illegal physical-page number
------------------------------------------------------
INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
	AH = 45h
	DX = EMM handle
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
	    86h error in save or restore of mapping context
------------------------------------------------------
INT 67 - LIM EMS - GET EMM VERSION
	AH = 46h
Return: AH = status
	    00h successful
		AL = EMM version number
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS - SAVE MAPPING CONTEXT
	AH = 47h
	DX = handle
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
	    8Ch page-mapping hardware state save area is full
	    8Dh save of mapping context failed
------------------------------------------------------
INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
	AH = 48h
	DX = handle
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
	    8Eh restore of mapping context failed
------------------------------------------------------
INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
	AH = 49h
Note: defined in EMS 3.0, but undocumented in EMS 3.2
------------------------------------------------------
INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
	AH = 4Ah
Note: defined in EMS 3.0, but undocumented in EMS 3.2
------------------------------------------------------
INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
	AH = 4Bh
Return: AH = status
	    00h successful
		BX = number of EMM handles
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
	AH = 4Ch
	DX = EMM handle
Return: AH = status
	    00h successful
		BX = number of logical pages
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
	AH = 4Dh
	ES:DI -> array to receive information
Return: AH = status
	    00h successful
		BX = number of active EMM handles
		array filled with 2-word entries, consisting of a handle
		  and the number of pages allocated to that handle
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS - GET OR SET PAGE MAP
	AH = 4Eh
	AL = 00h if getting mapping registers
	     01h if setting mapping registers
	     02h if getting and setting mapping registers at once
	     03h if getting size of page-mapping array
	DS:SI -> array holding information (AL=01/02)
	ES:DI -> array to receive information (AL=00/02)
Return: AH = status
	    00h successful
		AL = bytes in page-mapping array (subfunction 03h only)
		array pointed to by ES:DI receives mapping info (AL=00/02)
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
	    8Fh undefined subfunction parameter
	    A3h contents of source array corrupted (EMS 4.0?)
Note: this function was designed to be used by multitasking operating systems
      and should not ordinarily be used by appplication software.
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
	AH = 4Fh
	AL = subfunction
	    00h get partial page map
	       DS:SI -> structure containing list of segments whose mapping
			contexts are to be saved
	       ES:DI -> array to receive page map
	    01h set partial page map
	       DS:SI -> structure containing saved partial page map
	    02h get size of partial page map
	       BX = number of mappable segments in the partial map to be saved
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
	    8Bh one of specified segments is not mappable
	    8Fh undefined subfunction parameter
	    A3h contents of partial page map corrupted or count of mappable
		segments exceeds total number of mappable segments in system
	AL = size of partial page map for subfunction 02h
------------------------------------------------------
INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
	AH = 50h
	AL = subfunction
	    00h
	    01h
	DX = handle
	CX = number of entries in array
	DS:SI -> mapping array
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
	    8Ah one or more logical pages are invalid
	    8Bh one or more physical pages are invalid
	    8Fh invalid subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
	AH = 51h
	DX = handle
	BX = number of pages to be allocated to handle
Return: BX = actual number of pages allocated to handle
	AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
	    87h more pages requested than present in system
	    88h more pages requested than currently available
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
	AH = 52h
	AL = subfunction
	    00h get handle attributes
	    01h set handle attributes
	       BL = new attribute (see returned AL)
	    02h get attribute capability
	DX = handle
Return: AL = attribute (for subfunction 00h)
	    00h handle is volatile
	    01h handle is nonvolatile
	AL = attribute capability (for subfunction 02h)
	    00h only volatile handles supported
	    01h both volatile and non-volatile supported
	AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
	    8Fh undefined subfunction
	    90h undefined attribute type
	    91h feature not supported
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
	AH = 53h
	AL = subfunction
	    00h get handle name
	       ES:DI -> 8-byte handle name array
	    01h set handle name
	       DS:SI -> 8-byte handle name
	DX = handle
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h undefined function requested
	    8Fh undefined subfunction
	    A1h duplicate handle name
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
	AH = 54h
	AL = subfunction
	    00h get handle directory
	       ES:DI -> buffer for handle directory
	    01h search for named handle
	       DS:SI -> 8-byte name
	    02h get total number of handles
Return: AL = number of entries in handle directory (subfunction 00h)
	DX = value of named handle (subfunction 01h)
	BX = total number of handles (subfunction 02h)
	AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
	    8Fh undefined subfunction
	    A0h no such handle name
	    A1h a handle found had no name
------------------------------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
	AH = 55h
	AL = subfunction
	    00h physical page numbers provided by caller
	    01h segment addresses provided by caller
	DX = handle
	DS:SI -> structure containing map and jump address
Return: (at target address unless error)
	AH = status
	    00h successful
	    80h internal error
	    81h hardware failure
	    83h invalid handle
	    84h undefined function requested
	    8Ah invalid logical page number encountered
	    8Bh invalid physical page number encountered
	    8Fh invalid subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
	AH = 56h
	AL = subfunction
	    00h physical page numbers provided by caller
	       DX = handle
	       DS:SI -> structure containing page map and call address
	    01h segment addresses provided by caller
	       DX = handle
	       DS:SI -> structure containing page map and call address
	    02h get page map stack space required
Return: (if successful, the target address is called.  Use a RETF to return and
	 restore mapping context)
	BX = stack space required (subfunction 02h)
	AH = status
	    00h successful
	    80h internal error
	    81h hardware failure
	    83h invalid handle
	    84h undefined function requested
	    8Ah invalid logical page number encountered
	    8Bh invalid physical page number encountered
	    8Fh undefined subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
	AH = 57h
	AL = subfunction
	    00h move memory region
	    01h exchange memory region
	DS:SI -> structure describing source and destination
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware failure
	    83h invalid handle
	    84h undefined function requested
	    8Ah invalid logical page number encountered
	    8Fh undefined subfunction
	    92h successful, but a portion of the source region has been
		overwritten
	    93h length of source or destination region exceeds length of region
		allocated to either source or destination handle
	    94h conventional and expanded memory regions overlap
	    95h offset within logical page exceeds size of logical page
	    96h region length exceeds 1M
	    97h source and destination EMS regions have same handle and overlap
	    98h memory source or destination type undefined
	    A2h attempted to wrap around 1M conventional address space
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
	AH = 58h
	AL = subfunction
	    00h get mappable physical address array
	       ES:DI -> buffer to be filled with array
	    01h get number of entries in m.p.a. array
Return: CX = number of entries in array
	AH = status
	    00h successful
	    80h internal error
	    81h hardware failure
	    84h undefined function requested
	    8Fh undefined subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
	AH = 59h
	AL = subfunction
	    00h get hardware configuration array
	       ES:DI -> buffer to be filled with array
	    01h get unallocated raw page count
Return: BX = unallocated raw pages (subfunction 01h)
	DX = total raw pages (subfunction 01h)
	AH = status
	    00h successful
	    80h internal error
	    81h hardware failure
	    84h undefined function requested
	    8Fh undefined subfunction
	    A4h access denied by operating system
Note: subfunction 00h is for use by operating systems only, and can be
      enabled or disabled at any time by the operating system
------------------------------------------------------
INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
	AH = 5Ah
	AL = subfunction
	    00h allocate standard pages
	    01h allocate raw pages
	BX = number of pages to allocate
Return: DX = handle
	AH = status
	    00h successful
	    80h internal error
	    81h hardware failure
	    84h undefined function requested
	    85h no more handles available
	    87h insufficient memory pages in system
	    88h insufficient memory pages available
	    8Fh undefined subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
	AH = 5Bh
	AL = subfunction
	    00h get alternate map register set
	    01h set alternate map register set
	       BL = new alternate map register set number
	       ES:DI -> map register context save area if BL=0
	    02h get alternate map save array size
	    03h allocate alternate map register set
	    04h deallocate alternate map register set
	       BL = number of alternate map register set
Return: BL = current active alternate map register set number if nonzero (AL=0)
	ES:DI -> map register context save area if BL=0 (AL=0)
	DX = array size in bytes (subfunction 02h)
	BL = number of alternate map register set; zero if not supported (AL=3)
	AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
	    8Fh undefined subfunction
	    9Ah specified alternate map register set not supported
	    9Bh all alternate map register sets currently allocated
	    9Ch alternate map register sets not supported
	    9Dh undefined or unallocated alternate map register set
	    A3h source array corrupted
	    A4h operating system denied access
Note: this function is for use by operating systems only, and can be
      enabled or disabled at any time by the operating system
------------------------------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
	AH = 5Bh
	AL = subfunction
	    05h allocate DMA register set
	    06h enable DMA on alternate map register set
	       BL = DMA register set number
	       DL = DMA channel number
	    07h disable DMA on alternate map register set
	       BL = DMA register set number
	    08h deallocate DMA register set
	       BL = DMA register set number
Return: BL = DMA register set number; zero if not supported (subfunction 05h)
	AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
	    8Fh undefined subfunction
	    9Ah specified DMA register set not supported
	    9Bh all DMA register sets currently allocated
	    9Ch alternate DMA sets not supported
	    9Dh undefined or unallocated DMA register set
	    9Eh dedicated DMA channels not supported
	    9Fh specified dedicated DMA channel not supported
	    A3h source array corrupted
	    A4h operating system denied access
Note: this function is for use by operating systems only, and can be
      enabled or disabled at any time by the operating system
------------------------------------------------------
INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
	AH = 5Ch
Return: AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
	AH = 5Dh
	AL = subfunction
	    00h enable OS Function Set
	    01h disable OS Function Set
	    02h return access key (resets memory manager, returns access key at
		next invocation)
	BX,CX = access key returned by first invocation
Return: BX,CX = access key, returned only on first invocation of function
	AH = status
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    84h undefined function requested
	    8Fh undefined subfunction
	    A4h operating system denied access
------------------------------------------------------
INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
	AH = 60h
	ES:DI -> buffer
Return: AH = status
	AL = number of entries
	buffer at ES:DI filled
------------------------------------------------------
INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
	AH = 61h
	???
Return: ???
Note: can be used by accelerator card manufacturer to flush RAM cache, ensuring
      that the cache accurately reflects what the processor would see without
      the cache.
------------------------------------------------------
INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
	AH = 68h
	ES:DI -> buffer
Return: AH = status
	AL = number of entries
	buffer at ES:DI filled
Note: equivalent to LIM 4.0 function 58h
------------------------------------------------------
INT 67 - EEMS - MAP PAGE INTO FRAME
	AH = 69h
	AL = frame number
	BX = page number
	DX = handle
Return: AH = status
Note: similar to EMS function 44h
------------------------------------------------------
INT 67 - EEMS - PAGE MAPPING
	AH = 6Ah
	AL = subfunction
	    00h save partial page map
		CH = first page frame
		CL = number of frames
		ES:DI -> buffer which is to be filled
	    01h restore partial page map
		CH = first page frame
		CL = number of frames
		DI:SI -> previously saved page map
	    02h save and restore partial page map
		CH = first page frame
		CL = number of frames
		ES:DI = buffer for current page map
		DI:SI = new page map
	    03h get size of save array
		CH = first page frame
		CL = number of frames
		Return: AL = size of array in bytes
	    04h switch to standard map register setting
	    05h switch to alternate map register setting
	    06h deallocate pages mapped to frames in conventional memory
		CH = first page frame
		CL = number of frames
Return: AH = status
Note: similar to EMS function 4Eh, except that a subrange of pages can
      be specified
------------------------------------------------------
INT 68 - APPC/PC
	AH = 01h
	DS:DX -> control block
		12 BYTEs reserved
		   WORD  verb (action)
		 6 BYTEs 0
		   DWORD (high byte first) return code
			 0000h	successful
			 0001h	BAD_TP_ID
			 0002h	BAD_CONV_ID
			 0003h	bad logical unit ID
			 0008h	no physical unit attached
			 0110h	bad state
			 01B1h	BAD_PART_LUNAME
			 01B2h	bad mode name
			 0201h	physical unit already active
			 0211h	logical unit already active
			 0212h	BAD_PART_SESS
			 0213h	BAD_RU_SIZES
			 0214h	BAD_MODE_SESS
			 0216h	BAD_PACING_CNT
			 0219h	EXTREME_RUS
			 021Ah	SNASVCMG_1
			 0223h	SSCP_CONNECTED_LU
			 0230h	invalid change
			 0243h	too many TPs
			 0272h	adapter close failure
			 0281h	GET_ALLOC_BAD_TYPE
			 0282h	unsuccessful
			 0283h	DLC failure
			 0284h	unrecognized DLC
			 0286h	duplicate DLC
			 0301h	SSCP_PU_SESSION_NOT_ACTIVE
			 0302h	data exceeds RU size
			 0401h	invalid direction
			 0402h	invalid type
			 0403h	segment overlap
			 0404h	invalid first character
			 0405h	table error
			 0406h	conversion error
		     F0010000h	APPC disabled
		     F0020000h	APPC busy
		     F0030000h	APPC abended
		     F0040000h	incomplete
if verb = 1B00h (DISPLAY), control block continues
	WORD  0
      8 BYTEs (high byte first) logical unit ID
      8 BYTEs (high byte first) partner logical unit name
      8 BYTEs (high byte first) mode name
	BYTE  logical unit session limit
	BYTE  partner logical unit session limit
	BYTE  mode maximum negotiable session limit
	BYTE  current session limit
	BYTE  minimum negotiated winner limit
	BYTE  maximum negotiated loser limit
	BYTE  active session count
	BYTE  active CONWINNER session count
	BYTE  active CONLOSER session count
	BYTE  session termination count
	BYTE  bit 7: SESSION_TERMINATION_TARGET_DRAIN
	      bit 6: SESSION_TERMINATION_SOURCE_DRAIN
if verb=2000h (Attach Physical Unit), control block continues
	WORD  0
	BYTE  version
	BYTE  release
      8 BYTEs (high byte first) net name
      8 BYTEs (high byte first) physical unit name
      8 BYTEs 0
	DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh = don't log errors
	DWORD 0
	BYTE  0 RETURN_CONTROL: COMPLETE
	      1 RETURN_CONTROL: INCOMPLETE
if verb=2100h (Attach Logical Unit), control block continues
	WORD  70  offset to partner logical unit record
      8 BYTEs (high byte first) logical unit name
      8 BYTEs (high byte first) logical unit ID
	BYTE  logical unit local address
	BYTE  logical unit session limit
	DWORD pointer to CREATE_TP_EXIT routine,
	      FFFFFFFFh = reject incoming ALLOCATEs
	      00000000h = queue ALLOCATEs
	DWORD 0
	DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh = don't log errors
	DWORD 0
	BYTE  maximum TPs
	BYTE  queue depth
	DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no pswd exit
	DWORD 0
	WORD  total length of partner records
    for each partner logical unit:
	WORD  length of this partner logical unit record
	WORD  42  offset to mode records
      8 BYTEs (high byte first) partner logical unit name
	BYTE  partner logical unit security capabilities
		bit 7: already verified
		bit 6: conversation level security
		bit 5: session level security
	BYTE  partner logical unit session limit
	WORD  partner logical unit maximum MC_SEND_LL
      8 BYTEs (high byte first) partner logical unit DLC name
	BYTE  partner logical unit adapter number
     17 BYTEs (counted string) partner logical unit adapter address
	WORD  total length of mode records
   for each mode:
	WORD  16  length of this mode record
      8 BYTEs (high byte first) mode name
	WORD  RU_SIZE high bound
	WORD  RU_SIZE low bound
	BYTE  mode maximum negotiable session limit
	BYTE  pacing size for receive
if verb=2200h (Detach Logical Unit), control block continues:
      8 BYTEs (high byte first) logical unit ID
	BYTE  0
if verb=2700h (Detach Physical Unit), control block continues:
	BYTE  0  type: hard
	      1  type: soft
if verb=2B00h (Activate DLC), control block continues:
      8 BYTEs (high byte first) DLC name
	BYTE  adapter number

Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
pointers are called by pushing the DWORD pointer to the verb on the stack and
then performing a FAR call.

ACCESS_LU_LU_PW verb:
     12 BYTEs reserved
	WORD  1900h
      8 BYTEs (high byte first) logical unit ID
      8 BYTEs (high byte first) logical unit name
      8 BYTEs (high byte first) partner logical unit name
     17 BYTEs (counted string) partner fully qualified logical unit name
	BYTE  password available (0=no, 1=yes)
      8 BYTEs password
CREATE_TP verb:
     12 BYTEs reserved
	WORD  2300h
      6 BYTEs 0
	DWORD (high byte first) sense code
	      00000000h    Ok
	      080F6051h    SECURITY_NOT_VALID
	      084B6031h    TP_NOT_AVAIL_RETRY
	      084C0000h    TP_NOT_AVAIL_NO_RETRY
	      10086021h    TP_NAME_NOT_RECOGNIZED
	      10086034h    CONVERSATION_TYPE_MISMATCH
	      10086041h    SYNC_LEVEL_NOT_SUPPORTED
      8 BYTEs (high byte first) TP ID
      8 BYTEs (high byte first) logical unit ID
	DWORD (high byte first) conversation ID
	BYTE  0 basic conversation, 1 mapped conversation
	BYTE  0 no sync level, 1 confirm
	BYTE  reserved
     65 BYTEs (counted string) transaction program name
      6 BYTEs 0
	WORD  length of ERROR_LOG_DATA to return
	DWORD pointer to ERROR_LOG_DATA buffer
      8 BYTEs (high byte first) partner logical unit name
     18 BYTEs (counted string) partner fully qualified logical unit name
      8 BYTEs (high byte first) mode name
     12 BYTEs 0
     11 BYTEs (counted string) password
     11 BYTEs (counted string) user ID
	BYTE  0 verification should be performed
	      1 already verified
SYSLOG verb:
     12 BYTEs reserved
	WORD  2600h
     10 BYTEs 0
	WORD  (high byte first) type
	DWORD (high byte first) subtype
	DWORD pointer to ADDITIONAL_INFO
	DWORD (high byte first) conversation ID
      8 BYTEs (high byte first) TP ID
      8 BYTEs (high byte first) physical unit or logical unit name
	WORD  length of data
	DWORD pointer to data
	BYTE  0
------------------------------------------------------
INT 68 - APPC/PC
	AH = 02h
	DS:DX -> control block
		12 BYTEs reserved
		   WORD  verb (action)
		   BYTE  1 if MC_ (mapped conversation) form of verb
			 0 if basic verb
		 5 BYTEs 0
		   WORD  (high byte first) primary return code
			0000h  successful
			0001h  parameter check
			0002h  state check
			0003h  allocation error
			0005h  deallocate abended
			0006h  deallocate abended program
			0007h  deallocate abended SVC
			0008h  deallocate abended timer
			0009h  deallocate normal return
			000Ah  data posting blocked
			000Bh  posting not active
			000Ch  PROG_ERROR_NO_TRUNC
			000Dh  PROG_ERROR_TRUNC
			000Eh  PROG_ERROR_PURGING
			000Fh  CONV_FAILURE_RETRY
			0010h  CONV_FAILURE_NO_RETRY
			0011h  SVC_ERROR_NO_TRUNC
			0012h  SVC_ERROR_TRUNC
			0013h  SVC_ERROR_PURGING
			0014h  unsuccessful
			0018h  CNOS partner logical unit reject
			0019h  conversation type mixed
			F001h  APPC disabled
			F002h  APPC busy
			F003h  APPC abended
			F004h  incomplete
		   DWORD (high byte first) error code
			0001h bad TP ID
			0002h bad conversation ID
			0004h allocation error, no retry
			0005h allocation error, retry
			0006h data area crosses segment boundary
			0010h bad TPN length
			0011h bad CONV length
			0012h bad SYNC level
			0013h bad security selection
			0014h bad return control
			0015h SEC_TOKENS too big
			0016h PIP_LEN incorrect
			0017h no use of SNASVCMG
			0018h unknown partner mode
			0031h confirm: SYNC_NONE
			0032h confirm: bad state
			0033h confirm: NOT_LL_BDY
			0041h confirmed: bad state
			0051h deallocate: bad type
			0052h deallocate: flush bad state
			0053h deallocate: confirm bad state
			0055h deallocate: NOT_LL_BDY
			0057h deallocate: log LL_WRONG
			0061h flush: not send state
			0091h post on receipt: invalid length
			0092h post on receipt: not in receive state
			0093h post on receipt: bad fill
			00A1h prepare to receive:invalid type
			00A2h prepare to receive: unfinished LL
			00A3h prepare to receive: not in send state
			00B1h receive and wait: bad state
			00B2h receive and wait: NOT_LL_BDY
			00B5h receive and wait: bad fill
			00C1h receive immediate: not in receive state
			00C4h receive immediate: bad fill
			00E1h request to send: not in receive state
			00F1h send data: bad LL
			00F2h send data: not in send state
			0102h send error: log LL wrong
			0103h send error: bad type
			0121h test: invalid type
			0122h test: not in receive state
		 8 BYTEs (high byte first) TP_ID
		   DWORD (high byte first) conversation ID
if verb=0100h (Allocate or MC_Allocate), control block continues:
	BYTE  (MC_Allocate only) 0 basic conversation
				 1 mapped conversation
	BYTE  0 SYNC_LEVEL = none
	      1 SYNC_LEVEL = confirm
	WORD  0
	BYTE  0 RETURN_CONTROL: when session allocated
	      1 RETURN_CONTROL: immediate
	      2 RETURN_CONTROL: when session free
      8 BYTEs 0
      8 BYTEs (high byte first) partner logical unit name
      8 BYTEs (high byte first) mode name
     65 BYTEs (counted string) TP name
	BYTE  0 security: none
	      1 security: same
	      2 security: pgm
     11 BYTEs 0
     11 BYTEs (counted string) password
     11 BYTEs (counted string) user ID
	WORD  PIP_DATA length
	DWORD pointer to PIP_DATA
if verb=0300h (Confirm or MC_Confirm), then control block continues:
	BYTE  request to send received (0=no, 1=yes)
if verb=0400h (Confirmed or MC_Confirmed), no additional fields
if verb=0500h (Deallocate or MC_Deallocate), then control block continues:
	BYTE  0
	BYTE  type 0 SYNC_LEVEL
		   1 FLUSH
		   2 ABEND_PROC
		   3 ABEND_SVC
		   4 ABEND_TIMER
		   5 ABEND
	WORD  (MC_Deallocate only) length of error log data
	DWORD (MC_Deallocate only) pointer to error log data
if verb=0600h (Flush or MC_Flush), no additional fields
if verb=0700h (Get_Attributes or MC_Get_Attributes), control block continues:
      8 BYTEs (high byte first) logical unit ID
	BYTE  0
	BYTE  SYNC_LEVEL (0=none, 1=confirm)
      8 BYTEs (high byte first) mode name
      8 BYTEs (high byte first) own net name
      8 BYTEs (high byte first) own logical unit name
      8 BYTEs (high byte first) partner logical unit name
     18 BYTEs (counted string) partner's fully qualified logical unit name
	BYTE  0
     11 BYTEs (counted string) user ID
if verb=0800h (Get_Type), then control block continues:
	BYTE  type (0=basic conversation, 1=mapped conversation)
if verb=0900h (Post_on_Receipt), then control block continues:
	WORD  maximum length
	BYTE  fill (0=buffer, 1=LL)
if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive):
	BYTE  type (0=SYNC_LEVEL, 1=FLUSH)
	BYTE  locks (0=short, 1=long)
if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait), control block cont:
	BYTE  what received
		0 data
		1 data complete
		2 data incomplete
		3 confirm
		4 confirm send
		5 confirm deallocate
		6 send
	BYTE  (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
	BYTE  Request_to_Send_Received (0=no, 1=yes)
	WORD  maximum length
	WORD  data length
	DWORD pointer to data
if verb=0C00h (Receive_Immediate or MC_Receive_Immediate), control block:
	BYTE  what received
		0 data
		1 data complete
		2 data incomplete
		3 confirm
		4 confirm send
		5 confirm deallocate
		6 send
	BYTE  (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
	BYTE  Request_to_Send_Received (0=no, 1=yes)
	WORD  maximum length
	WORD  data length
	DWORD pointer to data
if verb=0E00h (Request_to_Send or MC_Request_to_Send), no additional fields
if verb=0F00h (Send_Data or MC_Send_Data), then control block continues:
	BYTE  request to send received (0=no, 1=yes)
	BYTE  0
	WORD  data length
	DWORD pointer to data
if verb=1000h (Send_Error or MC_Send_Error)
	BYTE  request to send received (0=no, 1=yes)
	BYTE  type (0=program, 1=SVC)
	DWORD 0
	WORD  (MC_Send_Error only) LOG_DATA length
	DWORD (MC_Send_Error only) pointer to LOG_DATA
if verb=1200h (Test or MC_Test), then control block continues:
	BYTE  (MC_Test only) test (0=posted, 1=request_to_send received)
    Note: error code has different interpretations for:
	0 posted data
	1 posted not data (primary return code = 0)
	1 bad TP_ID (primary return code = 1)
if verb=1300h (Wait), then control block continues:
	BYTE  number of conversations to wait on
    Note: error codes have interpretations as for 1200h (Test) above
------------------------------------------------------
INT 68 - APPC/PC
	AH = 03h
	DS:DX -> control block
		12 BYTEs reserved
		   WORD  verb (action)
		 6 BYTEs 0
		   DWORD (high byte first) return code (see AH=01h)
		   WORD  0
		 8 BYTEs (high byte first) logical unit ID
if verb=2400h (TP Started), control block continues:
      8 BYTEs (high byte first) TP ID
if verb=2800h (Get ALLOCATE), control block continues:
	BYTE  type
		0 dequeue
		1 test
	DWORD pointer to CREATE_TP record
if verb=2A00h (Change Logical Unit). control block continues:
	DWORD pointer to CREATE_TP_EXIT routine
		FFFFFFFFh reject incoming ALLOCATEs
		00000000h queue ALLOCATEs
	DWORD 0
	DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh = don't log errors
	DWORD 0
	BYTE  maximum TPs
	BYTE  0 stop QUEUE_ALLOCATEs
	      1 resume QUEUE_ALLOCATEs
	DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
	DWORD 0
------------------------------------------------------
INT 68 - APPC/PC
	AH = 04h
	DS:DX -> control block
		12 BYTEs reserved
		   WORD  verb (action)
			2500h TP_ENDED
			2900h TP_VALID
		 6 BYTEs 0
		   DWORD (high byte first) return code (see AH=01h)
		   WORD  0
		 8 BYTEs (high byte first) TP_ID
		   DWORD -> CREATE_TP record (only if verb = 2900h)
------------------------------------------------------
INT 68 - APPC/PC - TRANSFER MSG DATA
	AH = 05h
	DS:DX -> control block
		12 BYTEs reserved
		   WORD  1C00h
		   BYTE  0 user defined
			 1 NMVT
			 2 alert subvectors
			 3 PDSTATS subvectors
		 5 BYTEs 0
		   DWORD (high byte first) return code (see AH=01h)
		12 BYTEs 0
		   BYTE  if bit 0 clear, add correlation subvector
			 if bit 1 clear, add product set ID subvector
			 if bit 2 clear, do SYSLOG
			 if bit 3 clear, send SSCP_PU_SESSION
		   BYTE  0
		   WORD  length of data
		 N BYTEs data
------------------------------------------------------
INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
	AH = 06h
	DS:DX -> control block
		12 BYTEs reserved
		   WORD  1500h
		 6 BYTEs 0
		   WORD  (high byte first) primary return code (see AH=02h)
		   DWORD (high byte first) secondary return code (see AH=01h)
			0000h accepted
			0001h negotiated
			0003h bad logical unit ID
			0004h allocation failure, no retry
			0005h allocation failure, retry
			0151h can't raise limits
			0153h all modes must reset
			0154h bad SNASVCMG limits
			0155h minimum greater than total
			0156h mode closed (prim return code = 1)
			      CNOS mode closed (prim return code = 18h)
			0157h bad mode name (prim return code = 1)
			      CNOS bad mode name (prim return code = 18h)
			0159h reset SNA drains
			015Ah single not SRC response
			015Bh bad partner logical unit
			015Ch exceeds maximum allowed
			015Dh change SRC drains
			015Eh logical unit detached
			015Fh CNOS command race reject
		 8 BYTEs (high byte first) logical unit ID
		 8 BYTEs blanks
		 8 BYTEs (high byte first) partner logical unit name
		 8 BYTEs (high byte first) mode name
		   BYTE  bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
			 bit 6: set negotiable values
		   BYTE  partner logical unit mode session limit
		   BYTE  minimum CONWINNERS_SOURCE
		   BYTE  maximum CONWINNERS_TARGET
		   BYTE  automatic activation
		   BYTE  0
		   BYTE  bit 7: drain targer
			 bit 6: drain source
			 bit 5: target responsible, not source
------------------------------------------------------
INT 68 - APPC/PC - PASSTHROUGH
	AH = 07h
	DS:DX -> control block (format depends on application subsystem)
------------------------------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE APPC
	AH = FAh
	AL bit 0 = 0 enable
		   1 disable
------------------------------------------------------
INT 68 - APPC/PC - CONVERT
	AH = FBh
	DS:DX -> control block
		12 BYTEs reserved
		   WORD  1A00h
		 6 BYTEs 0
		   DWORD (high byte first) return code
		   BYTE  conversion
			   0 ASCII to EBCDIC
			   1 EBCDIC to ASCII
		   BYTE  character set
			   0 AE
			   1 A
			   2 G
		   WORD  length of string to convert
		   DWORD pointer to source
		   DWORD pointer to target
------------------------------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
	AH = FCh
	AL = 00h disable tracing
	   = 01h enable tracing
		DX = number of bytes to keep (0=all)
------------------------------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
	AH = FDh
	AL = 00h disable tracing
	     01h enable tracing
------------------------------------------------------
INT 68 - APPC/PC - TRACE DESTINATION
	AH = FEh
	AL = trace destinations
	    bit 0  storage (DS:DX -> trace stats record)
	    bit 1  display
	    bit 2  file (trace written to file OUTPUT.PC)
	    bit 3  printer
Trace Statistics Record
	DWORD  pointer to storage trace buffer
	WORD   max number of 80-byte records in trace
	WORD   (high-order byte first!) current record number (must init to 0)
	DWORD  (high-order byte first!) number of records written (init to 0)
	DWORD  reserved
Note: do not move record while trace is active
------------------------------------------------------
INT 68 - APPC/PC - SET PASSTHROUGH
	AH = FFh
	DS:DX -> passthrough exit routine
------------------------------------------------------
INT 69 - unused
------------------------------------------------------
INT 6A - unused
------------------------------------------------------
INT 6B - unused
------------------------------------------------------
INT 6C - system resume vector (CONVERTIBLE)
       - DOS 3.2 Realtime Clock update
------------------------------------------------------
INT 6D - unused
------------------------------------------------------
INT 6E - unused
------------------------------------------------------
INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
------------------------------------------------------
INT 6F - 10-NET - LOGIN
	AH = 00h
	DS:DX -> login record
		8 BYTEs user name
		8 BYTEs password
	       12 BYTEs name of SuperStation
Return: CL = security level
	AX = status
	    0000h good login
	    FF01h no response from superstation
	    FF02h network error
	    FF03h invalid password
	    FF04h no local buffer
	    FF05h superstation not available
	    FF06h node already logged in
	    FF07h login not valid from this node
	    FF08h node ID already in use
------------------------------------------------------
INT 6F - 10-NET - LOGOFF
	AH = 01h
Return: CX = number of files closed
	AX = status
	    0000h successful
	    FF08h superstation ID not already logged in
------------------------------------------------------
INT 6F - 10-NET - STATUS OF NODE
	AH = 02h
	DS:DX -> 512-byte record
		8 BYTEs user name (0 if none)
		  BYTE	station type
			0  workstation
			1  superstation
			4  logged into multiple superstations
	       24 BYTEs list of superstations logged into more than one
			superstation
	       12 BYTEs node ID
		  WORD	message count for this station (send for user node,
			receive for superstations)
	for superstations only:
		  WORD	drives allocated (bit 0=A:, bit 1=B:,...)
		  BYTE	user service flag
			bit 4: SUBMIT is on
			    3: mail waiting for node
			    2: calendar waiting for you
			    1: news waiting for you
			    0: mail waiting for you
		  BYTE	printers allocated (bit 0=LPT1,...)
		  BYTE	number of unprinted spool files
		  BYTE	number of opened files
		  BYTE	number of logged on files
		  BYTE	primary drive (1=A:)
		  BYTE	reserved
		N BYTEs list of logged on node IDs (each 12 bytes, max 38 IDs)
Return: CF set on error
	    AX = error code
		FF01h no response from node
		FF02h network error
		FF04h no local buffer
		FF16h invalid node ID
------------------------------------------------------
INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
	AH = 03h
Return: ES:BX -> record (actually starts at [BX-25])
		WORD  count of dropped Send6F
		WORD  buffer start address
		WORD  comm driver base address
		WORD  send/receive retry count
		BYTE  number of 550ms loops
		WORD  UFH address
		WORD  CDIR address
		WORD  LTAB address
		WORD  SFH address
		WORD  FTAB address
		WORD  RLTAB address
		WORD  SMI address
		WORD  NTAB address
       ES:BX -> WORD  address of first CT_DRV
		BYTE  number of DRV entries
	      8 BYTEs login name
	     12 BYTEs node ID
	      6 BYTEs node address
		BYTE  flag
		BYTE  CT_CFLG
			bit 1: sound bell
			bit 0: CHAT permit
		BYTE  CT_PSFLG
			bit 5: PRINT permit
			bit 4: KB initiated
			bit 3: CHAT called FOXPTRM
			bit 2: SUBMIT active
			bit 1: SUBMIT received
			bit 0: SUBMIT permit
		BYTE  reserved
		WORD  receive message count
		WORD  send message count
		WORD  retry count
		WORD  failed count
		WORD  driver errors
		WORD  dropped responses/CHATs
	      9 BYTEs LIST ID/NTAB address (3 entries--LPT1-3???)
	      6 BYTEs AUX ID/NTAB address (2 entries--COM1-2???)
		BYTE  active CB channel
		BYTE  received 6F messages on queue
	      9 BYTEs activity counters for channels 1-9
------------------------------------------------------
INT 6F - 10-NET - SEND
	AH = 04h
	DS:BX -> record
		12 BYTEs receiving node's ID
		   WORD  length of data at DX
	DS:DX -> data (max 1024 bytes)
Return: CF set on error
	    AX = error code
		FF01h timeout
		FF02h network error
		FF04h no local buffer
		FF16h invalid parameter (bad length)
------------------------------------------------------
INT 6F - 10-NET - RECEIVE
	AH = 05h
	CX = number of seconds before timeout
	DS:DX -> receive buffer
		12 BYTEs sending node's ID
		   WORD  length of message
		 N BYTEs message (maximum 1024 bytes)
Return: CF set on error
	    AX = error code
		FF01h timeout
		FF18h sent message has been dropped
------------------------------------------------------
INT 6F - 10-NET - LOCK HANDLE
	AH = 07h
	BX = file handle
	CX:DX = starting offset in file
	SI = record length
Return: CF set on error
	    AX = error code
		FF01h timeout
		0002h file not found
		FF17h record locked by another user
------------------------------------------------------
INT 6F - 10-NET - UNLOCK HANDLE
	AH = 08h
	BX = file handle
	AL = mode
	    0 unlock all
	    1 unlock record at CX:DX
Return: CF set on error
	    AX = error code
		2 file not found
------------------------------------------------------
INT 6F - 10-NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
	AH = 0Bh
	AL = drive number or 0
	ES:SI = Ethernet address or 0
	DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status
	    0 successful
	    1 semaphore currently locked
	    2 server not responding
	    3 invalid semaphore name
	    4 semaphore list is full
	    5 invalid drive ID
	    6 invalid Ethernet address
	    7 not logged in
	    8 write to network failed
	    9 semaphore already logged in this CPU
------------------------------------------------------
INT 6F - 10-NET - UNLOCK SEMAPHORE
	AH = 0Ch
	AL = drive number or 0
	ES:SI = Ethernet address or 0
	DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see AH=0Bh)
	    1 semaphore not locked
------------------------------------------------------
INT 6F - 10-NET - WHO
	AH = 0Dh
	CX = length of data
	DS:DX -> array of records to be filled
		12 BYTEs node ID
		   BYTE  flag (1 = workstation, 2 = superstation)
Return: CL = number of records returned (responding stations)
------------------------------------------------------
INT 6F - 10-NET - SPOOL/PRINT
	AH = 0Eh
	DS:DX -> record
		WORD  0 initiate spool
		      1 abort print
		      2 close spool
		      3 delete spool
		      4 print
		      5 get report info
	     11 BYTEs file name
		BYTE  notification
			bit 6: do ID page
			bit 5: no form feed
			bit 3: notify at print completion
			bit 2: notify at print start and reply???
			bit 1: notify at print start
			bit 0: no notification
		BYTE  days to keep (FFh=forever)
		BYTE  device (1=LPT1)
		WORD  length of following data area
	      N BYTEs $SCNT records returned if code in first word is 05h
Return: CF set on error
	    AX = error code
		FF16h invalid parameter
		FF17h device not mounted
		FF18h already spooling to named device
------------------------------------------------------
INT 6F - 10-NET - LOCK FCB
	AH = 11h
	AL = mode
	    0 sequential
	    1 random
	    2 random block
	DS:DX -> FCB
Return: CF set on error
	    AX = 2 file not found
		FF01h timeout
		FF17h record locked by another user
------------------------------------------------------
INT 6F - 10-NET - UNLOCK FCB
	AH = 12h
	AL = mode
	    0 sequential
	    1 random
	    2 random block
	DS:DX -> FCB
Return: CF set on error
	    AX = 2 file not found
------------------------------------------------------
INT 70 - IRQ8 (AT/XT286/PS50+) - REAL-TIME CLOCK
------------------------------------------------------
INT 71 - IRQ9 (AT/XT286/PS50+) - LAN ADAPTER 1
   rerouted to INT 0A by BIOS
------------------------------------------------------
INT 72 - IRQ10 (AT/XT286/PS50+) - RESERVED
------------------------------------------------------
INT 73 - IRQ11 (AT/XT286/PS50+) - RESERVED
------------------------------------------------------
INT 74 - IRQ12 (PS50+) - MOUSE INTERRUPT
------------------------------------------------------
INT 75 - IRQ13 (AT/XT286/PS50+) - 80287 ERROR
   rerouted to INT 02 by BIOS
------------------------------------------------------
INT 76 - IRQ14 (AT/XT286/PS50+) - FIXED DISK
------------------------------------------------------
INT 77 - IRQ15 (AT/XT286/PS50+) - RESERVED
------------------------------------------------------
INT 78 - not used
------------------------------------------------------
INT 79 - not used
------------------------------------------------------
INT 7A - Novell NetWare - LOW-LEVEL API
------------------------------------------------------
INT 7B - not used
------------------------------------------------------
INT 7C - not used
------------------------------------------------------
INT 7D - not used
------------------------------------------------------
INT 7E - not used
------------------------------------------------------
INT 7F - not used
------------------------------------------------------
INT 80 - reserved for BASIC
------------------------------------------------------
INT 81 - reserved for BASIC
------------------------------------------------------
INT 82 - reserved for BASIC
------------------------------------------------------
INT 83 - reserved for BASIC
------------------------------------------------------
INT 84 - reserved for BASIC
------------------------------------------------------
INT 85 - reserved for BASIC
------------------------------------------------------
INT 86 - Relocated (by NETBIOS) INT 18
------------------------------------------------------
INT 86 to F0 - used by BASIC while in interpreter
------------------------------------------------------
INT E0 - CP/M-86 function calls
------------------------------------------------------
INT E4 - Logitech Modula v2.0 - MonitorEntry
	AX = 0005h
	BX = priority
------------------------------------------------------
INT E4 - Logitech Modula v2.0 - MonitorExit
	AX = 0006h
------------------------------------------------------
INT F1 - reserved for user interrupt
------------------------------------------------------
INT F2 - reserved for user interrupt
------------------------------------------------------
INT F3 - reserved for user interrupt
------------------------------------------------------
INT F4 - reserved for user interrupt
------------------------------------------------------
INT F5 - reserved for user interrupt
------------------------------------------------------
INT F6 - reserved for user interrupt
------------------------------------------------------
INT F7 - reserved for user interrupt
------------------------------------------------------
INT F8 - 10 ms INTERVAL TIMER (TANDY???)
------------------------------------------------------
INT F9 - reserved for user interrupt
------------------------------------------------------
INT FA - USART READY (RS-232C) (TANDY???)
------------------------------------------------------
INT FB - USART Rx READY (keyboard) (TANDY???)
------------------------------------------------------
INT FC - reserved for user interrupt
------------------------------------------------------
INT FD - reserved for user interrupt
------------------------------------------------------
INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
------------------------------------------------------
INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
------------------------------------------------------
INT FF - Z100 - WARM BOOT
------------------------------------------------------
-- 
{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?