[comp.sys.ibm.pc] Interrupt List 88.9, file INTERRUP.LST 07/07

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

	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)
---------------------------------------------
INT 6C - DOS 3.2 Realtime Clock update
---------------------------------------------
INT 6D - Paradise VGA - internal
---------------------------------------------
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 successful
	    01FFh time out on response
	    02FFh network (hardware) error
	    03FFh invalid password
	    04FFh local rexource not available
	    05FFh server resource not available
	    06FFh already logged in under different name
	    07FFh login security failure (node)
	    08FFh not logged in
	    09FFh position calc error
	    0AFFh receive subfunction not = send subfunction (i.e. read, write)
	    0BFFh request function not in range
	    0CFFh no more server file handle entries left
	    0DFFh no more shared file table entries left
	    0EFFh no more user file handle entries left
	    0FFFh chat permit not on
	    10FFh not a server on request
	    11FFh no transporter board error
	    12FFh time out on send
	    13FFh item not found (spool item not on queue)
	    14FFh dos access incompatible
	    15FFh record already locked
	    16FFh invalid parameter
	    17FFh record lock time out error
	    18FFh currently spooling to named device
	    19FFh dropped receive message (throttle)
	    1AFFh open sharing violation
	    1BFFh no more tuf entries left
	    1CFFh not file owner on open
	    1DFFh read security not passed
	    1EFFh write security not passed
	    1FFFh group security not passed
	    20FFh security file failure
	    21FFh activity file failure
	    22FFh spool cntrl file failure
	    23FFh device not mounted (spooling)
	    24FFh spool file has not been terminated
	    25FFh device not mounted or is not being shared
	    26FFh duplicate node id
	    27FFh file not found error
	    28FFh no more files
	    29FFh unknown internal system error
	    2AFFh print queue is full or corrupted
	    2BFFh invalid function
	    2CFFh invalid handle
	    2DFFh too many files opened
	    2EFFh path not found
	    2FFFh named file is active
/* I've gotten one submission which says FFxxh, and another with xxFFh */
/* I don't know which way around these should be, does somebody else know? */
	    FF01h timeout
	    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
	    FF16h invalid parameter (bad length, invalid node ID, etc)
	    FF17h record locked by another user
	    FF18h sent message has been dropped
---------------------------------------------
INT 6F - 10-NET - LOGOFF
	AH = 01h
	DS:DX -> superstation ID or nulls (12 bytes)
Return: CX = number of files closed
	AX = status (see function 00h)
	    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
			2  gateway station
			3  gateway active
			4  logged into multiple superstations
			5  reserved
	       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 7: gate
			    6: print permit on
			    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 nodes
		  BYTE	primary drive (1=A:)
		  BYTE	reserved
		N BYTEs list of logged on node IDs (each 12 bytes, max 37 IDs)
		(continues at offset 1F4h)
		3 BYTEs time: sec/min/hrs
		3 BYTEs date: day/mon/year-1980
Return: CF set on error
	    AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
	AH = 03h
	DS:DI -> node ID (optional)
Return: ES:BX -> record (actually starts at [BX-41])
		WORD  local device table address
		WORD  extended network error mapping table address
		WORD  shared device table address
		WORD  mounted device table address
		BYTE  receive buffer counter
		BYTE  collect buffer counter
		WORD  TUF address
		BYTE  enable flag
		BYTE  FCB keep flag
		WORD  reserved
---up to here, 10-Net v3.3---
		WORD  count of dropped Send6F
		WORD  buffer start address
		WORD  comm driver base address
		WORD  send/receive retry count
		BYTE  number of 550ms loops before timeout
		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 (blank-padded)
	      6 BYTEs node address
		BYTE  flag
		BYTE  CT_CFLG (chat permit)
			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  in 10Net flag
		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
---beyond here, 10-Net v3.3---
		BYTE  bit 0 = RS232 gate
			  1 = Send6F gate (user set)
		DWORD pointer into gate (user set)
		DWORD pointer into 10Net send
	      N WORDs addresses of timer blocks
---------------------------------------------
INT 6F - 10-NET - SEND
	AH = 04h
	DS:BX -> record
		12 BYTEs receiving node's ID
			if first byte has high-order bit set, message is
			   directed to the CT_RGATE vector at the receiver
			if second byte is 00h, first byte is taken as a CB
			   channel number and delivered to all nodes on same
			   channel
		   WORD  length of data at DX
	DS:DX -> data (max 1024 bytes)
Return: CF set on error
	    AX = error code (see function 00h)
---------------------------------------------
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 (see function 00h)
	CF clear if successful
	    AH = FEh if dequeued message is a CB message
---------------------------------------------
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 (see also function 00h)
		0002h file not found
---------------------------------------------
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 (see also function 00h)
		2 file not found
---------------------------------------------
INT 6F - 10-NET - SUBMIT
	AH = 09h
	DS:BX -> record
		12 BYTEs destination node ID (must be logged in)
		   WORD  length+2 of following 'command line' text
		 N BYTEs command line text (<=100 bytes), system adds CR
---------------------------------------------
INT 6F - 10-NET - CHAT
	AH = 0Ah
	DS:BX -> control parameters
		 8 BYTEs sender ID, if nulls defaults to node's userID
		 8 BYTEs destination user ID, 'EVERYONE' may be used
		12 BYTEs destination node ID
	DS:DX -> chat message
		   WORD length+2 of following text
		 N BYTEs text, max 101 bytes
---------------------------------------------
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
Note: same as INT 60/AH=12h
---------------------------------------------
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
Note: same as INT 60/AH=13h
---------------------------------------------
INT 6F - 10-NET - WHO
	AH = 0Dh
	AL = type code
	    01h return superstations only
	    02h return non-superstations only
	    otherwise return all
	CX = length of data
	DS:DX -> array of records to be filled
		12 BYTEs node ID
		   BYTE  flags
			bit 1 = workstation
			    2 = superstation
			    3 = xgate
			    4 = active gate
		(if AL=01h, record continues)
		   BYTE  version number
		   WORD  level number of 10Net software in responding node
		(if AL=02h, record continues)
		 8 BYTEs user ID
		   BYTE  version number
		   WORD  level number
Return: CL = number of records returned (responding stations)
---------------------------------------------
INT 6F - 10-NET - SPOOL/PRINT
	AH = 0Eh
	DS:DX -> record
		WORD  operation code
		      0 initiate spool
		      1 abort print
		      2 close spool
		      3 delete spool
		      4 print
		      5 get report info
		      6 set chat template
		      7 queue
		      8 return queue
		      9 queue non-spooled file for printing
	     11 BYTEs file name in FCB format
	(if operation code = 00h or 06h, record continues)
		BYTE  notification
			bit 7: queue to top
			bit 6: do ID page
			bit 5: no form feed
			bit 4: reserved
			bit 3: explicity queuing only
			bit 2: notify at print completion
			bit 1: notify server operator/reply
			bit 0: notify at print start
		BYTE  days to keep (FFh=forever)
		BYTE  bits 0,1: device (1=LPT1)
		      bits 4-7: remote drive to store spool file (1=A,...)
		WORD  length of following data area
	      N BYTEs up to 64 bytes of description
	(if operation code = 03h, record continues)
	      8 BYTEs user ID to associate with filename
	(if operation code = 04h, record continues)
		WORD  block number
	      8 BYTEs user ID to associate with filename
	(if operation code = 05h, record continues)
		BYTE  RRN to start retrieve
		BYTE  bits 0,1: local print device (LPTx)
		      bit 3: if set, return entries for all users
		WORD  length of following area
	      N BYTEs up to 1500 bytes to receive $SCNTL records returned
	(if operation code = 07h, record continues)
		BYTE  queue number
		BYTE  bits 0,1: local print device (LPTx)
		WORD  number of bytes of test print to be done
		BYTE  code: 01h prnt device
			    02h test print count
			    03h prn
	(if operation code = 08h, record continues)
		BYTE  queue location or $SCNTL location to start access
			returns next item for access:
				00h-7Fh queued items
				80h-FEh non-queued, non-printed items
				FFh	no more items
		WORD  unused
		WORD  length of following area
	      N BYTEs up to 64 bytes to receive $SCNTL records
	(if operation code = 09h, record continues)
	      3 BYTEs unused
	      N BYTEs path to non-spooled file to be queued for printing
Return: CF set on error
	    AX = error code (see also function 00h)
		FF17h device not mounted
		FF18h already spooling to named device

$SCNTL record:
      8 BYTEs user ID
     11 BYTEs filename in FCB format
      6 BYTEs node ID
      3 BYTEs creation date
	BYTE  flags
	      bit 7: queue to top
		  6: do ID page
		  5: no form feed at end
		  4: reserved
		  3: explicit queueing only
		  2: notify at completion
		  1: notify server operator/reply
		  0: notify at start
	BYTE  retention time in days
	BYTE  printing device (LPTx)
      3 BYTEs date last printed (0 = never)
	BYTE  device containing spoolfile
	WORD  bytes to print for test print
	WORD  block number to start print
	BYTE  reserved
---------------------------------------------
INT 6F - 10-NET - ATTACH/DETACH PRINTER
	AH = 10h
	AL = subfunction
	    00h initiate spooling if LPT1 is mounted
	    01h terminate spooling if LPT1 is mounted
---------------------------------------------
INT 6F - 10-NET - LOCK FCB
	AH = 11h
	AL = mode
	    1 sequential
	    2 random
	    3 random block
		CX = number of records
	DS:DX -> FCB
Return: CF set on error
	    AX = error code (see also function 00h)
		2 file not found
---------------------------------------------
INT 6F - 10-NET - UNLOCK FCB
	AH = 12h
	AL = mode
	    0 sequential
	    1 random
	    2 random block
		CX = number of records
	DS:DX -> FCB
Return: CF set on error
	    AX = error code (see also function 00h)
		2 file not found
---------------------------------------------
INT 6F - 10-NET v3.3 - GET REMOTE CONFIGURATION TABLE ADDRESS
	AH = 13h
	DS:DX -> node ID, 12 bytes blank-padded
Return: CF set on error
	    AX = error code (see function 00h)
	CF clear if successful
	    ES:BX = configuration table address on given machine
---------------------------------------------
INT 6F - 10-NET v3.3 - GET REMOTE MEMORY
	AH = 14h
	BX:SI = address of remote memory
	CX = length (<=1024 bytes)
	DS:DX -> node ID, 12 bytes blank-padded
	DS:DI -> area to receive remote memory image
Return: CF set on error
	    AX = error code (see function 00h)
	CF clear if successful
	    CX = amount of memory copied to DS:SI
---------------------------------------------
INT 6F - 10-NET v3.3 - GET SHARED DEVICE ENTRY
	AX = 1501h
	BX = zero-based index
	DS:SI -> node ID, 12 bytes blank-padded
	ES:DI -> 85-byte buffer
Return: CF set on error
	    AX = error code (see function 00h)
	CF clear if successful
	    ES:DI buffer contains shared device table entry of BXth device:
		8 BYTEs device
		8 BYTEs alias
	       64 BYTEs path
		8 BYTEs password
		  BYTE	access
		4 BYTEs mask
---------------------------------------------
INT 6F - 10-NET v3.3 - SET SHARED DEVICE ENTRY
	AX = 1502h
	DS:SI -> node ID, 12 bytes blank-padded
	ES:DI -> valid shared device table entry
Return: CF set on error
	    AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET v3.3 - DELETE SHARED DEVICE ENTRY
	AX = 1503h
	BX = zero-based index
	DS:SI -> node ID, 12 bytes blank-padded
Return: CF set on error
	    AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET v3.3 - MOUNT
	AH = 17h
	AL = local drive number (0=A:)
	BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
	DS:DX -> node ID, 12 bytes blank-padded
Return: CF set on error
	    AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET v3.3 - UNMOUNT
	AH = 18h
	AL = local drive number (0=A:)
	BL = type
	    00h	    disk
	    01h-03h LPTn
	    04h,05h COMx
Return: CF set on error
	    AX = error code (see function 00h)
---------------------------------------------
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 7A - AutoCAD Device Interface
---------------------------------------------
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 EF - GEM - INTERFACE
	CX = 0473h
	DS:DX -> GEM parameter block
---------------------------------------------
INT F0 - used by BASIC while in interpreter
---------------------------------------------
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
---------------------------------------------
--