Interrupt List, part 8 of 8
This compilation is Copyright (c) 1989,1990,1991,1992 Ralf Brown
----------68---------------------------------
INT 68 - Sangoma CCPOP 3270 resident module
SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
----------6801-------------------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL
       AH = 01h
       DS:DX -> control block

Format of control block:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    verb (action)
0Eh  6 BYTEs   00h
14h    DWORD   big-endian return code (see below)
---if verb = 1B00h (DISPLAY)---
18h    WORD    00h
1Ah  8 BYTEs   logical unit ID (big-endian)
22h  8 BYTEs   partner logical unit name (big-endian)
2Ah  8 BYTEs   mode name (big-endian)
32h    BYTE    logical unit session limit
33h    BYTE    partner logical unit session limit
34h    BYTE    node maximum negotiable session limit
35h    BYTE    current session limit
36h    BYTE    minimum negotiated winner limit
37h    BYTE    maximum negotiated loser limit
38h    BYTE    active session count
39h    BYTE    active CONWINNER session count
3Ah    BYTE    active CONLOSER session count
3Bh    BYTE    session termination count
3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
               bit 6: SESSION_TERMINATION_SOURCE_DRAIN
---if verb=2000h (Attach Physical Unit)---
18h    WORD    00h
1Ah    BYTE    version
1Bh    BYTE    release
1Ch  8 BYTEs   net name (big-endian)
24h  8 BYTEs   physical unit name (big-endian)
2Ch  8 BYTEs   00h
34h    DWORD   pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
38h    DWORD   00h
3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
               01h RETURN_CONTROL: INCOMPLETE
---if verb=2100h (Attach Logical Unit)---
18h    WORD    70  offset to partner logical unit record
1Ah  8 BYTEs   logical unit name (big-endian)
22h  8 BYTEs   logical unit ID (big-endian)
2Ah    BYTE    logical unit local address
2Bh    BYTE    logical unit session limit
2Ch    DWORD   pointer to CREATE_TP_EXIT routine,
               FFFFFFFFh = reject incoming ALLOCATEs
               00000000h = queue ALLOCATEs
30h    DWORD   00h
34h    DWORD   pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
38h    DWORD   00h
3Ch    BYTE    maximum TPs
3Dh    BYTE    queue depth
3Eh    DWORD   pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
42h    DWORD   00h
46h    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   partner logical unit name (big-endian)
       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   partner logical unit DLC name (big-endian)
       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   mode name (big-endian)
       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)---
18h  8 BYTEs   logical unit ID (big-endian)
20h    BYTE    00h
---if verb=2700h (Detach Physical Unit)---
18h    BYTE    00h  type: hard
               01h  type: soft
---if verb=2B00h (Activate DLC)---
18h  8 BYTEs   DLC name (big-endian)
20h    BYTE    adapter number

Values for 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

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.

Format of ACCESS_LU_LU_PW verb:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    1900h
0Eh  8 BYTEs   logical unit ID (big-endian)
16h  8 BYTEs   logical unit name (big-endian)
1Eh  8 BYTEs   partner logical unit name (big-endian)
26h 17 BYTEs   (counted string) partner fully qualified logical unit name
37h    BYTE    password available (0=no, 1=yes)
38h  8 BYTEs   password

Format of CREATE_TP verb:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    2300h
0Eh  6 BYTEs   00h
14h    DWORD   sense code (big-endian)
               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
18h  8 BYTEs   TP ID (big-endian)
20h  8 BYTEs   logical unit ID (big-endian)
28h    DWORD   conversation ID (big-endian)
2Ch    BYTE    0 basic conversation, 1 mapped conversation
2Dh    BYTE    0 no sync level, 1 confirm
2Eh    BYTE    reserved
2Fh 65 BYTEs   (counted string) transaction program name
70h  6 BYTEs   00h
76h    WORD    length of ERROR_LOG_DATA to return
78h    DWORD   pointer to ERROR_LOG_DATA buffer
7Ch  8 BYTEs   partner logical unit name (big-endian)
84h 18 BYTEs   (counted string) partner fully qualified logical unit name
96h  8 BYTEs   mode name (big-endian)
9Eh 12 BYTEs   00h
AAh 11 BYTEs   (counted string) password
B5h 11 BYTEs   (counted string) user ID
C0h    BYTE    0 verification should be performed
               1 already verified

Format of SYSLOG verb:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    2600h
0Eh 10 BYTEs   00h
18h    WORD    type (big-endian)
1Ah    DWORD   subtype (big-endian)
1Eh    DWORD   pointer to ADDITIONAL_INFO
22h    DWORD   conversation ID (big-endian)
26h  8 BYTEs   TP ID (big-endian)
2Eh  8 BYTEs   physical unit or logical unit name (big-endian)
36h    WORD    length of data
38h    DWORD   pointer to data
3Ch    BYTE    00h
----------6802-------------------------------
INT 68 - APPC/PC - CONNECTION CONTROL
       AH = 02h
       DS:DX -> control block

Format of control block:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    verb (action)
0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
               0 if basic verb
0Fh  5 BYTEs   reserved (0)
14h    WORD    (high byte first) primary return code (see below)
16h    DWORD   (high byte first) error code (see below)
1Ah  8 BYTEs   (high byte first) TP_ID
22h    DWORD   (high byte first) conversation ID
---if verb=0100h (Allocate or MC_Allocate)---
26h    BYTE    (MC_Allocate only) 0 basic conversation
                                  1 mapped conversation
27h    BYTE    00h SYNC_LEVEL = none
               01h SYNC_LEVEL = confirm
28h    WORD    0000h
2Ah    BYTE    00h RETURN_CONTROL: when session allocated
               01h RETURN_CONTROL: immediate
               02h RETURN_CONTROL: when session free
2Bh  8 BYTEs   00h
33h  8 BYTEs   (high byte first) partner logical unit name
3Bh  8 BYTEs   (high byte first) mode name
43h 65 BYTEs   (counted string) TP name
84h    BYTE    00h security: none
               01h security: same
               02h security: pgm
85h 11 BYTEs   00h
90h 11 BYTEs   (counted string) password
9Bh 11 BYTEs   (counted string) user ID
A6h    WORD    PIP_DATA length
A8h    DWORD   pointer to PIP_DATA
---if verb=0300h (Confirm or MC_Confirm)---
26h    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)---
26h    BYTE    00h
27h    BYTE    type 0 SYNC_LEVEL
                    1 FLUSH
                    2 ABEND_PROC
                    3 ABEND_SVC
                    4 ABEND_TIMER
                    5 ABEND
28h    WORD    (MC_Deallocate only) length of error log data
2Ah    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)---
26h  8 BYTEs   (high byte first) logical unit ID
2Eh    BYTE    00h
2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
30h  8 BYTEs   (high byte first) mode name
38h  8 BYTEs   (high byte first) own net name
40h  8 BYTEs   (high byte first) own logical unit name
48h  8 BYTEs   (high byte first) partner logical unit name
50h 18 BYTEs   (counted string) partner's fully qualified logical unit name
62h    BYTE    00h
63h 11 BYTEs   (counted string) user ID
---if verb=0800h (Get_Type)---
26h    BYTE    type (0=basic conversation, 1=mapped conversation)
---if verb=0900h (Post_on_Receipt)---
26h    WORD    maximum length
28h    BYTE    fill (0=buffer, 1=LL)
---if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive)---
26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
27h    BYTE    locks (0=short, 1=long)
---if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait)---
26h    BYTE    what received
               00h data
               01h data complete
               02h data incomplete
               03h confirm
               04h confirm send
               05h confirm deallocate
               06h send
27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
29h    WORD    maximum length
2Bh    WORD    data length
2Dh    DWORD   pointer to data
---if verb=0C00h (Receive_Immediate or MC_Receive_Immediate)---
26h    BYTE    what received
               00h data
               01h data complete
               02h data incomplete
               03h confirm
               04h confirm send
               05h confirm deallocate
               06h send
27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
29h    WORD    maximum length
2Bh    WORD    data length
2Dh    DWORD   pointer to data
---if verb=0E00h (Request_to_Send or MC_Request_to_Send), no other fields---
---if verb=0F00h (Send_Data or MC_Send_Data)---
26h    BYTE    request to send received (0=no, 1=yes)
27h    BYTE    00h
28h    WORD    data length
2Ah    DWORD   pointer to data
---if verb=1000h (Send_Error or MC_Send_Error)---
26h    BYTE    request to send received (0=no, 1=yes)
27h    BYTE    type (0=program, 1=SVC)
28h    DWORD   00h
2Ch    WORD    (MC_Send_Error only) LOG_DATA length
2Eh    DWORD   (MC_Send_Error only) pointer to LOG_DATA
---if verb=1200h (Test or MC_Test)---
26h    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)---
26h    BYTE    number of conversations to wait on
               Note: error codes have interpretations as for 1200h above

Values for 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

Values for 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
----------6803-------------------------------
INT 68 - APPC/PC
       AH = 03h
       DS:DX -> control block (see below)

Format of control block:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    verb (action)
0Eh  6 BYTEs   0
14h    DWORD   (high byte first) return code (see AH=01h)
18h    WORD    0
1Ah  8 BYTEs   (high byte first) logical unit ID
---if verb=2400h (TP Started), control block continues---
22h  8 BYTEs   (high byte first) TP ID
---if verb=2800h (Get ALLOCATE), control block continues---
22h    BYTE    type
               00h dequeue
               01h test
23h    DWORD   pointer to CREATE_TP record
---if verb=2A00h (Change Logical Unit). control block continues---
22h    DWORD   pointer to CREATE_TP_EXIT routine
               FFFFFFFFh reject incoming ALLOCATEs
               00000000h queue ALLOCATEs
26h    DWORD   00000000h
2Ah    DWORD   pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
2Eh    DWORD   00000000h
32h    BYTE    maximum TPs
33h    BYTE    00h stop QUEUE_ALLOCATEs
               01h resume QUEUE_ALLOCATEs
34h    DWORD   pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
38h    DWORD   00000000h
----------6804-------------------------------
INT 68 - APPC/PC
       AH = 04h
       DS:DX -> control block (see below)

Format of control block:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    verb (action)
               2500h TP_ENDED
               2900h TP_VALID
0Eh  6 BYTEs   0
14h    DWORD   (high byte first) return code (see AH=01h)
18h    WORD    0
1Ah  8 BYTEs   (high byte first) TP_ID
22h    DWORD -> CREATE_TP record (only if verb = 2900h)
----------6805-------------------------------
INT 68 - APPC/PC - TRANSFER MSG DATA
       AH = 05h
       DS:DX -> control block (see below)

Format of control block:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    1C00h
0Eh    BYTE    00h user defined
               01h NMVT
               02h alert subvectors
               03h PDSTATS subvectors
0Fh  5 BYTEs   0
14h    DWORD   (high byte first) return code (see AH=01h)
18h 12 BYTEs   0
24h    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
25h    BYTE    0
26h    WORD    length of data
28h  N BYTEs   data
----------6806-------------------------------
INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
       AH = 06h
       DS:DX -> control block (see below)

Format of control block:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    1500h
0Eh  6 BYTEs   0
14h    WORD    (high byte first) primary return code (see AH=02h)
16h    DWORD   (high byte first) secondary return code (see below, AH=01h)
1Ah  8 BYTEs   (high byte first) logical unit ID
22h  8 BYTEs   blanks
2Ah  8 BYTEs   (high byte first) partner logical unit name
32h  8 BYTEs   (high byte first) mode name
3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
               bit 6: set negotiable values
3Bh    BYTE    partner logical unit mode session limit
3Ch    BYTE    minimum CONWINNERS_SOURCE
3Dh    BYTE    maximum CONWINNERS_TARGET
3Eh    BYTE    automatic activation
3Fh    BYTE    0
40h    BYTE    bit 7: drain target
               bit 6: drain source
               bit 5: target responsible, not source

Values for secondary return code (see also 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
----------6807-------------------------------
INT 68 - APPC/PC - PASSTHROUGH
       AH = 07h
       DS:DX -> control block (format depends on application subsystem)
SeeAlso: AH=FFh
----------68FA-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE APPC
       AH = FAh
       AL bit 0 = 0 enable
                  1 disable
----------68FB-------------------------------
INT 68 - APPC/PC - CONVERT
       AH = FBh
       DS:DX -> control block (see below)

Format of control block:
Offset  Size    Description
00h 12 BYTEs   reserved
0Ch    WORD    1A00h
0Eh  6 BYTEs   0
14h    DWORD   (high byte first) return code
18h    BYTE    conversion
                  00h ASCII to EBCDIC
                  01h EBCDIC to ASCII
19h    BYTE    character set
                  00h AE
                  01h A
                  02h G
1Ah    WORD    length of string to convert
1Ch    DWORD   pointer to source
20h    DWORD   pointer to target
----------68FC-------------------------------
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)
SeeAlso: AH=FDh
----------68FD-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
       AH = FDh
       AL = 00h disable tracing
            01h enable tracing
SeeAlso: AH=FCh,AH=FEh
----------68FE-------------------------------
INT 68 - APPC/PC - SET 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
SeeAlso: AH=FDh

Format of Trace Statistics Record:
Offset  Size    Description
00h    DWORD   pointer to storage trace buffer
04h    WORD    max number of 80-byte records in trace
06h    WORD    (high-order byte first!) current record number (must init to 0)
08h    DWORD   (high-order byte first!) number of records written (init to 0)
0Ch    DWORD   reserved
Note:   do not move record while trace is active
----------68FF-------------------------------
INT 68 - APPC/PC - SET PASSTHROUGH
       AH = FFh
       DS:DX -> passthrough exit routine
SeeAlso: AH=07h
----------69---------------------------------
INT 69 - Zenith AT BIOS - ???
  called by INT 09 handler
----------690100-----------------------------
INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
       AX = 0100h
Return: AL = FFh if present
SeeAlso: AX=010Fh
----------690101-----------------------------
INT 69 - DECnet DOS CTERM - SEND BYTE
       AX = 0101h
       BL = character
       DX = session handle
Return: AH >= 80h on error
SeeAlso: AX=0102h
----------690102-----------------------------
INT 69 - DECnet DOS CTERM - READ BYTE
       AX = 0102h
       DX = session handle
Return: AH >= 80h on error
       AH < 80h if successful
           AL = character
SeeAlso: AX=0101h
----------690103-----------------------------
INT 69 - DECnet DOS CTERM - STATUS
       AX = 0103h
       DX = session handle
Return: AH status flags
           bit 7 session has been aborted
               6 DECnet error
               1 trace data available
               0 receive data available
       AL = reason code if DECnet error
           00h normal disconnect
           01h unknown message from host
           02h protocol violation from host
           03h could not process the initiate message
           04h error receiving message from host
           05h error sending message to host
           06h error checking for message from host
           07h remote system does not support CTERM
           08h remote system does not support correct protocol version
           09h did not receive BIND message from host
           0Ah could not send BIND message to host
           0Bh no more sessions available
           0Ch session does not exist
           0Dh not enough memory to complete operation
           0Eh connection has broken
SeeAlso: AX=0104h
----------690104-----------------------------
INT 69 - DECnet DOS CTERM - DECnet STATUS
       AX = 0104h
       DX = session handle
Return: AX = reason code (see AX=0103h)
Note:   use this call when AX=0103h returns a DECnet error
SeeAlso: AX=0103h
----------690105-----------------------------
INT 69 - DECnet DOS CTERM - OPEN SESSION
       AX = 0105h
       DS:BX -> ASCIZ node name
       ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
Return: AX <= 0 on error
       AX > 0 session handle
SeeAlso: AX=0103h,AX=0106h,AX=010Ah
----------690106-----------------------------
INT 69 - DECnet DOS CTERM - CLOSE SESSION
       AX = 0106h
       DX = session handle
Return: AH = 00h good close
          other error code (see AX=0103h)
SeeAlso: AX=0103h,AX=0105h
----------69010A-----------------------------
INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
       AX = 010Ah
Return: AX = length of session control block in bytes
SeeAlso: AX=0105h
----------69010B-----------------------------
INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
       AX = 010Bh
       DX = session handle
Return: AX > 0  DECnet socket for the session
          = 0  no match for handle
----------69010F-----------------------------
INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
       AX = 010Fh
Return: AH = 00h succesful uninstall
          other error code
Note:   CTERM must have been the last TSR loaded in order to deinstall it
SeeAlso: AX=0100h
----------690A-------------------------------
INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
       AH = 0Ah
       AL = function
           00h initialize
           01h open portal
           02h close portal
           03h enable multicast address
           04h disable multicast address
           05h transmit
           06h request transmit buffer
           07h deallocate transmit buffer
           08h read channel status
           09h read datalink portal list
           0Ah read information about a datalink portal
           0Bh read and/or clear counters
           0Ch request to boot from a network server
           0Dh enable Ethernet channel
           0Eh disable Ethernet channel
           0Fh start MOP/send a System ID message
           10h stop MOP
           11h get DECPARM
           12h set DECPARM
           13h external loopback
       ES:BX -> Datalink Communication Block
Return: AX = status
           00h successful
           01h hardware failed to initialize
           02h channel state was not off (must be off to execute that command)
           03h channel state is off (must be on to execute that command)
           04h address not set
           05h hardware missing
           06h buffer too small
           07h no more buffers available
           08h no more resources available
           09h promiscuous receiver active
           0Ah non exclusive
           0Bh unrecognized portal
           0Ch protocol type in use
           0Dh not a valid Multicast address
           0Eh outstanding calls
           0Fh hardware doesn't support receiving bad frames
           10h none outstanding
           11h no events
           12h broken
           13h buffer quota exceeded
           14h already initialized
           15h loopback failure
SeeAlso: INT 6D"DECnet"

Format of Datalink Communication Block
Offset  Type    Description
00h    WORD    portal ID
02h  6 BYTEs   source address
08h  6 BYTEs   destination address
0Eh    DWORD   buffer pointer
12h    WORD    buffer length
14h    WORD    operation
16h    BYTE    pad flag (used on open)
                   00h no pad
                   01h pad
17h    BYTE    mode flag (used on open)
                   00h 802.3
                   01h Ethernet
                   02h promiscuous
18h    DWORD   line status change function
1Ch    DWORD   received data function
20h    DWORD   transmitted data function
24h    BYTE    maximum outstanding transmits/receives
25h  2 BYTEs   protocol type
27h    WORD    buffers lost
----------696996-----------------------------
INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
       AX = 6996h
       DS:DX -> interrupt handler or 0000h:0000h to disable
Return: AX = 9669h
Notes:  ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
         a program to provide hardware interrupt handlers even while being
         debugged with a debugger that swaps interrupt vectors during
         debugging.
       the interrupt vector which is to be reflected is set at installation
         time and cannot be changed
----------6A---------------------------------
INT 6A - OPTHELP.COM
Notes:  OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
         assembler
       may be configured to use any interrupt from 60h to 7Fh (default 6Ah)
----------6A---------------------------------
INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
Note:   the 3 bytes preceding the interrupt handler are "LAT"; this serves as
         the installation check
----------6A01--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
       AH = 01h
       DH = FFh
       AL = character
       DL = handle
Return: AH >= 80h on error
SeeAlso: AH=02h
----------6A02--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
       AH = 02h
       DH = FFh
       DL = handle
Return: AH < 80h if successful
           AL = character
       AH >= 80h on error
SeeAlso: AH=01h
----------6A03--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
       AH = 03h
       DH = FFh
       DL = handle
Return: AH = status flags
           bit 5 transmit buffer empty
               3 session in start state
               2 session not active
               1 unable to queue transmit data
               0 receive data available
----------6AD0--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
       AH = D0h
       DH = FFh
       AL = FFh no password
          = 0Fh password at ES:DI
       ES:BX -> LAT session control block (see below)
       ES:DI -> 16-byte blank-padded password
Return: AH = 00h success
           DL = handle
SeeAlso: AX=D000h

Format of LAT Session Control Block:
Offset  Size    Description
00h 18 BYTEs   service name
12h 18 BYTEs   node name (future use)
24h 18 BYTEs   port name (future use)
36h    DWORD   -> session stopped post routine
3Ah    DWORD   -> service table overflow post routine
3Eh    DWORD   -> transmit post routine
42h    DWORD   -> receive post routine
46h    WORD    session status
               04h circuit failure
               08h stop slot received
48h    WORD    slot state (LAT driver use)
4Ah    WORD    local credits (LAT driver use)
4Ch    DWORD   -> VCB (LAT driver use)
50h    WORD    backward slot (LAT driver use)
52h    WORD    forward slot (LAT driver use)
54h    WORD    remote slot ID (LAT driver use)
56h    WORD    local slot ID (LAT driver use)
58h    WORD    slot byte count (LAT driver use)
5Ah    BYTE    remote credits (LAT driver use)
5Bh 255 BYTEs  transmitted data slot
15Ah    BYTE    number of receive data slots (4 recommended)
15Bh    BYTE    number of occupied slots
15Ch    BYTE    index of next receive slot to use
15Dh    BYTE    index of current receive slot
15Eh    WORD    pointer to first received character
160h  N WORDs   pointers to receive slots (buffers); each is 259 bytes
Note:   set post routines to 0000h:0000h if polled operation will be used
----------6AD000DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
       AX = D000h
       DH = FFh
       DL = handle
Return: AX = 0000h successful
          = 0001h no such session
          = 0002h session not running, try again later
SeeAlso: AH=D0h
----------6AD100DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
       AX = D100h
       DH = FFh
       DL = handle
Return: AX = 0000h if successful
       AH bit 7 set if unable to send break
----------6AD300DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
       AX = D300h
       DH = FFh
SeeAlso: AX=D400h
----------6AD400DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
       AX = D400h
       DH = FFh
       CX = buffer size
       ES:BX -> buffer for LAT counters
Return: AX = 0000h counters copied into buffer
          = FFFFh buffer too small
SeeAlso: AX=D300h
----------6AD500DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
       AX = D500h
       DH = FFh
       ES:BX -> 17-byte buffer for name
Return: AH = 00h if successful
          ES:BX buffer filled
       AX = FFFFh if end of table or no name available
Notes:  use this function to get the names of the hosts on the network
       successive calls are necessary to get all names
SeeAlso: AX=D600h
----------6AD600DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
       AX = D600h
       DH = FFh
Return: AX = number of service table entries
       BX = 0000h service table has not overflowed
          = FFFFh service table has overflowed
SeeAlso: AX=D500h
----------6B0000-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
       AX = 0000h
       CX = length
       ES:BX -> buffer
Return: CX = number of bytes written
Note:   also supported by NPC NCSI
SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h
----------6B0100-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
       AX = 0100h
       CX = length of buffer
       ES:BX -> buffer
Return: CX = number of bytes read
Note:   also supported by NPC NCSI
SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AX=FF02h
----------6B02-------------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
       AH = 02h
       AL nonzero
Return: AL = 00h if present and OK
Note:   also supported by NPC NCSI
SeeAlso: AX=0700h
----------6B0600-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
       AX = 0600h
       CX = command
           02h send break
           04h disconnect
           06h hold
Note:   also supported by NPC NCSI
----------6B0700-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
       AX = 0700h
Return: CH <> 00h if connection active
Note:   also supported by NPC NCSI
SeeAlso: AH=02h,AH=10h
----------6B10-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
       AH = 10h
       ???
Return: ???
SeeAlso: AX=0700h,AH=12h,AH=1Fh
----------6B11-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
       AH = 11h
       ???
Return: ???
SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
----------6B12-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
       AH = 12h
       ???
Return: ???
SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
----------6B13-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
       AH = 13h
       ???
Return: ???
SeeAlso: AH=14h,AH=15h
----------6B14-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
       AH = 14h
       ???
Return: ???
SeeAlso: AH=13h,AH=15h,AH=21h
----------6B15-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
       AH = 15h
       ???
Return: ???
SeeAlso: AH=13h,AH=14h
----------6B16-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
       AH = 16h
       ???
Return: ???
SeeAlso: AH=11h,AH=12h,AH=17h
----------6B17-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
       AH = 17h
       ???
Return: ???
SeeAlso: AH=11h,AH=16h
----------6B18-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
       AH = 18h
       ???
Return: ???
SeeAlso: AX=0000h,AH=12h,AH=19h
----------6B19-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
       AH = 19h
       ???
Return: ???
SeeAlso: AX=0100h,AH=12h,AH=18h
----------6B1A-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
       AH = 1Ah
       ???
Return: ???
SeeAlso: AH=12h,AH=1Bh
----------6B1B-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
       AH = 1Bh
       ???
Return: ???
SeeAlso: AH=12h,AH=1Ah
----------6B1C-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE BUFFER CONTROL
       AH = 1Ch
       ???
Return: ???
SeeAlso: AH=1Dh,AH=1Eh
----------6B1D-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
       AH = 1Dh
       ???
Return: ???
SeeAlso: AH=1Ch,AH=1Eh
----------6B1E-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
       AH = 1Eh
       ???
Return: ???
SeeAlso: AH=1Ch,AH=1Dh
----------6B1F-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
       AH = 1Fh
       ???
Return: ???
SeeAlso: AH=10h,AH=12h
----------6B21-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
       AH = 21h
       ???
Return: ???
SeeAlso: AH=14h
----------6B6B-------------------------------
INT 6B - Tandy SCHOOLMATE PLUS - API
       AH = 6Bh
       AL = E0h to FFh
----------6B---------------------------------
INT 6B - VIRUS - "Saddam" - ???
SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
----------6C---------------------------------
INT 6C - system resume vector (CONVERTIBLE)
----------6C---------------------------------
INT 6C - DOS 3.2 Realtime Clock update
----------6C---------------------------------
INT 6C - DECnet DOS network scheduler
SeeAlso: INT 6D"DECnet",INT 6E"DECnet"
----------6D---------------------------------
INT 6D - VGA - internal
Note:   used by IBM, Paradise, Video7, and NCR
----------6D---------------------------------
INT 6D - ATI VGA Wonder - VIDEO BIOS ENTRY POINT
  points at the original INT 10 entry point set up by the ATI BIOS
SeeAlso: INT 10
----------6D---------------------------------
INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
       AH = function
       ???
Return: ???
SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
----------6E---------------------------------
INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
Notes:  this is the main DECnet DOS access, and is described in Digital manual
         AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
       there is a signature/data area immediately prior to the interrupt
         handler which may be used as an installation check

Format of signature area:
Offset  Size    Description
-5     BYTE    major version number
-4     BYTE    minor version number
-3   3 BYTEs   signature (ASCII "DNP")
----------6F22--BP0012-----------------------
INT 6F - HP ES-12 EXTENDED BIOS - READ CMOS MEMORY
       AH = 22h
       BP = 0012h
       BL = address of CMOS byte to read
Return: AH = status
       AL = byte read
       BP, DS destroyed
SeeAlso: BP=0012h/AH=24h
----------6F24--BP0012-----------------------
INT 6F - HP ES-12 EXTENDED BIOS - WRITE CMOS MEMORY
       AH = 24h
       BP = 0012h
       BL = address of CMOS byte to write
       AL = new value
Return: AH = status
       BP, DS destroyed
SeeAlso: BP=0012h/AH=22h
----------6F---------------------------------
INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
----------6F00-------------------------------
INT 6F - 10-NET - LOGIN
       AH = 00h
       DS:DX -> login record (see below)
Return: CL = security level
       AX = status
           0000h successful
           01FFh time out on response
           02FFh network (hardware) error
           03FFh invalid password
           04FFh local resource 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
SeeAlso: AH=01h

Format of login record:
Offset  Size    Description
00h  8 BYTEs   user name
08h  8 BYTEs   password
10h 12 BYTEs   name of SuperStation
----------6F01-------------------------------
INT 6F - 10-NET - LOGOFF
       AH = 01h
       DS:DX -> superstation ID or nulls (12 bytes)
Return: CX = number of files closed
       AX = status (see AH=00h)
           FF08h superstation ID not already logged in
SeeAlso: AH=00h
----------6F02-------------------------------
INT 6F - 10-NET - STATUS OF NODE
       AH = 02h
       DS:DX -> 512-byte status record (see below)
Return: CF set on error
           AX = error code (see AH=00h)
       CF clear if successful

Format of node status record:
Offset  Size    Description
00h  8 BYTEs   user name (0 if none)
08h    BYTE    station type
                  00h workstation
                  01h superstation
                  02h gateway station
                  03h gateway active
                  04h logged into multiple superstations
                  05h reserved
09h 24 BYTEs   list of superstations logged into more than one superstation
21h 12 BYTEs   node ID
2Dh    WORD    message count for this station (send for user node, receive for
               superstations)
---for superstations only---
2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
31h    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
32h    BYTE    printers allocated (bit 0=LPT1,...)
33h    BYTE    number of unprinted spool files
34h    BYTE    number of opened files
35h    BYTE    number of logged on nodes
36h    BYTE    primary drive (1=A:)
37h    BYTE    reserved
38h  N BYTEs   list of logged on node IDs (each 12 bytes, max 37 IDs)
1F4h  3 BYTEs   time: sec/min/hrs
1F7h  3 BYTEs   date: day/mon/year-1980
----------6F03-------------------------------
INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
       AH = 03h
       DS:DI -> node ID (optional)
Return: ES:BX -> configuration table
SeeAlso: AH=13h

Format of configuration table:
Offset  Size    Description
-41     WORD    local device table address
-39     WORD    extended network error mapping table address
-37     WORD    shared device table address
-35     WORD    mounted device table address
-33     BYTE    receive buffer counter
-32     BYTE    collect buffer counter
-31     WORD    TUF address
-29     BYTE    enable flag
-28     BYTE    FCB keep flag
-27     WORD    reserved
---up to here, 10-Net v3.3---
-25     WORD    count of dropped Send6F
-23     WORD    buffer start address
-21     WORD    comm driver base address
-19     WORD    send/receive retry count
-17     BYTE    number of 550ms loops before timeout
-16     WORD    UFH address
-14     WORD    CDIR address
-12     WORD    LTAB address
-10     WORD    SFH address
-8      WORD    FTAB address
-6      WORD    RLTAB address
-4      WORD    SMI address
-2      WORD    NTAB address
00h    WORD    address of first CT_DRV
02h    BYTE    number of DRV entries
03h  8 BYTEs   login name
0Bh 12 BYTEs   node ID (blank-padded)
17h  6 BYTEs   node address
1Dh    BYTE    flag
1Eh    BYTE    CT_CFLG (chat permit)
               bit 1: sound bell
               bit 0: CHAT permit
1Fh    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
20h    BYTE    in 10Net flag
21h    WORD    receive message count
23h    WORD    send message count
25h    WORD    retry count
27h    WORD    failed count
29h    WORD    driver errors
2Bh    WORD    dropped responses/CHATs
2Dh  9 BYTEs   LIST ID/NTAB address (3 entries--LPT1-3)
36h  6 BYTEs   AUX ID/NTAB address (2 entries--COM1-2)
3Ch    BYTE    active CB channel
3Dh    BYTE    received 6F messages on queue
3Eh  9 BYTEs   activity counters for channels 1-9
---beyond here, 10-Net v3.3---
47h    BYTE    bit 0 = RS232 gate
                   1 = Send6F gate (user set)
48h    DWORD   pointer into gate (user set)
4Ch    DWORD   pointer into 10Net send
50h  N WORDs   addresses of timer blocks
----------6F04-------------------------------
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 AH=00h)
       CF clear if successful
SeeAlso: AH=05h
----------6F05-------------------------------
INT 6F - 10-NET - RECEIVE
       AH = 05h
       CX = number of seconds before timeout
       DS:DX -> receive buffer (see below)
Return: CF set on error
           AX = error code (see AH=00h)
       CF clear if successful
           AH = FEh if dequeued message is a CB message
SeeAlso: AH=04h

Format of receive buffer:
Offset  Size    Description
00h 12 BYTEs   sending node's ID
0Ch    WORD    length of message
0Eh  N BYTEs   message (maximum 1024 bytes)
----------6F07-------------------------------
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 AH=00h)
               0002h file not found
       CF clear if successful
SeeAlso: AH=08h,INT 21/AH=5Ch
----------6F08-------------------------------
INT 6F - 10-NET - UNLOCK HANDLE
       AH = 08h
       BX = file handle
       AL = mode
           00h unlock all
           01h unlock record at CX:DX
Return: CF set on error
           AX = error code (see also AH=00h)
               0002h file not found
       CF clear if successful
SeeAlso: AH=07h,INT 21/AH=5Ch
----------6F09-------------------------------
INT 6F - 10-NET - SUBMIT
       AH = 09h
       DS:BX -> submit record (see below)

Format of submit record:
Offset  Size    Description
00h 12 BYTEs   destination node ID (must be logged in)
0Ch    WORD    length+2 of following 'command line' text
0Eh  N BYTEs   command line text (<=100 bytes), system adds CR
----------6F0A-------------------------------
INT 6F - 10-NET - CHAT
       AH = 0Ah
       DS:BX -> control parameters (see below)
       DS:DX -> chat message (see below)

Format of control parameters:
Offset  Size    Description
00h  8 BYTEs   sender ID, defaults to node's userID if nulls
08h  8 BYTEs   destination user ID, 'EVERYONE' may be used
10h 12 BYTEs   destination node ID

Format of chat message:
Offset  Size    Description
00h    WORD    length+2 of following text
02h  N BYTEs   text, max 101 bytes
----------6F0B-------------------------------
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
           00h successful
           01h semaphore currently locked
           02h server not responding
           03h invalid semaphore name
           04h semaphore list is full
           05h invalid drive ID
           06h invalid Ethernet address
           07h not logged in
           08h write to network failed
           09h semaphore already logged in this CPU
Note:   same as INT 60/AH=12h
SeeAlso: AH=0Ch,INT 60/AH=12h
----------6F0C-------------------------------
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 also AH=0Bh)
           01h semaphore not locked
Note:   same as INT 60/AH=13h
SeeAlso: AH=0Bh,INT 60/AH=13h
----------6F0D-------------------------------
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 (see below)
Return: CL = number of records returned (responding stations)

Format of station record:
Offset  Size    Description
00h 12 BYTEs   node ID
0Ch    BYTE    flags
               bit 1 = workstation
                   2 = superstation
                   3 = xgate
                   4 = active gate
---if AL = 01h---
0Dh    BYTE    version number
       WORD    level number of 10Net software in responding node
---if AL = 02h---
0Dh  8 BYTEs   user ID
15h    BYTE    version number
16h    WORD    level number
----------6F0E-------------------------------
INT 6F - 10-NET - SPOOL/PRINT
       AH = 0Eh
       DS:DX -> spool/print record (see below)
Return: CF set on error
           AX = error code (see also AH=00h)
               FF17h device not mounted
               FF18h already spooling to named device
       CF clear if successful

Format of Spool/Print record:
Offset  Size    Description
00h    WORD    operation code
                  00h initiate spool
                  01h abort print
                  02h close spool
                  03h delete spool
                  04h print
                  05h get report info
                  06h set chat template
                  07h queue
                  08h return queue
                  09h queue non-spooled file for printing
02h 11 BYTEs   file name in FCB format
---if operation code = 00h or 06h---
0Dh    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
0Eh    BYTE    days to keep (FFh=forever)
0Fh    BYTE    bits 0,1: device (1=LPT1)
               bits 4-7: remote drive to store spool file (1=A,...)
10h    WORD    length of following data area
12h  N BYTEs   up to 64 bytes of description
---if operation code = 03h---
0Dh  8 BYTEs   user ID to associate with filename
---if operation code = 04h---
0Dh    WORD    block number
0Fh  8 BYTEs   user ID to associate with filename
---if operation code = 05h---
0Dh    BYTE    RRN to start retrieve
0Eh    BYTE    bits 0,1: local print device (LPTx)
               bit 3: if set, return entries for all users
0Fh    WORD    length of following area
11h  N BYTEs   up to 1500 bytes to receive $SCNTL records returned
---if operation code = 07h---
0Dh    BYTE    queue number
0Eh    BYTE    bits 0,1: local print device (LPTx)
0Fh    WORD    number of bytes of test print to be done
11h    BYTE    code: 01h print device
                     02h test print count
                     03h prn
---if operation code = 08h---
0Dh    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
0Eh    WORD    unused
10h    WORD    length of following area
12h  N BYTEs   up to 64 bytes to receive $SCNTL records
---if operation code = 09h---
0Dh  3 BYTEs   unused
10h  N BYTEs   path to non-spooled file to be queued for printing

Format of $SCNTL record:
Offset  Size    Description
00h  8 BYTEs   user ID
08h 11 BYTEs   filename in FCB format
13h  6 BYTEs   node ID
19h  3 BYTEs   creation date
1Ch    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
1Dh    BYTE    retention time in days
1Eh    BYTE    printing device (LPTx)
1Fh  3 BYTEs   date last printed (0 = never)
22h    BYTE    device containing spoolfile
23h    WORD    bytes to print for test print
25h    WORD    block number to start print
27h    BYTE    reserved
----------6F10-------------------------------
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
SeeAlso: INT 21/AX=5D08h
----------6F11-------------------------------
INT 6F - 10-NET - LOCK FCB
       AH = 11h
       AL = mode
           01h sequential
           02h random
           03h random block
               CX = number of records
       DS:DX -> FCB (see INT 21/AH=0Fh)
Return: CF set on error
           AX = error code (see also AH=00h)
               0002h file not found
       CF clear if successful
SeeAlso: AH=12h
----------6F12-------------------------------
INT 6F - 10-NET - UNLOCK FCB
       AH = 12h
       AL = mode
           00h sequential
           01h random
           02h random block
               CX = number of records
       DS:DX -> FCB (see INT 21/AH=0Fh)
Return: CF set on error
           AX = error code (see also AH=00h)
               0002h file not found
       CF clear if successful
SeeAlso: AH=11h
----------6F13-------------------------------
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 AH=00h)
       CF clear if successful
           ES:BX = configuration table address on given machine
SeeAlso: AH=03h
----------6F14-------------------------------
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 AH=00h)
       CF clear if successful
           CX = amount of memory copied to DS:SI
----------6F1501-----------------------------
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 for shared device table entry (see below)
Return: CF set on error
           AX = error code (see AH=00h)
       CF clear if successful
           ES:DI buffer contains shared device table entry of BXth device:
SeeAlso: AX=1502h,AX=1503h

Format of shared device table entry:
Offset  Size    Description
00h  8 BYTEs   device
08h  8 BYTEs   alias
10h 64 BYTEs   path
50h  8 BYTEs   password
58h    BYTE    access
59h  4 BYTEs   mask
----------6F1502-----------------------------
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 AH=00h)
       CF clear if successful
SeeAlso: AX=1501h,AX=1503h
----------6F1503-----------------------------
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 AH=00h)
       CF clear if successful
SeeAlso: AX=1501h,AX=1502h
----------6F17-------------------------------
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 AH=00h)
       CF clear if successful
SeeAlso: AH=18h
----------6F18-------------------------------
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 AH=00h)
       CF clear if successful
SeeAlso: AH=17h
----------70---------------------------------
INT 70 - IRQ8 - CMOS REAL-TIME CLOCK
Notes:  this interrupt is called when the real-time clock chip generates an
         alarm or periodic interrupt, among others.  The periodic interrupt
         occurs 1024 times per second, although many BIOSes turn it off in
         the INT 70h handler unless in an event wait (see INT 15/AH=83h or
         INT 15/AH=86h).
       may be masked by setting bit 0 on I/O port A1h
SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview"
----------70---------------------------------
INT 70 - VIRUS "Stupid" - ???
SeeAlso: INT 6B"VIRUS",INT E0"VIRUS"
----------71---------------------------------
INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS
Notes:  may be masked by setting bit 1 on I/O port A1h
       the default BIOS handler invokes INT 0A for compatibility, since the
         pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
         AT expansion bus.
       under DESQview, only the INT 15h vector and BASIC segment address (the
         word at 0000h:0510h) may be assumed to be valid for the handler's
         process
SeeAlso: INT 0A,INT 59
----------72---------------------------------
INT 72 - IRQ10 - RESERVED
Note:   may be masked by setting bit 2 on I/O port A1h
SeeAlso: INT 5A
----------73---------------------------------
INT 73 - IRQ11 - RESERVED
Note:   may be masked by setting bit 3 on I/O port A1h
SeeAlso: INT 5B
----------74---------------------------------
INT 74 - IRQ12 - POINTING DEVICE (PS)
Notes:  may be masked by setting bit 4 on I/O port A1h
       under DESQview, only the INT 15h vector and BASIC segment address (the
         word at 0000h:0510h) may be assumed to be valid for the handler's
         process
SeeAlso: INT 33,INT 5C
----------75---------------------------------
INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
  redirected to INT 02 by the BIOS, for compatibility with the PC
Notes:  may be masked by setting bit 5 on I/O port A1h
       not all clones wire the coprocessor to generate this IRQ; some systems
         generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
         (see INT 10"COPROCESSOR")
       under DESQview, only the INT 15h vector and BASIC segment address (the
         word at 0000h:0510h) may be assumed to be valid for the handler's
         process
SeeAlso: INT 10"COPROCESSOR",INT 5D
----------76---------------------------------
INT 76 - IRQ14 - HARD DISK CONTROLLER (AT and later)
Note:   may be masked by setting bit 6 on I/O port A1h
SeeAlso: INT 0E"IRQ6",INT 5E
----------77---------------------------------
INT 77 - IRQ15 - RESERVED (AT,PS)
Note:   may be masked by setting bit 7 on I/O port A1h
SeeAlso: INT 5F
----------77---------------------------------
INT 77 - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
Note:   may be masked by setting bit 7 on I/O port A1h
SeeAlso: INT 15/AX=4600h,INT 5F
----------78---------------------------------
INT 78 - UofSalford DBOS DOS extender - API
       BYTE following INT instruction contains function code
           03h switch to protected mode
           1Eh set real-mode memory size (specify how much real-mode memory
                 to leave free when running FTN77 programs)
           22h uninstall
       ???
Return: ???
Note:   DBOS supports functions 00h through 50h
----------78---------------------------------
INT 78 - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ0
Note:   this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 08,INT 10/AH=FFh"GO32",INT 79"GO32"
----------78---------------------------------
INT 78 - AutoCAD 10 ADI for Plotters
       AX = function
           0001h initialize comm port and reset plotter
               BX = ??? (comm port?)
           0002h close plotter
           0003h move (pen up)
               BX = new X position
               CX = new Y position
           0004h move (pen down)
               BX = new X position
               CX = new Y position
           0005h select pen
               BX = pen number
           0006h select drawing speed
               BX = drawing speed N
           0007h select line style
               BX = line style N
           0008h return pen to pen carrier??? (called before change-pen cmd)
Return: ???
SeeAlso: INT 7A"AutoCAD",INT 7B"AutoCAD"
----------78---------------------------------
INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
SeeAlso: INT 79"ADP-60"
----------7800-------------------------------
INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
       AH = 00h
       DX = interface board I/O port
Return: CF set on error
           AL = error code
               00h illegal command given to SCSI code
               01h invalid I/O port specified (must be from 100H to 3F8H, and
                   must be on an 8-port boundary)
               02h invalid DMA channel specified (must be from 1 to 3)
               03h invalid SCSI board number specified (must be from 0 to 7)
               04h error from data register test during self-test
               05h SCSI input signals not all 0 when SCSI RST activated
               06h SCSI input signals not all 0 before selecting a SCSI device
               07h BSY signal is active; SCSI bus is busy
               08h SCSI board not selected, BSY signal did not come on in
                   response to raising SEL
               09h time-out waiting for status state, signifying end of DMA
                   transfer
Note:   if this routine is not called, the port is the driver's default
         (usually 0280h or 0300h)
       an installation check is performed by TARGA.DEV upon initialization
         by checking for the string "SCSI" at offset 03h into the interrupt
         handler
SeeAlso: AH=01h,AH=02h
----------7801-------------------------------
INT 78 - TARGA.DEV - GET I/O PORT
       AH = 01h
Return: DX = current interface board I/O port
SeeAlso: AH=00h,AH=03h"TARGA"
----------7802-------------------------------
INT 78 - TARGA.DEV - SET DMA CHANNEL
       AH = 02h
       AL = interface board DMA channel
Return: CF set on error
       AL = error code (see AH=00h)
Note:   if this routine is not called, the DMA channel is the driver's default
         (usually 3)
SeeAlso: AH=00h,AH=03h"TARGA"
----------7803-------------------------------
INT 78 - TARGA.DEV - GET DMA CHANNEL
       AH = 03h
Return: AL = current interface board DMA channel
SeeAlso: AH=01h,AH=02h
----------7804-------------------------------
INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
       AH = 04h
       AL = SCSI device number
Return: CF set on error
       AL = error code (see AH=00h)
Note:   if this routine is not called, the device number used is the driver's
         default (usually 0)
SeeAlso: AH=02h,AH=05h
----------7805-------------------------------
INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
       AH = 05h
Return: AL = current SCSI device number
SeeAlso: AH=03h"TARGA",AH=04h
----------7806-------------------------------
INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
       AH = 06h
       AL = 00h clear early return mode
          = 01h set early return mode
Note:   if early return mode is set then SCSI will return with no errors
         when the last DMA transfer is started in a call with AH=13h or AH=14h
       if this routine is not called, early return mode is cleared
SeeAlso: AH=13h,AH=14h,AH=15h
----------7808-------------------------------
INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
       AH = 08h
Return: CF set on error
       AL = error code (see AH=00h)
Note:   the SCSI bus is also reset
SeeAlso: AH=09h
----------7809-------------------------------
INT 78 - TARGA.DEV - RESET SCSI BUS
       AH = 09h
Return: AL = error code if carry set (see AH=00h)
SeeAlso: AH=08h
----------7810-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND
       AH = 10h
       DS:SI -> command bytes
Return: AH = SCSI status byte
       CF clear if successful
           AL = SCSI message byte
       CF set on error
           AL = error code (see AH=00h)
SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"

Format of SCSI Command:
Offset  Size    Description
00h    BYTE    length of command
01h    ???     command bytes
----------7811-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
       AH = 11h
       DS:SI -> command bytes
       ES:BX -> data storage area
       CX = number of data bytes to transfer
Return: AH = SCSI status byte
       CF clear if successful
           AL = SCSI message byte
       CF set on error
           AL = error code (see AH=00h)
Note:   this command receives data internally one byte at a time
SeeAlso: AH=10h,AH=13h

Format of SCSI Command:
Offset  Size    Description
00h    BYTE    length of command
01h    ???     command bytes
----------7812-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
       AH = 12h
       DS:SI -> command bytes
       ES:BX -> data storage area
       CX = number of data bytes to transfer
Return: AH = SCSI status byte
       CF clear if successful
           AL = SCSI message byte
       CF set on error
           AL = error code (see AH=00h)
Note:   this command sends data internally one byte at a time
SeeAlso: AH=14h

Format of SCSI Command:
Offset  Size    Description
00h    BYTE    length of command
01h    ???     command bytes
----------7813-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
       AH = 13h
       DS:SI -> command bytes
       ES:BX -> data storage area
       DX:CX = number of data bytes to transfer
Return: AH = SCSI status byte (if early return mode is clear)
       CF clear if successful
           AL = SCSI message byte (if early return mode is clear)
       CF set on error
           AL = error code (see AH=00h)
Note:   this command receives data using DMA
SeeAlso: AH=11h,AH=12h

Format of SCSI Command:
Offset  Size    Description
00h    BYTE    length of command
01h    ???     command bytes
----------7814-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
       AH = 14h
       DS:SI -> command bytes
       ES:BX -> data storage area
       DX:CX = number of data bytes to transfer
Return: AH = SCSI status byte (if early return mode is clear)
       CF clear if successful
           AL = SCSI message byte (if early return mode is clear)
       CF set on error
           AL = error code (see AH=00h)
Note:   this command sends data using DMA
SeeAlso: AH=12h,AH=13h

Format of SCSI Command:
Offset  Size    Description
00h    BYTE    length of command
01h    ???     command bytes
----------7815-------------------------------
INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
       AH = 15h
Return: AH = SCSI status byte
       CF clear if successful
           AL = SCSI message byte
       CF set on error
           AL = error code (see AH=00h)
Note:   if AH=06h was previously called to set the early return mode, this
         function finishes a command AH=13h or AH=14h which returned before
         the last DMA transfer was finished
SeeAlso: AH=06h,AH=13h,AH=14h
----------79---------------------------------
INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
Return: CF set if no keystroke available
           AX = FFFFh
       CF clear if key pressed
           AX = keystroke
Notes:  if a keystroke is available, it is removed from the keyboard buffer
         before being returned
       AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
         AVATAR command codes just as ANSI.SYS interprets ANSI commands
SeeAlso: INT 29
----------79---------------------------------
INT 79 - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ1
Note:   this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 09,INT 78"GO32",INT 7A"GO32"
----------79---------------------------------
INT 79 U - ADP-60 IDE adapter - ???
SeeAlso: INT 78"ADP-60"
----------790001-----------------------------
INT 79 U - AutoCAD Device Interface - DIGITIZER - INITIALIZE
       AX = 0001h
Return: AX = 0001h ??? self-test result???
       BX = 0001h
SeeAlso: AX=0002h,AX=0003h,INT 7A"AutoCAD"
----------790002-----------------------------
INT 79 U - AutoCAD Device Interface - DIGITIZER - CLOSE
       AX = 0002h
SeeAlso: AX=0001h,AX=0003h
----------790003-----------------------------
INT 79 U - AutoCAD Device Interface - DIGITIZER - GET DIGITIZER STATUS
       AX = 0003h
Return: AX = button state
           0002h no button pressed
               BX = X coordinate
               CX = Y coordinate
           0003h Pick button (0,A,B,C,D) pressed
               BX = X coordinate
               CX = Y coordinate
           0005h other button (1-9) pressed
               BX = number of button - 1
               CX = X coordinate
               DX = Y coordinate
Note:   these return values are valid for the Houston Instruments HiPad Plus
         9236 digitizer with a 16-button cursor
SeeAlso: AX=0001h,AX=0002h
----------7A---------------------------------
INT 7A U - Topware Network Operating System - ???
       AL = ???
       ???
Return: ???
SeeAlso: INT 21/AH=FFh"Topware",INT 2F/AX=FF00h
----------7A---------------------------------
INT 7A - AutoCAD Device Interface
       ???
SeeAlso: INT 61/AX=0007h"OPTIMA",INT 78"AutoCAD",INT 79/AX=0001h
SeeAlso: INT 7B"AutoCAD"
----------7A---------------------------------
INT 7A - X.PC Packet software interface
       ES:BX -> parameter block
SeeAlso: INT 60/AX=01FFh
----------7A---------------------------------
INT 7A - Novell NetWare - LOW-LEVEL API - Notes
Note:   this interrupt is used for IPX/SPX access in NetWare versions through
         2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
         entry point even though INT 7A still exists.  For both INT 7A and
         the FAR entry point, BX contains the function number; IPX is
         sometimes called internally with BX bit 15 set.
SeeAlso: INT 2F/AX=7A00h,INT 64"Novell",INT 7A/BX=0000h
----------7A---------------------------------
INT 7A - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ2
Note:   this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0A,INT 79"GO32",INT 7B"GO32"
----------7A----BX0000-----------------------
INT 7A - Novell NetWare - IPX Driver - OPEN SOCKET
       BX = 0000h
       AL = socket longevity
           00h open until close or terminate
           FFh open until close
       DX = socket number (high byte in DL)
           0000h dynamic allocation
           else  socket to open
               0452h Service Advertising Socket
               0456h diagnostics
               4000h-7FFFh used for dynamic allocation
               8000h-FFFFh assigned by Novell
Return: AL = return code
           00h success
               DX = socket number
           FEh socket table full
           FFh socket already open
Notes:  TSRs which need to use sockets should set AL to FFh, non-resident
         programs should normally use AL=00h
       IPX can be configured to support up to 150 open sockets on a
         workstation, and defaults to 20
       this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0001h,BX=0004h
----------7A----BX0001-----------------------
INT 7A - Novell NetWare - IPX Driver - CLOSE SOCKET
       BX = 0001h
       DX = socket number (high byte in DL)
Notes:  also cancels events set by any Event Control Blocks for the socket
       the program must close all open sockets before terminating
       this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0000h
----------7A----BX0002-----------------------
INT 7A - Novell NetWare - IPX Driver - GET LOCAL TARGET
       BX = 0002h
       ES:SI -> target internetwork address (see INT 7A/BX=000Bh)
       ES:DI -> 6-byte buffer for local target
Return: AL = return code
           00h success
              CX = expected one-way transfer time (clock ticks) for a 576-byte
                       packet
              ES:DI -> local target
           FAh unsuccessful (no path to destination)
Notes:  the internetwork address consists of a 4-byte network address followed
         by a 6-byte node address.  The local target is only a 6-byte node
         address.  If the target is in the same network, the local target is
         just the node address of target; otherwise, the local target is the
         node address of the bridge that leads to the target.
       this function may be called from inside IPX and AES Event Service
         Routines, but not from other interrupt handlers
       this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0009h
----------7A----BX0003-----------------------
INT 7A - Novell NetWare - IPX Driver - SEND PACKET
       BX = 0003h
       ES:SI -> Event Control Block (see below)
Notes:  returns immediately; IPX attempts to send the packet in the background
       this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0004h,BX=000Fh

Format of Event Control Block:
Offset  Size    Description
00h    DWORD   Link
04h    DWORD   -> Event Service Routine (00000000h if none)
08h    BYTE    in use flag
               00h available
               FDh AES couting down delay time
               FEh awaiting packet reception
               FFh sending packet
09h    BYTE    completion code (see below)
0Ah    WORD    socket (big-endian)
               0452h Service Advertising Socket
               0456h diagnostics
               other
0Ch  4 BYTES   IPX workspace
10h 12 BYTES   driver workspace
1Ch  6 BYTES   immediate local node address
22h    WORD    fragment count
26h    var     fragment descriptors
               Offset  Size    Description
                00h    DWORD   -> fragment data
                04h    WORD    size of fragment in bytes.
Notes:  ESR is a far procedure that is called when the ECB has been handled.
         On call, the in use flag is zero if the ECB has been handled,
         non-zero otherwise. If the flag is zero, the completion code holds
         the result of the event.
       the first fragment should start with an IPX header
       all fragments are concatenated and sent in one piece
       node address FFh FFh FFh FFh FFh FFh broadcasts to all nodes

Values for ECB completion code:
00h success
ECh remote terminated connection without acknowledging packet
EDh abnormal connection termination
EEh invalid connection ID
EFh SPX connection table full
F9h event should not be cancelled
FCh cancelled
FDh malformed packet
FEh packet undeliverable
FFh physical error

Event Service Routine called with:
       AL = caller's identity (00h = AES, FFh = IPX)
       ES:SI -> event control block
       interrupts disabled

Format of IPX header:
Offset  Size    Description
00h    WORD    checksum (high byte first [big-endian])
02h    WORD    length in bytes (high byte first) of total packet
04h    BYTE    transport control
05h    BYTE    packet type
               00h unknown packet type
               01h routing information packet
               02h echo packet
               03h error packet
               04h packet exchange packet (always use this one)
               05h SPX packet
               11h (used internally)
06h 10 BYTES   destination internetwork address
10h    WORD    destination socket (high byte first)
12h 10 BYTES   source internetwork address
1Ch    WORD    source socket

Format of Service Advertising Protocol Service Query Packet:
Offset  Size    Description
00h 30 BYTEs   IPX header
1Eh    WORD    query type (big-endian)
20h    WORD    server type (big-endian) (see INT 21/AH=E3h"NetWare")

Format of Service Advertising Protocol Server Identification Packet:
Offset  Size    Description
00h 30 BYTEs   IPX header
1Eh    WORD    response type (big-endian)
               0002h general service
               0004h nearest service
20h    WORD    server type (big-endian) (see INT 21/AH=E3h"NetWare")
22h 48 BYTEs   ASCIZ server name
52h  2 WORDs   network number (big-endian)
54h  3 WORDs   node number (big-endian)
5Ch    WORD    socket number (big-endian)
5Eh    WORD    number of hops between caller and server (big-endian)
----------7A----BX0004-----------------------
INT 7A - Novell NetWare - IPX Driver - LISTEN FOR PACKET
       BX = 0004h
       ES:SI -> Event Control Block (see BX=0003h)
Return: AL = status
           FFh no listening socket
Desc:   this function provides IPX with an ECB for receiving an IPX packet, but
         does not wait for a packet to arrive
Notes:  the application must open a socket and initialize the ECB's ESR
         address, socket number, fragment count, and fragment descriptor
         fields before invoking this function
       there is no limit on the number of ECBs which may simultaneously be
         listening on a socket
       this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0000h,BX=0003h
----------7A----BX0005-----------------------
INT 7A - Novell NetWare - IPX Driver - SCHEDULE IPX EVENT
       BX = 0005h
       AX = delay time in clock ticks
       ES:SI -> Event Control Block (see BX=0003h)
Note:   this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0006h,BX=0007h,BX=0008h
----------7A----BX0006-----------------------
INT 7A - Novell NetWare - IPX Driver - CANCEL EVENT
       BX = 0006h
       ES:SI -> Event Control Block (see BX=0003h)
Return: AL = return code
           00h success
           F9h event in use
           FCh event cancelled
           FFh unsuccessful, event not in use
Notes:  cannot cancel packets which the node's driver has already sent
       this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0005h
----------7A----BX0007-----------------------
INT 7A - Novell NetWare - IPX Driver - SCHEDULE SPECIAL EVENT
       BX = 0007h
       AX = delay time
       ES:SI -> Event Control Block (see BX=0003h)
Note:   this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0006h
----------7A----BX0008-----------------------
INT 7A - Novell NetWare - IPX Driver - GET INTERVAL MARKER
       BX = 0008h
Return: AX = interval marker in clock ticks
Notes:  may be used to measure the time elapsed between two events, up to one
         hour
       this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0005h
----------7A----BX0009-----------------------
INT 7A - Novell NetWare - IPX Driver - GET INTERNETWORK ADDRESS
       BX = 0009h
Return: ES:SI -> own internetwork address (see below)
Note:   this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0002h,BX=000Bh

Format of internetwork address:
Offset  Size    Description
00h  4 BYTEs   network number (big-endian)
04h  6 BYTEs   node number within network (big-endian)
----------7A----BX000A-----------------------
INT 7A - Novell NetWare - IPX Driver - RELINQUISH CONTROL
       BX = 000Ah
Desc:   this call indicates that the application is idle and permits the IPX
         driver to do some work
Note:   this function is supported by Advanced NetWare 1.02+
SeeAlso: INT 15/AX=1000h,INT 21/AH=89h,INT 2F/AX=1680h
----------7A----BX000B-----------------------
INT 7A - Novell NetWare - IPX Driver - DISCONNECT FROM TARGET
       BX = 000Bh
       ES:SI -> internetwork address (see below)
Notes:  this function permits the network software on the remote machine to
         remove any virtual connection with the calling machine
       only use in point-to-point networks
       should never be called from within an Event Service Routine
       this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0002h,BX=0009h

Format of internetwork address:
Offset  Size    Description
00h  4 BYTEs   destination network (big-endian)
04h  6 BYTEs   destination node (big-endian)
0Ah  2 BYTEs   destination socket (big-endian)
----------7A----BX000C-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL
       BX = 000Ch
       ???
Return: ???
----------7A----BX000D-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL
       BX = 000Dh
       ???
Return: AX = ???
       CL = ???
----------7A----BX000E-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL
       BX = 000Eh
       ???
Return: ???
----------7A----BX000F-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL - SEND PACKET
       BX = 000Fh
       ES:SI -> Event Control Block (see BX=0003h)
Note:   similar to function 0003h, but apparently does not allow multiple
         fragments
SeeAlso: BX=0003h
----------7A----BX0010-----------------------
INT 7A - Novell NetWare - SPX Driver - INSTALLATION CHECK
       BX = 0010h
       AL = 00h
Return: AL = FFh if SPX loaded
           BH = SPX major version
           BL = SPX minor version
           CX = maximum SPX connections
           DX = SPX connections available
Note:   this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0015h
----------7A----BX0011-----------------------
INT 7A - Novell NetWare - SPX Driver - ESTABLISH SPX CONNECTION
       BX = 0011h
       AL = retry count
       AH = watchdog flag
       ES:SI -> Event Control Block (see BX=0003h)
Return: AL = status
           00h attempting to contact destination socket
           EFh local connection table full
           FDh buffer size not 42 or fragment count not 1
           FFh sending socket not open
       DX = assigned connection ID number
Desc:   attempt to establish a connection with a listening socket
Notes:  there should always be at least two SPX ECB's listening to a socket, so
         that NetWare can perform its internal packet exchanges
       the first fragment should start with a SPX header.  Fill in all
         destination addresses.
       this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h,BX=0015h

Format of SPX header:
Offset  Size    Description
00h    WORD    checksum (big-endian)
02h    WORD    length in bytes of total packet (big-endian)
04h    BYTE    transport control
05h    BYTE    packet type (see INT 7A/BX=0003h)
06h 10 BYTEs   destination internet address
10h    WORD    destination socket (big-endian)
12h 10 BYTEs   source internet address
1Ch    WORD    source socket (big-endian)
1Eh    BYTE    connection control
1Fh    BYTE    datastream type
20h    WORD    source connection ID (big-endian)
22h    WORD    destination connection ID (big-endian)
24h    WORD    sequence number (big-endian)
26h    WORD    acknowledge number (big-endian)
28h    WORD    allocation number (big-endian)
----------7A----BX0012-----------------------
INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX CONNECTION
       BX = 0012h
       AH = watchdog flag
           00h disabled
           01h enabled
       AL = retry count (00h = default)
       ES:SI -> Event Control Block (see BX=0003h)
Notes:  there should always be at least two SPX ECB's listening to a socket, so
         that NetWare can perform its internal packet exchanges
       this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0011h,BX=0013h,BX=0014h
----------7A----BX0013-----------------------
INT 7A - Novell NetWare - SPX Driver - TERMINATE SPX CONNECTION
       BX = 0013h
       DX = connection ID to terminate
       ES:SI -> Event Control Block (see BX=0003h)
Note:   this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0011h,BX=0012h,BX=0014h
----------7A----BX0014-----------------------
INT 7A - Novell NetWare - SPX Driver - ABORT SPX CONNECTION
       BX = 0014h
       DX = connection ID to terminate
Notes:  this function is supported by Advanced NetWare 2.1+
       this function does not tell the other side that the connection has been
         terminated
       also aborts any outstanding Establish Connection, Terminate Connection,
         and Send Sequenced Packet commands
SeeAlso: BX=0011h,BX=0013h
----------7A----BX0015-----------------------
INT 7A - Novell NetWare - SPX Driver - GET SPX CONNECTION STATUS
       BX = 0015h
       DX = connection ID
       ES:SI -> status buffer (see below)
Return: AL = return code
           00h connection still valid
               ES:SI -> status buffer filled
           EEh no such connection
Note:   this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0010h,BX=0011h

Format of status buffer:
Offset  Size    Description
00h    BYTE    connection state
               01h waiting to establish connection
               02h starting (attempting to create connection)
               03h connection established
               04h terminating
01h    BYTE    watchdog flag
               bit 0: used internally by SPX
               bit 1: SPX watchdog is monitoring connection
               bits 2-7: used internally by SPX
02h    WORD    source connection ID (big-endian)
04h    WORD    destination connection ID (big-endian)
06h    WORD    sequence number of next packet sent (big-endian)
08h    WORD    acknowledge number, expected sequence number of next received
               packet (big-endian)
0Ah    WORD    maximum sequence number remote SPX may send without ACK from
               local SPX (big-endian)
0Ch    WORD    remote acknowledge number, next sequence number remote SPX
               expects to receive (big-endian)
0Eh    WORD    remote allocation number, maximum sequence number local SPX
               may send (big-endian)
10h    WORD    connection socket (big-endian)
12h  6 BYTEs   immediate node address--bridge on local network to destination
18h 10 BYTEs   destination internetwork address (see INT 7A/BX=000Bh)
22h    WORD    retransmit count (big-endian)
24h    WORD    estimated roundtrip delay (big-endian)
26h    WORD    retransmitted packets (big-endian)
28h    WORD    suppressed packets (big-endian)
----------7A----BX0016-----------------------
INT 7A - Novell NetWare - SPX Driver - SEND SPX PACKET
       BX = 0016h
       DX = connection ID
       ES:SI -> Event Control Block (see BX=0003h)
Notes:  this function is supported by Advanced NetWare 2.1+
       CX may need to be 0001h ???
SeeAlso: BX=0011h,BX=0017h
----------7A----BX0017-----------------------
INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX PACKET
       BX = 0017h
       ES:SI -> Event Control Block (see BX=0003h)
Notes:  this function is supported by Advanced NetWare 2.1+
       CX may need to be 0001h ???
SeeAlso: BX=0011h,BX=0016h
----------7A----BX0018-----------------------
INT 7A U - Novell NetWare - SPX Driver - INTERNAL
       BX = 0018h
       ???
Return: ???
----------7A----BX0019-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL
       BX = 0019h
       ???
Return: ???
----------7A----BX001A-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL
       BX = 001Ah
       ???
Return: ???
----------7A----BX001B-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL
       BX = 001Bh
       ???
Return: ???
----------7A04-------------------------------
INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
       AH = 04h
       ???
Return: ???
SeeAlso: AH=06h
----------7A06-------------------------------
INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
       AH = 06h
       ???
Return: ???
SeeAlso: AH=04h
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
       AH = 09h
       BX = 8020h (synchronous request)
       CX = 0000h
       DX = ID of session manager (SESSMGR)
       AL = service
           01h get session ID
           02h get session info
           04h dettach from session
           05h attach to session
           06h get list of windows available
           07h get environment of window
           08h get 'PIF' (program information file) info
           0Ah get base window ID
           0Bh get cursor info
       ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
       AH = 09h
       BX = 8020h (synchronous request)
       CX = 0000h
       DX = ID of keyboard manager
       AL = service
           01h connect to keyboard
           02h disconnect from keyboard
           03h read from keyboard
           04h send keystroke to session
           05h disable input
           06h enable input
           07h update status code
       ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
       AH = 09h
       BX = 8020h (synchronous request)
       CX = 00FFh
       DX = ID of window service controller (WSCTRL)
       AL = service
           01h connect to WS control
           02h disconnect from WS control
           03h add a window
           04h change window's position on screen
           05h change window's size
           06h change window's color
           07h change window's position in the presentation space
           08h hide/unhide toggle
           09h enlarge/reduce toggle
           0Ah change screen background color
           0Bh get window's position on screen
           0Ch get window's size
           0Dh get window's color
           0Eh get window's position in the presentation space
           0Fh determine whether hidden
           10h determine whether enlarged
           11h get background color
           12h get window names
           13h delete all windows from profile
           14h pick active window
           15h redraw screen
           16h redraw window
           17h delete a window from profile
           18h get active window
           19h get active screen
           1Ah get window data
           1Bh change window data
           1Ch select active screen
       ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
       AH = 09h
       BX = 8020h
       CX = 00FFh
       DX = ID of PCPSM
       AL = service
           01h define presentation space
           02h delete presentation space
           03h display presentation space
           04h position cursor in presentation space
           05h change default presentation space
       ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
       AH = 09h
       BX = 8020h
       CX = 00FFh
       DX = ID of 3270EML
       AL = service
           01h connect
           02h disconnect
       ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
       AH = 09h
       BX = 8020h
       CX = 00FFh
       DX = ID of OIAM
       AL = service
           01h read Operator Information Area
           02h read OIA subset
       ES:DI -> control block
Return: ???
Note: the OIA is the 25th line on the Host session
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
       AH = 09h
       BX = 8020h
       CX = 00FFh
       DX = ID of XLATE
       AL = service
           01h translate from host characters to ASCII and vice versa
               (determined by control block byte 11)
       ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
       AH = 09h
       BX = 8020h
       CX = 00FFh
       DX = ID of copy service
       AL = service
           01h copy string from one presentation space to another
           02h copy block from one presentation space to another
           03h connect to PC session for copy
           04h disconnect PC session from copy
       ES:DI -> control block
Return: ???
----------7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - Multi-DOS
       AH = 09h
       BX = 8020h
       CX = 00FFh
       ES:DI -> control block
       DX = ID of INDJQRY
               get environment size
          = ID of INDJASY
               request DOS functions from workstation
          = ID of MEMORY
               AL = function
                   01h allocate memory
                   02h deallocate memory
                   03h modify allocated size
Return: ???
----------7A09-------------------------------
INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
       AH = 09h
       BX = request type (4000h async, 8028h synchronous)
       CX = 0000h
       DX = ID of MFIC
       AL = service
          01h connect to host
          02h disconnect from host
          03h read DFT structured data from host
          04h write DFT structured data to host
          05h create a host buffer
       ES:DI -> control block
----------7A13-------------------------------
INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
       AH = 13h
       ???
Return: ???
----------7A7A-------------------------------
INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE
       AH = 7Ah
       ???
Return: AX = 0000h success
            000Eh undefined function code
Note:   this interface is normally on INT 7A but can be changed via device
         driver command line arguments
----------7A81-------------------------------
INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
       AH = 81h
       ES:DI -> 8-char blank-padded gate name
               "SESSMGR ", "KEYBOARD", "WSCTRL  ", "MFIC    ", "PCPSM   ",
               "3270EML ", "COPY    ", "XLATE   ", "OIAM    ", "MEMORY  ",
               "INDJQRY ", or "INDJASY "
Return: DX = gate ID
----------7A83-------------------------------
INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
       AH = 83h
       ???
Return: ???
----------7AFDCB-----------------------------
INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
       AX = FDCBh
Return: DX:AX -> PCS/3270 signature block if loaded (see below)

Format of signature block:
Offset  Size    Description
04h    WORD    PCS/3270 signature (5741h)
06h    WORD    version (0501h = PCS/3270 v1.0)
----------7AFE01-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
       AX = FE01h
       ???
Return: ???
SeeAlso: AX=FE02h
----------7AFE02-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
       AX = FE02h
       ???
Return: ???
SeeAlso: AX=FE01h
----------7AFF01-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
       AX = FF01h
       ES:DI -> API function handler routine
Return: CX = 1200h
SeeAlso: AX=FF02h,AX=FF03h
----------7AFF02-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
       AX = FF02h
Return: CX = 1200h
SeeAlso: AX=FF01h
----------7AFF03-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
       AX = FF03h
       ES:DI -> send/receive function handler routine
Return: CX = 1200h
SeeAlso: AX=FF01h
----------7AFF04-----------------------------
INT 7A U - IBM PC3270 EMUL PROG v3 - INTERNAL ???
       AX = FF04h
       ES:DI -> ???
Return: CX = 1200h
----------7B---------------------------------
INT 7B - Btrieve API (single user)
       DS:DX -> 38-byte parameter record (see below)
Return: return code field set
Note:   Btrieve sets low byte of vector to 33h; this serves as the installation
         check
SeeAlso: INT 21/AX=3000h"Btrieve",INT 2F/AX=AB01h,INT 7F/AX=0200h

Format of Btrieve parameter record:
Offset  Size    Description
00h    DWORD   pointer to data buffer
04h    WORD    data buffer length
06h    DWORD   pointer to 90-byte record containing positioning info
               (should be same for all calls for same file)
0Ah    DWORD   pointer to 38-byte FCB info buffer
               (should be same for all calls for same file)
0Eh    WORD    function code (see below)
10h    DWORD   pointer to file name/key buffer
14h    BYTE    key length
15h    BYTE    key number
16h    DWORD   pointer to status code (see below)
1Ah    WORD    interface code (version specific)
               6176h version 5.10

Values for function code:
00h open
01h close
02h insert
03h update
04h delete
05h get_equal
06h get_next
07h get_prev
08h get_greater
09h get_gr_eql
0Ah get_less
0Bh get_less_eq
0Ch get_first
0Dh get_last
0Eh create
0Fh stat
10h extend
11h set_dir: set directory information
12h get_dir: get directory information
13h begin_trans
14h end_trans
15h abort_trans
16h get_pos: get record position number
17h get_direct: get data by sending record position
18h step_next
19h stop
1Ah version
1Bh unlock
1Ch reset
1Dh set owner
1Eh clear owner
1Fh create supplemental index
20h drop supplemental index
21h step first
22h step last
23h step previous
24h get next extended: get multiple records using a filter
25h get previous extended: get multiple records using a filter
26h step next extended: get multiple records using a filter
27h step previous extended: get multiple records using a filter
28h insert extended: insert one or more records
31h ???
add 50 (32h) to any "get" operation to just return the key data
add 100 (64h) for a single-record wait lock (automatically released on next
               get)
add 200 (C8h) for a single-record nowait lock (nowait lock returns error 54h
               or 55h if record already locked)
add 300 (12Ch) for a multiple-record wait lock (not released until unlock
               called)
add 400 (190h) for a multiple-record nowait lock (nowait lock returns error
               54h or 55h if record already locked)

Values for status code:
00h successful
01h invalid operation
02h I/O error
03h file not open
04h key value not found
05h duplicate key value
06h invalid key number
07h different key number
08h invalid positioning
09h end of file
0Ah modifiable key value error
0Bh invalid file name
0Ch file not found
0Dh extended file error
0Eh pre-image open error
0Fh pre-image I/O error
10h expansion error
11h close error
12h disk full
13h unrecoverable error
14h record manager inactive
15h key buffer too short
16h data buffer length overrun
17h position block length
18h page size error
19h create I/O error
1Ah number of keys
1Bh invalid key position
1Ch invalid record length
1Dh invalid key length
1Eh not a Btrieve file
1Fh file already extended
20h extended I/O error
22h invalid extension name
23h directory error
24h transaction error
25h transaction is active
26h transaction control file I/O error
27h end/abort transaction error
28h transaction max files
29h operation not allowed
2Ah incomplete accelerated access
2Bh invalid record address
2Ch null key path
2Dh inconsistent key flags
2Eh access to file denied
2Fh maximum open files
30h invalid alternate sequence definition
31h key type error
32h owner already set
33h invalid owner
34h error writing cache
35h invalid interface
36h variable page error
37h autoincrement error
38h incomplete index
39h expanded memory error
3Ah compression buffer too short
3Bh file already exists
3Ch reject count reached
3Dh work space too small
3Eh incorrect descriptor
3Fh invalid extended insert
40h filter limit reached
41h incorrect field offset
4Ah automatic transaction abort
4Eh deadlock detected
50h conflict
51h lock error
52h lost position
53h read outside transaction
54h record in use
55h file in use
56h file table full
57h handle table full
58h incompatible open mode
5Ah redirected device table full
5Bh server error
5Ch transaction table full
5Dh incompatible lock type
5Eh permission error
5Fh session no longer valid
60h communications environment error
61h data message too small
62h internal transaction error
----------7B---------------------------------
INT 7B - Eicon Access API (3270/5250 gateways)
----------7B---------------------------------
INT 7B U - AutoCAD ADI INTERFACE
       AX = function
           0000h output blank line
           other ???
Return: ???
Note:   called by AutoCAD to perform its output
SeeAlso: INT 78"AutoCAD",INT 7A"AutoCAD"
----------7B---------------------------------
INT 7B - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ3
Note:   this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0B,INT 10/AH=FFh"GO32",INT 7A"GO32",INT 7C"GO32"
----------7C---------------------------------
INT 7C U - IBM REXX88PC command language
       ???
----------7C---------------------------------
INT 7C - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ4
Note:   this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0C,INT 7B"GO32",INT 7D"GO32"
----------7D---------------------------------
INT 7D - [obsoleted proposal] - ALTERNATE MULTIPLEX INTERRUPT
Note:   this interface proposal has been moved to INT 2D; there are no known
         implementations on INT 7D
SeeAlso: INT 2D, INT 2F
----------7D---------------------------------
INT 7D U - YTERM 1.4 - CLOCK SUPPORT
SeeAlso: INT 7E"YTERM"
----------7D---------------------------------
INT 7D - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ5
Note:   this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0D,INT 7C"GO32",INT 7E"GO32"
----------7D---------------------------------
INT 7D - HyperPAD v2.2 - API ACCESS
Note:   this vector is hooked but immediately passed on (without checking
         whether the previous handler was 0000h:0000h).  The sole purpose of
         this vector is to provide the address of the data area described
         below.

Format of HyperPAD data area:
Offset  Size    Description
-16h   DWORD   pointer to ??? FAR function
-12h   DWORD   pointer to callback setting function
               [C calling conventions, (*callback)(int (_loadds far *)()) ]
-0Eh 6 BYTEs   signature "BRC001"
-08h   DWORD   pointer to previous INT 7D handler
-04h   DWORD   pointer to ??? data
00h            HyperPAD INT 7D handler
----------7E---------------------------------
INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
----------7E---------------------------------
INT 7E U - YTERM 1.4 - ???
SeeAlso: INT 7D"YTERM",INT 7F"YTERM"
----------7E---------------------------------
INT 7E - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ6
Note:   this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0E,INT 7D"GO32",INT 7F"GO32"
----------7F---------------------------------
INT 7F - IBM XGA - ???
----------7F---------------------------------
INT 7F - Halo88 - API
       BX = function
               64h arc
               65h bar
               66h box
               67h circle
               68h clr
               69h default hatch style
               6Ah default line style
               6Bh delhcur
               6Ch delln / deltcur
               6Dh ellipse
               6Eh fill
               6Fh flood
               70h flood2
               71h init graphics
               72h init hcur
               73h init marker
               74h init tcur
               75h inqarc
               76h inqbknd
               77h inqclr
               78h inqerr
               79h inqgcur
               7Ah inqhcur
               7Bh inqmarker
               7Dh inqtcur
               7Eh inqtext
               7Fh lnabs
               80h lnrel
               81h markerabs
               82h markerrel
               83h moveabs
               84h movehcurabs
               85h movehcurrel
               86h moverel
               87h movetcurabs
               88h movetcurrel
               89h movefrom
               8Ah moveto
               8Bh pie
               8Ch polylnabs
               8Dh polylnrel
               8Eh ptabs
               8Fh ptrel
               91h setasp
               92h set color
               93h set font
               94h set hatch style
               95h set line style
               97h settext
               98h set text color
               99h btext
               9Ah setseg
               9Bh display
               9Ch setscreen
               9Eh close graphics
               9Fh ftinit
               A0h ftlocate
               A1h ftext
               A5h set viewport
               A6h set window
               A7h set world
               AAh ftcolor
               ACh initlp
               ADh inqasp
               AEh inqdev
               AFh inqdisplay
               B0h inqft
               B1h inqftcolor
               B2h inqinterlace
               B3h inqlpa
               B4h inqlpg
               B5h inqmode
               B6h inqscreen
               B7h inqversion
               B8h roam
               B9h scroll
               BAh setieee
               BBh set interlace
               BCh shift
               BDh start graphics
               BEh vpan
               CBh gwrite
               CCh gread
               CDh setxor
               CEh rbox
               CFh rcir
               D0h rlnabs
               D1h rlnrel
               D2h delbox
               D3h delcir
               D5h setseg2
               DCh worldoff
               DDh mapwtod
               DEh mapdtow
               DFh mapwton
               E0h mapntow
               E1h mapdton
               E2h mapntod
               E3h inqworld
               E4h inqviewport
               E5h set line width
               E6h lnjoint
               E7h set locator
               E8h read locator
               E9h setdev
               EBh setstext
               ECh setstclr
               EDh setstang
               EEh stext
               EFh inqstext
               F0h setdegree
               F1h inqstsize
               F2h polyfabs
               F3h polyfrel
               F4h inqdrange
               F5h inqstang
               F6h orglocator
               F7h inqlocator
               F8h inqarea
               F9h setipal
               FAh setborder
               FBh inqcrange
               FEh setclip
               FFh fcir
              100h setcrange
              101h setdrange
              102h setlattr
              103h polycabs
              104h polycrel
              108h memcom
              109h memexp
              10Ah memmov
              10Eh movefx
              10Fh movetx
              110h inqrgb
              111h save image
              112h restore image
              113h setapal
              114h setxpal
              118h inqtsize
              12Eh gprint
              130h setprn
              131h setpattr
              133h setbattr
              135h pexpand
              136h ptnorm
              137h pfnorm
              13Bh inqprn
              13Ch lopen
              13Dh lclose
              13Eh lappend
              13Fh lrecord
              140h lswitch
              142h inqfun
              15Dh lsetup
              15Eh lrest
              15Fh lsave
       additional parameters on stack
Return: ???
Notes:  Halo88 is a suite of graphics routines
       according to Stuart Kemp, the code appears to make no provisions for
          chaining
----------7F---------------------------------
INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
       AL = request ID
           01h "Request"/"RequestDirect"
               ES:BX -> pRq
               DX ignored
           04h "Wait"
               ES:BX -> ppMsgRet
               DX = exchange
           05h "AllocExch"
               ES:BX -> pExchRet
           06h "DeAllocExch"
               DX = exchange
           07h "Check"
               ES:BX -> ppMsgRet
               DX = exchange
       CX = 4354h ('CT')
Return: AX = status
           0000h successful
----------7F---------------------------------
INT 7F - Telebit ACS SERIAL I/O
       ES:SI-> parameter block
Return: CF set on error
       CF clear on success
Notes:  the signature "PDGATEWRKSTNIF" appears just prior to the interrupt
         handler; this serves as the installation check

Format of Telebit ACS parameter block:
Offset  Size    Description
00h    BYTE    command
                   3Ch status
                   3Dh connect
                   3Eh disconnect
                   3Fh read
                   40h data/command write
                   41h clear receive buffer
                   42h get configuration
                   43h get receiver status
                   44h raw write
                   45h search servers
                   46h set transmit buffer size
01h    BYTE    gateway number
02h    BYTE    reserved
03h    BYTE    port
04h 17 BYTES   auxiliary buffer
15h    BYTE    session
16h    WORD    count of bytes passed to API
18h    DWORD   buffer pointer passed to/from API
1Ch    WORD    count of bytes passed from API
1Eh    BYTE    return code (see below)

Values for return code:
00h - success
01h - invalid session
05h - servername invalid
06h - netware fileserver bindery is locked
07h communication server not active
08h general failure in netware fileserver
09h not logged into a fileserver
10h connection table full
11h no response from communication server
12h connection attempt terminated abnormally
13h connection refused - no sessions available
14h gw_no/port already in use
15h invalid connection response
16h port invalid
17h incorrect version in server response
18h gw_no/port combination not configured
19h initialization has not been completed
20h no more sockets are available
21h no active poolname
23h FATAL internal interface error
24h registration of host workstation failed - name is already in used
25h registration of host workstation failed - workstation name table full
26h registration of host workstation failed - only one session may be
       registered for dial-in
FFh telebit acs api is busy - retry later
----------7F---------------------------------
INT 7F - Non-dedicated NetWare 2.x File Server - ENTER CONSOLE MODE
Notes:  the installation check consists of checking for the signature "Lynn"
         in the four bytes preceding the interrupt handler; if present, the
         current program is running as a DOS task on a non-dedicated NetWare
         2.x file server.
       Before placing the server into "console" mode, it is recommended that
         NetWare broadcast messages be disabled with INT 21/AX=DE00h.
SeeAlso: INT 21/AX=DE00h
----------7F---------------------------------
INT 7F U - YTERM - ???
SeeAlso: INT 7E"YTERM"
----------7F---------------------------------
INT 7F - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ7
Note:   this vector is overwritten when GO32 starts but is not restored
SeeAlso: INT 0F,INT 7E"GO32"
----------7F---------------------------------
INT 7F - Canon IXHND2 Scanner Interface
----------7F---------------------------------
INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX)
Notes:  the words at C800h:0000h and C800h:0002h will both be 584Eh if the
         MW386 multitasking system is present (i.e. signature "NXNX")
       NTNX allows its API to be placed on a different interrupt than 7Fh at
         load time.  To determine the actual vector used, open the device
         "SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
         INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
         be the actual interrupt number being used; the other interrupts may
         be found with INT 7F/AH=09h/CL=03h
----------7F---------------------------------
INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK
Note:   a program may determine that it is running on an ANSK Slave by checking
         the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
         address is RAM, and should not be written.  However, the above check
         will not work on Slaves with <1MB RAM or those using the SLIM.SYS
         device driver
----------7F00-------------------------------
INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
       AH = 00h
       DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status
           00h successful
           01h invalid function
           02h semaphore already locked
           03h unable to lock semaphore
           04h semaphore space exhausted
           05h host/target PC did not respond (NTNX)
       AH = semaphore owner if status=02h
SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
----------7F01-------------------------------
INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
       AH = 01h
       DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see AH=00h)
       AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=02h,AH=41h
----------7F0104BX0000-----------------------
INT 7F - HLLAPI (IBM 3270 High-Level Language API)/LLAPI (Rabbit Low Level API)
       AX = 0104h (HLLAPI gate ID)
       BX = 0000h
       DS:SI -> parameter control block (see below)
Return: parameter control block updated
SeeAlso: AX=0105h,AX=ABCDh

Format of parameter control block:
Offset  Size    Description
00h  3 BYTEs   signature = 'PCB'
03h    BYTE    function number (see below)
04h    WORD    segment of control string
06h    WORD    offset of control string
08h    WORD    length of control string, unless explicit end-of-str char set
0Ah    BYTE    unused (IBM)
               ControlString[0] (Rabbit)
0Bh    WORD    return code
0Dh    WORD    maximum length of control string (IBM)
               unused (Rabbit)

Values for HLLAPI function number:
00h    Query system (Attachmate implementation only)
01h    Connect presentation space
02h    Disconnect presentation space
03h    Send string of keystrokes as if typed from keyboard
04h    Wait ~60s, returns status of presentation space
05h    Copy current presentation space into a user-defined buffer
06h    Search presentation space for first occurrence of a specified string
07h    Query cursor location in current presentation space
08h    Copy part or all of current presentation space into user buffer
09h    Set session parameters; parameters vary by vendor
0Ah    Get info on sessions currently connected
0Bh    Lock current presentation space
0Ch    Unlock previously locked presentation space
0Dh    Return copy of operator info area (OIA) of current presentation space
0Eh    get attribute byte for given position in the current presentation space
0Fh    copy string of characters to the current presentation space
10h    workstation control functions
11h    storage manager functions, intended primarily for BASIC applications
       (not implemented by Rabbit)
12h    set delay period in half-second intervals
14h    get info on level of workstation support used
15h    reset session parameters to default values
16h    get detailed info on the current session
17h    start host notification to application on presentation sp or OIA update
18h    check host update when host notification enabled
19h    stop host notification
1Eh    search field within current presentation space for string
1Fh    get first positionof a selected field in the current presentation space
20h    get length of specified field
21h    copy string into a specified field
22h    copy specified field into a user-defined buffer
23h    create alternate presentation space (IBM only), don't use with BASIC
24h    switch to alternate presentation space (IBM only), not with BASIC
25h    display cursor in specified area (IBM only), don't use with BASIC
26h    display alternate presentation space (IBM only), don't use with BASIC
27h    delete alternate presentation space (IBM only), don't use with BASIC
32h    start intercepting keystrokes to allow filtering
33h    get keystrokes after turning on interception
34h    notify operator when keystroke rejected by filter subroutine
35h    stop intercepting keystrokes
5Ah    send file
5Bh    receive file
5Ch    run a program (not implemented by Rabbit)
5Dh    execute DOS command (not implemented by Rabbit)
63h    change presentation space position to PC display row/col or vice versa
FFh    Get info on DCA implementation

Values for LLAPI function number:
80h    initialize LLAPI (internal call)
83h    set Session ID (one-character ID)
84h    read Session ID (one-character ID)
85h    lock 327x keyboard
86h    unlock 327x keyboard
87h    wait for Clear to Send
88h    type ASCII character
89h    type 327x key
8Ah    read keyboard lock state
8Fh    force screen update
90h    view session
91h    relinquish (suspend foreground until background becomes idle)
92h    poke screen character
93h    poke translated character
94h    peek screen character
95h    peek translated character
96h    set cursor position
97h    send scan code (Rabbit only)
98h    synchronize (returns after keystroke queue empty)
99h    type PC key (Rabbit only)

Session Parameters for function 09h:
ASCII          ??? (Rabbit only)
ATTRIB         return attributes in hex
NOATTRIB       return attributes as blanks
CONPHYS        make physical connection
CONLOG         only make logical connection
EAB            copy extended attribute bytes along with data
NOEAB          copy data only
ESC=n          set escape character to "n" (default '@')
EOT=n          set end of string character (default 00h)
FPAUSE         full-duration pause
FTNOWAIT       return immediately from functions 5Ah and 5Bh (Rabbit only)
FTWAIT         wait for file transfer to complete (Rabbit only)
IPAUSE         interruptible pause
RABESC         ??? (Rabbit only)
NORABESC       ??? (Rabbit only)
SCANCODE       ??? (Rabbit only)
STRLEN         use explicit string lengths
STREOT         use terminated strings
SRCHALL        search entire presentation space
SRCHFROM       search from specified offset
SRCHFRWD       search forward from position 1
SRCHBKWD       search backward from last position in presentation space
TIMEOUT=n      ??? (Rabbit only)
TWAIT          wait specified time for keyboard ready
LWAIT          wait until keyboard ready
NWAIT          no wait
TRON           enable tracing
TROFF          disable tracing
AUTORESET      send reset before sending keys with function 03h
NORESET        don't send reset
QUIET          don't display messages sent with INT 21/AH=09h
NOQUIET        allow messages to be displayed
TIMEOUT=n      set timeout in 30-second intervals, 0 = wait until ^Break
XLATE          translate extended attribute bytes
NOXLATE        don't translate
NEWRET         use HLLAPI v3.0 return code conventions
OLDRET         use HLLAPI v2.0 return code conventions
----------7F0105-----------------------------
INT 7F - HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
       AX = 0105h
Return: CF set on error
       CF clear if successful
           CX:DX -> array of FAR pointers to entry points
Note:   most functions are invoked by pushing the DWORD parameter block pointer
         and then performing a FAR call via the appropriate vector of the
         entry point array
SeeAlso: AX=0104h,AX=ABCDh

Function numbers: (do FAR call via entry_points+4*function)
08h    HOPEN
10h    HINT
13h    HLDPAL
15h    HBBW
17h    HBBR
18h    HBBCHN
1Dh    HQMODE
22h    HCLOSE
30h    HINIT
31h    HSYNC
39h    HSPAL
3Ah    HRPAL
----------7F02-------------------------------
INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
       AH = 02h
       DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status
           00h successful
           01h invalid function
           02h semaphore locked by other user
               AH = semaphore owner
           03h unable to unlock semaphore
           05h target PC did not respond
SeeAlso: AH=00h,AH=01h,AH=42h
----------7F0200-----------------------------
INT 7F - Btrieve Multi-User - GIVE UP TIME???
       AX = 0200h
SeeAlso: INT 21/AX=3000h"Btrieve",INT 2F/AX=AB01h,INT 2F/AX=AB02h
SeeAlso: INT 7B"Btrieve"
----------7F03-------------------------------
INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER
       AH = 03h
Return: AL = user number
       AH = machine number (MW386)
Note:   this function call is the recommended method for a CPU-bound process to
         prevent its priority from being lowered
SeeAlso: AH=04h,AH=05h,AH=A1h
----------7F04-------------------------------
INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS
       AH = 04h
Return: AL = total number of users on currrent machine (MW386)
       AL = number of slaves on system (NTNX)
SeeAlso: AH=03h
----------7F05-------------------------------
INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL
       AH = 05h
       AL = function
           00h lock system (disable slave services)
           01h unlock system
           02h enable spooler
           03h disable spooler
           04h enable slave timer update
           05h disable slave timer update
           06h enable form feeds
           07h disable form feeds
SeeAlso: INT 17/AH=A4h
----------7F05-------------------------------
INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
       AH = 05h
       DX:DI -> buffer for user information record (see below)
Notes:  MW386 provides this function for backward compatibility only, and sets
         many of the fields to zero because they are meaningless under MW386
       this function has no effect when called by the host (user 0)
SeeAlso: AH=03h

Format of user information record:
Offset  Size    Description
00h    WORD    segment of video RAM
02h    WORD    segment of secondary copy of video RAM
04h    WORD    offset of screen update flag (see INT 10/AH=8Bh)
               flag nonzero if update needed
06h    WORD    video NMI enable port
               (not used by MW386, set to 0000h)
08h    WORD    video NMI disable port
               (not used by MW386, set to 0000h)
0Ah    BYTE    processor type
               00h 8088
               01h V20
               02h 8086
               03h V30
               06h 80386
0Bh    WORD    multitasking flag (00h = single tasking, 01h = multitasking)
               (not used by MW386, set to 0000h)
0Dh    WORD    offset of terminal driver
               (not used by MW386, set to 0000h)
0Fh    BYTE    port for console I/O
               (not used by MW386, set to 0000h)
10h    WORD    offset of processor communication busy flag
               bit 7 set when slave communicating with host
12h    WORD    pointer to FAR NX system call
               (not used by MW386, set to 0000h)
14h    WORD    offset of 16-byte user configuration record (see AH=38h)
16h    WORD    offset of command/status word
18h    WORD    offset of screen valid flag (see INT 10/AH=93h)
               nonzero if screen must be repainted
1Ah    WORD    offset of screen repaint flag
1Ch    WORD    pointer to NEAR NX system call
               (not used by MW386, set to 0000h)
1Eh    WORD    offset for intercept flags
               (not used by MW386, set to 0000h)
               intercept flag = FFh if MSDOS intercepts should be disabled
20h    WORD    offset of terminal lock flag (see INT 10/AH=92h)
               lock flag = FFh if backgrnd screen updates should be suspended
22h 26 BYTEs   reserved
----------7F06-------------------------------
INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO
       AH = 06h
       AL = drive number (1=A:, 2=B:, etc)
       ES:DI -> drive info record (see below)
Return: AX = status
           0000h successful
               ES:DI buffer filled
           0001h not shared drive

Format of drive info record:
Offset  Size    Description
00h    WORD    segment of drive IO-REQUEST structure (MSDOS DPB)
02h    WORD    segment of allocation map (owner table)
               one byte per FAT entry, containing user ID owning that entry
04h    WORD    segment of master FAT for drive (copy of FAT on disk)
06h    WORD    pointer to configuration file
08h    WORD    total number of clusters
0Ah    WORD    bytes per sector
0Ch    WORD    sectors per cluster
0Eh    BYTE    FAT type (0Ch = 12-bit, 10h = 16-bit)
----------7F06-------------------------------
INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE
       AH = 06h
       DL = drive number (1=A:,2=B:,etc)
       CX = number of clusters to allocate
Return: AH = status
           00h successful
               CX = number of clusters still free
           10h invalid shared drive request
               CL = first and second shared drives
           11h invalid cluster count (must be 01h-FFh)
----------7F07-------------------------------
INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
       AH = 07h
Return: ES:DI -> shared drive list (see below)
Note:   MW386 considers all fixed disks to be shared drives; only C and D will
         be returned as shared

Format of shared drive list:
Offset  Size    Description
00h    BYTE    string length
01h    BYTE    number of shared drives
02h  N BYTEs   one byte per shared drive
----------7F08-------------------------------
INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS
       AH = 08h
       CL = function
           00h get original interrupt vector
           01h get Network Executive interrrupt
       AL = interrupt number
       DX:SI -> DWORD to hold interrupt vector
Return: AL = status
           00h successful
           01h interrupt vector not used by network executive
           02h invalid subfunction
Note:   the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,
         1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh
SeeAlso: AH=09h/CL=03h,INT 21/AH=35h
----------7F08--CL02-------------------------
INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT
       AH = 08h
       CL = 02h
       DX = timeout in seconds
Return: AL = status
           00h successful
           02h invalid subfunction
----------7F09-------------------------------
INT 7F - MultiLink Advanced - SET TASK PRIORITY
       AH = 09h
       AL = priority (0-7)
Note:   the installation check consists of ensuring that the interrupt vector
         is not pointing at segment 0000h, then checking whether the byte
         at offset 0000h in the interrupt handler's segment is E9h
----------7F09-------------------------------
INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING
       AH = 09h
       CL = function
           00h enable checking of RTNX.MUD file
           01h disable RTNX.MUD checking
----------7F09--CL02-------------------------
INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE
       AH = 09h
       CL = 02h
Note:   in dedicated mode, the host will only poll for I/O requests from the
         slave processors, and not provide workstation services
----------7F09--CL03-------------------------
INT 7F - Alloy NTNX,MW386 - GET ALTERNATE INTERRUPT
       AH = 09h
       CL = 03h
       AL = default interrupt number (67h,7Fh,etc)
Return: CL = actual interrupt which handles specified interrupt's calls
SeeAlso: AH=08h
----------7F0A--CL00-------------------------
INT 7F - Alloy NTNX - GET SYSTEM FLAGS
       AH = 0Ah
       CL = 00h
       ES:DI -> buffer for system flags (see below)
Return: ES:DI buffer filled
Notes:  on a slave, only the NX_Busy flag is returned
       all three flags are at fixed positions, so this function only needs to
         be called once
       an interrupt handler should only perform DOS or device accesses when
         all three flags are 00h

Format of system flags:
Offset  Size    Description
00h    DWORD   pointer to NX_Busy flag (nonzero when communicating with users)
04h    DWORD   pointer to device driver busy flag
08h    DWORD   pointer to InTimer flag
----------7F0B--CL02-------------------------
INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE
       AH = 0Bh
       CL = 02h
       AL = slave ID number
       CH = DOS to activate
           00h graphics DOS
           01h character DOS
Return: AL = status
           00h successful
           01h nothing done, proper DOS type already loaded
----------7F10--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL
       AH = 10h
       CL = 00h
       AL = channel number
       DX:DI -> channel buffer
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
           0Dh unable to open
Note:   may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h
----------7F10--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
       AH = 10h
       CL = 01h
       AL = channel number
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
           0Ah channel not open
Note:   may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
----------7F10--CL02-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
       AH = 10h
       CL = 02h
       AL = channel number
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
           0Ah channel not open
           0Ch channel already locked
Note:   may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
----------7F10--CL03-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
       AH = 10h
       CL = 03h
       AL = channel number
Return: AL = status (see AH=10h/CL=02h)
Notes:  should only be used on channels locked with AH=10h/CL=02h, not on those
         locked by receipt of a datagram
       may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h
----------7F10--CL04-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
       AH = 10h
       CL = 04h
       AL = channel number
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
Notes:  unlocks buffer after received datagram has been processed
       may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=00h
----------7F10--CL05-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
       AH = 10h
       CL = 05h
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
Notes:  clears all pending datagrams and clears buffer pointers before closing
         the channels
       may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=01h
----------7F10--CL06-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
       AH = 10h
       CL = 06h
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
Note:   may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
----------7F10--CL07-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
       AH = 10h
       CL = 07h
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
Notes:  unlocks all locked channels which have no pending datagrams
       may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h
----------7F10--CL08-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS
       AH = 10h
       CL = 08h
       DX = maximum channel number to lock
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
Notes:  locks channels numbered 00h through the value in DX
       may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h
----------7F10--CL09-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS
       AH = 10h
       CL = 09h
       DX = maximum channel number to unlock
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
Notes:  unlocks channels numbered 00h through the value in DX
       may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h
----------7F11-------------------------------
INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
       AH = 11h
       DX:SI -> request block (see below)
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
           0Ah packet too large (or <2 bytes if NTNX)
           0Bh can't send packet to itself
           0Ch invalid number of destinations
           0Dh destination channel number out of range
           0Eh destination user is busy
           0Fh destination user has locked channel
           10h channel not open
           11h no datagram server on destination (NTNX)
Note:   if wildcard channel FFh used, actual channel number will be filled in
SeeAlso: AH=12h

Format of request block:
Offset  Size    Description
00h    DWORD   pointer to packet to send
04h    WORD    packet size in bytes (1-4096)
06h    BYTE    number of destinations for packet (max 1Fh)
07h 31 BYTEs   destination user IDs (FFh = broadcast to all except sender)
26h 31 BYTEs   destination channels (FFh = first available channel)
45h 31 BYTEs   return destination statuses
----------7F12-------------------------------
INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM
       AH = 12h
       AL = channel number being acknowledged
       DI:DX = 32-bit status to return to sender
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
           0Ah channel not open
           0Bh no message in channel
           0Ch destination slave busy--retry (NTNX)
           0Dh destination user not active
           0Eh destination slave not active (NTNX)
           0Fh destination disabled datagram service
Note:   also unlocks the channel, allowing the next datagram to be received
SeeAlso: AH=11h,AH=15h/CL=04h
----------7F13--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS
       AH = 13h
       CL = 00h
Note:   clears all pending datagrams and removes all channels opened in NTNX
         compatibility mode
----------7F14--CL00-------------------------
INT 7F - Alloy NTNX, MW386 -  SET RECEIVE ISR
       AH = 14h
       CL = 00h
       DX:DI -> application FAR receive service routine (see below)
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h

Service routine called with:
       DH = sender ID
       DL = channel with datagram
       interrupts disabled
Return: AL = response code
           00h leave buffer locked, set channel status, and repeat call later
           01h release channel buffer
           02h change buffer pointer to DX:DI
       AH,CX,DX,DI,SI may be destroyed
----------7F14--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
       AH = 14h
       CL = 01h
       DX:DI -> application FAR acknowledge service routine (see below)
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
Note:   the service routine will be called as soon as an acknowledgment arrives
SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15/CL=04h

Service routine called with:
       DS:SI -> acknowledge structure (see AH=15h/CL=04h)
Return: AL = response code
           00h application busy, network executive should call again later
           01h acknowledge accepted
       AH,DX,SI may be destroyed
----------7F14--CL02-------------------------
INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER
       AH = 14h
       CL = 02h
       AL = channel number
       DX:DI -> receive buffer
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
Note:   may be called from within a receive ISR or when a datagram is pending
SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
----------7F14--CL03-------------------------
INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR
       AH = 14h
       CL = 03h
Return: DX:DI -> current receive ISR
SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h
----------7F14--CL04-------------------------
INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR
       AH = 14h
       CL = 04h
Return: DX:DI -> current acknowledge ISR
SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
----------7F14--CL05-------------------------
INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
       AH = 14h
       CL = 05h
       DX:DI -> buffer for busy structure (see below)
Return: DX:DI buffer filled

Format of busy structure:
Offset  Size    Description
00h    DWORD   pointer to busy flag byte
04h    WORD    fixed port address (FF00h)
----------7F15--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
       AH = 15h
       CL = 00h
       AL = channel number
       DX:DI -> status structure (see below)
Return: AL = status
           00h successful
           01h busy
           02h channel range error (not 00h-3Fh)
           03h invalid subfunction
SeeAlso: AH=15h/CL=01h

Format of status structure:
Offset  Size    Description
00h    BYTE    channel status
               bit 0: channel open
                   1: channel buffer contains received data
                   7: channel locked
01h    BYTE    sender ID
----------7F15--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
       AH = 15h
       CL = 01h
       DX:DI -> full-channel structure
Return: AL = status
           00h successful
           01h busy
           0Ah no datagrams available
Note:   MW386 v1.0 returns the lowest channel with a datagram; newer versions
         and NTNX return the oldest datagram
SeeAlso: AH=15h/CL=00h

Format of full-channel structure:
Offset  Size    Description
00h    BYTE    number of channel with oldest datagram
01h    BYTE    sender ID
----------7F15--CL02-------------------------
INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS
       AH = 15h
       CL = 02h
Return: AH = number of channels available (40h for MW386)
Note:   the application may always assume at least 32 channels available
SeeAlso: AH=15h/CL=03h
----------7F15--CL03-------------------------
INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE
       AH = 15h
       CL = 03h
       DX:DI -> WORD for return value
Return: buffer WORD filled with maximum packet size (4096 for MW386)
SeeAlso: AH=15h/CL=02h
----------7F15--CL04-------------------------
INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
       AH = 15h
       CL = 04h
       DX:DI -> status structure (see below)
Return: AL = status
           00h successful
               DX:DI structure filled
           01h busy
           0Ah no acknowledgement has arrived
SeeAlso: AH=12h,AH=14h/CL=01h

Format of status structure:
Offset  Size    Description
00h    BYTE    sender ID
01h    BYTE    channel number
02h  4 BYTEs   receiver status (see AH=12h)
----------7F16-------------------------------
INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
       AH = 16h
       DX:SI -> transfer structure (see below)
Return: AL = status
           00h successful
           0Ah source or destination out of range
           0Bh transfer kernal busy--try again
Notes:  this call transfers memory contents directly between users; both source
         and destination user IDs may differ from the caller's ID
       no segment wrap is allowed

Format of transfer structure:
Offset  Size    Description
00h    WORD    bytes to transfer
02h    BYTE    source ID
               FEh = caller
03h    DWORD   source address
07h    BYTE    destination ID
               FFh = all slaves except caller
               FEh = caller
08h    DWORD   destination address
----------7F21-------------------------------
INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)
       AH = 21h
       AL = sender's user ID
       DS:DX -> control packet (see below)
Note:   messages or commands are ignored if disabled by the destination user
SeeAlso: AH=22h

Format of control packet:
Offset  Size    Description
00h    BYTE    packet type
               00h message
               01h NTNX command
               02h MW386 command
01h    BYTE    destination user ID or 'A' for all users
02h 62 BYTEs   ASCIZ message (packet type 00h)
               BIOS keycodes terminated by NUL byte (type 01h) or word (02h)
Note:   a maximum of 16 keycodes will be processed for NTNX and MW386 commands
----------7F22-------------------------------
INT 7F - Alloy NTNX - GET MESSAGE
       AH = 22h
Return: pending messages displayed on user's screen
SeeAlso: AH=21h
----------7F24-------------------------------
INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS
       AH = 24h
       CL = function
           00h attach
           01h release
       CH = drive (0=A:,1=B:,etc)
Return: AX = status
           00h successful
           01h invalid request
           02h already attached
           03h not attached
           04h lock table full
Note:   only drives on the current machine may be attached
----------7F24-------------------------------
INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
       AH = 24h
       CL = function
           02h attach host
           03h release host
Return: AX = status
           00h successful
           01h invalid request
           02h already attached
           03h not attached
           04h lock table full
Note:   the host processor may be attached in order to perform I/O via the host
----------7F25--CL00-------------------------
INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION
       AH = 25h
       CL = 00h
Return: AH = version suffix letter
       CH = major version number
       CL = minor version number
SeeAlso: AH=25h/CL=01h
----------7F25--CL01-------------------------
INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
       AH = 25h
       CL = 01h
Return: CL = type
           00h RTNX
           01h ATNX
           02h NTNX
           03h BTNX
           04h MW386
           05h ANSK
SeeAlso: AH=25h/CL=00h
----------7F26--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
       AH = 26h
       CL = 00h
Return: AX = file mode bits
           bit 0: directory protection enabled
               1: extended open enabled
               2: flush on every disk write
               3: flush on every disk write in locked interval
               4: flush on reads from simultaneously opened file
Note:   MW386 does not support file modes, and always returns AX=001Fh
SeeAlso: AH=26h,AH=26h/CL=06h
----------7F26-------------------------------
INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL
       AH = 26h
       CL = check type to set/reset
           01h directory protection
           02h extended open
           03h flush on every disk write
           04h flush on disk write if any lock set during write
           05h flush on all reads if file written
       AL = new state (00h off, 01h on)
SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h
----------7F26--CL06-------------------------
INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE
       AH = 26h
       CL = 06h
Note:   cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h
SeeAlso: AH=26h/CL=00h
----------7F30-------------------------------
INT 7F - Alloy MW386 - GET PORT INFORMATION
       AH = 30h
       CX = MW386 port number
Return: AL = FFh if port not found
          else  driver unit number
              BL = port mode
              BH = port type
                  02h remote
              DH = owner's machine ID
              DL = owner's user ID
SeeAlso: INT 17/AH=8Bh
----------7F31-------------------------------
INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
       AH = 31h
       ???
Return: ???
----------7F37-------------------------------
INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
       AH = 37h
Return: ES:AX -> semaphore table
----------7F37-------------------------------
INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL
       AH = 37h
       DS:DX -> ASCIZ string to display
Note:   if the string is empty, a terminal update will be forced
----------7F38-------------------------------
INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER
       AH = 38h
       AL = new terminal driver number
           FFh dummy driver
           FEh current driver
           FDh load new driver
               DS:SI -> new driver
SeeAlso: AH=39h
----------7F39-------------------------------
INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
       AH = 39h
       AL = new terminal driver number
       DL = user number (FFh = caller)
       DH = machine number if DL <> FFh
Return: CF set if invalid user number
       CF clear if successful
Notes:  only available to supervisors
       the new driver number will not take effect until the user is rebooted
SeeAlso: AH=38h
----------7F3A-------------------------------
INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS
       AH = 3Ah
       DL = user number (FFh = caller)
       DH = machine number
Return: CF clear if successful
           AH = terminal driver number
           AL = baud rate (00h = 38400, 01h = 19200, etc)
           CL = parity (00h none, 01h even, 02h odd)
           CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
       CF set if invalid user number
SeeAlso: AH=3Bh
----------7F3B-------------------------------
INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS
       AH = 3Bh
       AL = baud rate (00h = 38400, 01h = 19200, etc)
       CL = parity (00h none, 01h even, 02h odd)
       CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
       DL = user number (FFh = caller)
       DH = machine number for user
Return: CF set if invalid user number
Notes:  only available to supervisors
       the new parameters will take effect immediately if the user's terminal
         has not been started, else AH=3Dh must be called to post the changes
SeeAlso: AH=3Ah,AH=3Dh
----------7F3C-------------------------------
INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT
       AH = 3Ch
       AL = new state
            00h disabled, 01h enabled
       DL = user number (FFh = caller)
       DH = machine number for user
Return: CF set if invalid user number
Note:   only available to supervisors
SeeAlso: AH=3Dh
----------7F3D-------------------------------
INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES
       AH = 3Dh
Note:   should be called whenever a program changes the terminal type or its
         parameters
SeeAlso: AH=3Bh
----------7F41-------------------------------
INT 7F - Alloy NTNX - LOCK FILE FOR USER
       AH = 41h
       AL = user ID
       DS:DX -> ASCIZ filename
Return: AL = status
           00h successful
           01h invalid function
           02h already locked
           03h unable to lock
           04h lock table full
Note:   requests exclusive read/write access to file
SeeAlso: AH=00h,,AH=41h"MW386",AH=42h"NTNX"
----------7F41-------------------------------
INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
       AH = 41h
       AL = user ID
       DS:DX -> ASCIZ semaphore name
Return: AL = status
           00h successful
           01h invalid function
           02h semaphore already locked
           03h unable to lock semaphore
           04h semaphore space exhausted
SeeAlso: AH=00h,AH=42h"MW386"
----------7F42-------------------------------
INT 7F - Alloy NTNX - UNLOCK FILE FOR USER
       AH = 42h
       AL = user ID
       DS:DX -> ASCIZ filename
Return: AL = status
           00h successful
           01h invalid function
           02h already locked
           03h unable to lock
           04h lock table full
SeeAlso: AH=00h,AH=41h"NTNX",AH=42h"MW386"
----------7F42-------------------------------
INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER
       AH = 42h
       AL = user ID
       DS:DX -> ASCIZ semaphore name
Return: AL = status
           00h successful
           01h invalid function
           03h unable to unlock semaphore
SeeAlso: AH=02h,AH=41h"MW386",AH=42h"NTNX"
----------7F4E-------------------------------
INT 7F - Alloy MW386 v2+ - SET ERROR MODE
       AH = 4Eh
       AL = error mode flags
           bit 0: display critical disk errors
               1: display sharing errors
       DX = 4E58h ("NX")
Return: AL = status
           00h successful
SeeAlso: AH=4Fh
----------7F4F-------------------------------
INT 7F - Alloy MW386 v2+ - SET FCB MODE
       AH = 4Fh
       AL = FCB mode
           02h read/write compatibility
           42h read/write shared
       DX = 4E58h ("NX")
Return: AL = status
           00h successful
----------7F81-------------------------------
INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
       AH = 81h
       AL = user ID
       DS:DX -> ASCIZ device name
SeeAlso: AH=82h
----------7F82-------------------------------
INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
       AH = 82h
       AL = user ID
       DS:DX -> ASCIZ device name
SeeAlso: AH=81h
----------7FA0-------------------------------
INT 7F - Alloy MW386 - GET USER NAME
       AH = A0h
       DL = user number (FFh = caller)
       DH = machine number for user
       ES:DI -> 17-byte buffer for ASCIZ user name
Return: CF set if invalid user number
SeeAlso: AH=03h,AH=A1h
----------7FA1-------------------------------
INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER
       AH = A1h
Return: AL = process number
       DL = user number
       DH = machine number
SeeAlso: AH=03h,AH=A0h,AH=A2h
----------7FA2-------------------------------
INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL
       AH = A2h
       DL = user number (FFh = caller)
       DH = machine number for user
Return: CF clear if successful
           AL = privilege level
               00h supervisor
               01h high
               02h medium
               03h low
       CF set if invalid user number
SeeAlso: AH=A1h,AH=A3h
----------7FA3-------------------------------
INT 7F - Alloy MW386 - GET USER LOGIN STATE
       AH = A3h
       DL = user number
       DH = machine number for user
Return: CF clear if successful
           AL = login state
               00h never logged in
               01h currently logged out
               03h currently logged in
       CF set if invalid user number or user not active
SeeAlso: AH=A2h
----------7FA4-------------------------------
INT 7F - Alloy MW386 - VERIFY USER PASSWORD
       AH = A4h
       DS:DX -> ASCIZ password (null-padded to 16 bytes)
Return: AL = 00h if accepted
          else  invalid password
----------7FA5-------------------------------
INT 7F - Alloy MW386 - GET/SET USER STATUS
       AH = A5h
       AL = function
           00h get status
               Return: BX = user flags
                           bit 5: allow messages
                       CL = scan code for task manager hotkey
                       CH = scan code for spooler hotkey
                       DL = scan code for task swapper hotkey
                       DH = modifier key status
           01h set status
               BX = user flags (see above)
               CL = scan code for task manager hotkey
               CH = scan code for spooler hotkey
               DL = scan code for task swapper hotkey
               DH = modifier key status
       DI = machine number and user number
Return: CF set if invalid user number
Note:   must have supervisor privilege to set another user's status
----------7FABCDBX0000-----------------------
INT 7F - IBM 8516 Touch Screen Device Driver - GET API ENTRY
       AX = ABCDh
       BX = 0000h
Return: ???:??? -> entry point array
SeeAlso: AX=0104h,AX=0105h

Function numbers:
14h    set user-defined subroutine
----------7FB0-------------------------------
INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER
       AH = B0h
       AL = user number
       DS = code segment
Note:   MW386 ignores AL and DS; it releases all semaphores locked using INT 67
         or INT 7F locking functions
SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h
----------7FB1-------------------------------
INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
       AH = B1h
       AL = (bits 7-5) 000
            (bits 4-0) user ID
Note:   MW386 ignores AL; it releases all semaphores locked using INT 67 or
         INT 7F locking functions
SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
----------7FB2-------------------------------
INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
       AH = B2h
       AL = (bits 7-5) 001
            (bits 4-0) user ID
SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
----------7FB3-------------------------------
INT 7F - Alloy NTNX - RELEASE FILES FOR USER
       AH = B3h
       AL = (bits 7-5) 010
            (bits 4-0) user ID
SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
----------7FB4-------------------------------
INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
       AH = B4h
       AL = user ID
SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
----------7FC3-------------------------------
INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT
       AH = C3h
       AL = byte to write
Return: CF clear if successful
       CF set on error
SeeAlso: AH=C6h
----------7FC5-------------------------------
INT 7F - Alloy MW386 - CHANGE CONSOLE MODE
       AH = C5h
       AL = new console mode
           00h keyboard indirect
           01h keyboard direct
           02h data handshake enforced
           03h no data handshake
Return: CF clear if successful
           AL = prior console mode
       CF set on error (caller is not remote user)
Note:   modes 2 and 3 may be used for input through the console port; no video
         output should be performed in these modes
----------7FC6-------------------------------
INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT
       AH = C6h
       AL = byte to write
Return: CF clear if successful
       CF set on error (caller is not remote user)
Note:   any terminal driver data translation will be bypassed
SeeAlso: AH=C3h,AH=C7h
----------7FC7-------------------------------
INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE
       AH = C7h
Return: CF clear if successful
           AL = byte read
       CF set on error (no data available or caller is not remote user)
Note:   used to read data after placing console in mode 2 or 3 (see AH=C5h)
SeeAlso: AH=C5h,AH=C6h,AH=C8h
----------7FC8-------------------------------
INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER
       AH = C8h
       AL = maximum bytes to read
       ES:DI -> buffer for console data
Return: CF clear if successful
           CX = number of bytes read
       CF set on error (caller is not remote user)
SeeAlso: AH=C7h
----------7FCF-------------------------------
INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
       AH = CFh
       DS:DX -> ASCIZ string containing user number to be reset
SeeAlso: AH=D6h
----------7FD6-------------------------------
INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
       AH = D6h
       DS:DX -> reset packet (see below)
Return: never if succesful
Note:   all users will be shut down immediately if successful
SeeAlso: AH=CFh

Format of reset packet:
Offset  Size    Description
00h    DWORD   reset code (60606060h)
04h 16 BYTEs   ASCIZ supervisor password padded with nulls
----------7FD7-------------------------------
INT 7F - Alloy MW386 - POST EVENT
       AH = D7h
       AL = user number (if local event)
       DX = event number
----------7FD8-------------------------------
INT 7F - Alloy MW386 - FLUSH DISK BUFFERS
       AH = D8h
Return: CF set on error
Note:   forces all disk buffers to be written out immediately
SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h
----------7FDB-------------------------------
INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE
       AH = DBh
Return: AL = drive from which MW386 was started (2=C:,3=D:,etc)
----------7FE0-------------------------------
INT 7F - Alloy MW386 - CREATE DOS TASK
       AH = E0h
       AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
       DS:DX -> ASCIZ task name (max 16 bytes)
Return: CF clear if successful
           AL = task create ID
       CF set on error
Note:   only foreground DOS tasks can use this function
SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h
----------7FE1-------------------------------
INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID
       AH = E1h
       AL = create ID (from AH=E0h)
Return: AL = DOS process number
       CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
Note:   this function should not be called immediately after creating a new
         DOS task, since the new task is being initialized by a concurrent
         process
SeeAlso: AH=E0h,AH=E2h
----------7FE2-------------------------------
INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK
       AH = E2h
       AL = DOS process number (from AH=E1h)
Return: CF set on error (invalid process number or caller not foreground task)
Notes:  specified task becomes the foreground task and current task is placed
         in the background
       may only be called by a foreground task
SeeAlso: AH=E0h,AH=E1h
----------7FE3-------------------------------
INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
       AH = E3h
---v1.x---
       AL = user number
---v2+---
       BH = user number
       BL = task number
---
       DS:DX -> ASCIZ task name
Return: CF set on error (invalid process number)
SeeAlso: AH=E0h,AH=E4h,AH=E5h
----------7FE4-------------------------------
INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
       AH = E4h
---v1.x---
       AL = user number
---v2+---
       BH = user number
       BL = task number
---
       ES:DI -> buffer for task name
Return: CF clear if successful
           CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
           DX = task flags
               bit 7: MSDOS process
           ES:DI buffer filled
       CF set on error (invalid process number)
SeeAlso: AH=E3h,AH=E5h
----------7FE5-------------------------------
INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME
       AH = E5h
       DS:DX -> ASCIZ task name
       BH = user number
Return: CF clear if successful
           AL = DOS process number
           CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
       CF set on error (no match for name)
SeeAlso: AH=E3h,AH=E4h
----------7FE6-------------------------------
INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS
       AH = E6h
Return: AX = number of processes available to current user
SeeAlso: AH=E0h
----------7FE7-------------------------------
INT 7F - Alloy MW386 - REMOVE DOS TASK
       AH = E7h
       AL = DOS process number
Return: CF set on error (invalid process number or first process)
Note:   can only be called by a foreground task
SeeAlso: AH=E0h
----------7FE8-------------------------------
INT 7F - Alloy MW386 - DOS TASK DELAY
       AH = E8h
       CX = delay time in milliseconds
Note:   a delay of 0 may be used to surrender the current time slice
SeeAlso: INT 15/AX=1000h,INT 21/AH=EEh"DoubleDOS",INT 2F/AX=1680h
----------7FF0-------------------------------
INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP
       AH = F0h
       AL = group number
       DS:DX -> ASCIZ directory name
Return: CF clear if successful
           AX = status
               0002h directory not found
               0003h directory not found
               0005h directory in use, cannot be restricted
               02xxh restricted to group xxh
       CF set on error
Note:   the restriction on the directory may be removed by calling this
         function with group 0, then using AH=F1h to assign the directory to
         group 0
SeeAlso: AH=F1h,AH=F2h,AH=F3h
----------7FF1-------------------------------
INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP
       AH = F1h
       AL = group number
       DS:DX -> ASCIZ directory name
Notes:  performs permanent assignment to a group; no immediate action is taken
         unless the directory has been restricted with AH=F0h
       may be used to restrict a nonexistent directory
SeeAlso: AH=F0h
----------7FF2-------------------------------
INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY
       AH = F2h
       CX = entry number
       ES:DI -> 64-byte buffer
Return: CF clear if successful
           buffer filled with 63-byte directory info and 1-byte group number
       CF set on error (invalid entry)
SeeAlso: AH=F0h,AH=F3h
----------7FF3-------------------------------
INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP
       AH = F3h
       AL = group number
       CX = entry number
       ES:DI -> 64-byte buffer
Return: CF clear if successful
           CX = next entry number
           buffer filled with 63-byte directory info and 1-byte group number
       CF set on error (no more matching entries)
Note:   like AH=F2h, but only returns directories belonging to the specified
         group
SeeAlso: AH=F2h
----------7FF8-------------------------------
INT 7F - Alloy MW386 - ASSIGN USER TO GROUP
       AH = F8h
       AL = group number
       DL = user number
       DH = machine number (currently 00h)
Return: CF clear if successful
       CF set on error (user already in maximum number of groups)
Note:   each user is allowed eight group assignments
SeeAlso: AH=F9h,AH=FAh
----------7FF9-------------------------------
INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
       AH = F9h
       AL = group number
       DL = user number
       DH = machine number (currently 00h)
Return: CF set if failed
SeeAlso: AH=F8h,AH=FAh
----------7FFA-------------------------------
INT 7F - Alloy MW386 - GET USER GROUP LIST
       AH = FAh
       DL = user number
       DH = machine number (currently 00h)
       ES:DI -> 16-byte buffer for group list
Return: CX = number of groups
       ES:DI buffer filled with group numbers
SeeAlso: AH=F8h,AH=F9h
----------7FFB-------------------------------
INT 7F - Alloy MW386 - ASSIGN GROUP NAME
       AH = FBh
       CL = group number
       ES:DI -> ASCIZ group name (max 17 bytes)
SeeAlso: AH=FCh
----------7FFC-------------------------------
INT 7F - Alloy MW386 - GET GROUP NAME
       AH = FCh
       CL = group number
       ES:DI -> 17-byte buffer for ASCIZ name
Return: ES:DI buffer filled
Note:   if the group has not been named, "(unnamed)" is returned
SeeAlso: AH=FBh
----------80---------------------------------
INT 80 - Q-PRO4 - ???
----------80---------------------------------
INT 80 - reserved for BASIC
Note:   this vector and INT 81 through INT ED are modified but not restored by
         Direct Access v4.0, and may be left dangling by other programs
         written with the same version of compiled BASIC
SeeAlso: INT 81"BASIC"
----------80----BX0000-----------------------
INT 80 - SoundBlaster SBFM driver - GET VERSION
       BX = 0000h
Return: ???
Note:   SBFM installs at a free interrupt in the range 80h through BFh
SeeAlso: BX=0008h,INT 2F/AX=FBFBh
----------80----BX0001-----------------------
INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
       BX = 0001h
       DX:AX -> music status byte
SeeAlso: BX=0000h,BX=0002h,BX=0003h
----------80----BX0002-----------------------
INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
       BX = 0002h
       CX = number of instruments
       DX:AX -> instrument table
SeeAlso: BX=0000h,BX=0001h,BX=0005h
----------80----BX0003-----------------------
INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
       BX = 0003h
       AX = clock rate divisor (1193180 / desired frequency in Hertz)
           FFFFh to restore to 18.2 Hz
SeeAlso: BX=0000h,BX=0001h,BX=0004h
----------80----BX0004-----------------------
INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
       BX = 0004h
       AX = driver clock rate divisor (1193180 / frequency in Hertz)
Note:   default frequency is 96 Hz
SeeAlso: BX=0000h,BX=0003h
----------80----BX0005-----------------------
INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
       BX = 0005h
       AX = semi-tone offset
SeeAlso: BX=0000h,BX=0002h,BX=0006h
----------80----BX0006-----------------------
INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
       BX = 0006h
       DX:AX -> music block
Return: AX = status
           0000h successful
           0001h music already active
SeeAlso: BX=0000h,BX=0007h,BX=000Ah
----------80----BX0007-----------------------
INT 80 - SoundBlaster SBFM driver - STOP MUSIC
       BX = 0007h
Return: AX = status
           0000h successful
           0001h music not active
SeeAlso: BX=0000h,BX=0006h,BX=0009h
----------80----BX0008-----------------------
INT 80 - SoundBlaster SBFM driver - RESET DRIVER
       BX = 0008h
Return: AX = status
           0000h successful
           0001h music is active
SeeAlso: BX=0000h
----------80----BX0009-----------------------
INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
       BX = 0009h
Return: AX = status
           0000h successful
           0001h no music active
SeeAlso: BX=0000h,BX=0007h,BX=000Ah
----------80----BX000A-----------------------
INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
       BX = 000Ah
Return: AX = status
           0000h successful
           0001h no music paused
SeeAlso: BX=0000h,BX=0006h,BX=0009h
----------80----BX000B-----------------------
INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
       BX = 000Bh
       DX:AX -> trap routine
SeeAlso: BX=0000h
----------8001-------------------------------
INT 80 - QPC Software PKTINT.COM - INITIALIZE
       AH = 01h
Return: AX = 0000h
       CX = FFFFh
       DX = FFFFh
Notes:  this interrupt is the WinQVTNet protected mode interface to Windows 3.0
       all buffer pointers are reset back to 0
----------8002-------------------------------
INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
       AH = 02h
       BX = extra bytes to allocate per packet
Return: AX = segment address of 10K buffer (for receives???)
       BX = segment address of 2K buffer (for sends???)
SeeAlso: AH=05h
----------8003-------------------------------
INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
       AH = 03h
Return: CX:DX -> receive call address
Note:   the returned address can be used in the packet driver calls since it
         will be a valid address in all DOS boxes
SeeAlso: AH=06h
----------8004-------------------------------
INT 80 - QPC Software PKTINT.COM - ENABLE???
       AH = 04h
       BX = ???
Return: ???
----------8005-------------------------------
INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
       AH = 05h
Return: AX = amount of buffer currently in use
       BX = current offset in buffer
       CX = number of times receive has been called
SeeAlso: AH=02h
----------8006-------------------------------
INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
       AH = 06h
Return: BX = next packet offset
       CX = number of bytes still buffered
       DX = size of packet released back into buffer pool
SeeAlso: AH=03h
----------81---------------------------------
INT 81 - reserved for BASIC
Note:   this vector is modified but not restored by Direct Access v4.0, and
         may be left dangling by other programs written with the same version
         of compiled BASIC
SeeAlso: INT 80"BASIC",INT 82"BASIC"
----------81---------------------------------
INT 81 - IBM TOKEN RING ADAPTER - ???
----------82---------------------------------
INT 82 - reserved for BASIC
SeeAlso: INT 81"BASIC",INT 83"BASIC"
----------82---------------------------------
INT 82 - IBM TOKEN RING ADAPTER - ???
       AH = function
           00h display message???
               DS:BX -> string
       ???
Return: ???
----------83---------------------------------
INT 83 - reserved for BASIC
SeeAlso: INT 82"BASIC",INT 84"BASIC"
----------84---------------------------------
INT 84 - reserved for BASIC
SeeAlso: INT 83"BASIC",INT 85"BASIC"
----------85---------------------------------
INT 85 - reserved for BASIC
Note:   INT 80 through INT ED are modified but not restored by Direct Access
         v4.0, and may be left dangling by other programs written with the
         same version of compiled BASIC
SeeAlso: INT 84"BASIC",INT 86"BASIC"
----------86---------------------------------
INT 86 - NetBIOS - ORIGINAL INT 18
Note:   some implementations of NetBIOS reportedly relocate INT 18 here
SeeAlso: INT 18
----------86---------------------------------
INT 86 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 85"BASIC",INT 87"BASIC"
----------86---------------------------------
INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
SeeAlso: INT 21/AH=4Ch,INT 87"APL"
----------87---------------------------------
INT 87 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 86"BASIC",INT 88"BASIC"
----------87---------------------------------
INT 87 - APL*PLUS/PC - ???
SeeAlso: INT 86"APL",INT 88/AL=00h
----------88---------------------------------
INT 88 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 87"BASIC",INT 89"BASIC"
----------88--00-----------------------------
INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
       AL = 00h
       BX = STPTR of the variable to be assigned
       ES:SI -> model of type, rank, and shape (see below)
Return: ES:DI -> first data byte of object
       DX:CX = number of elements in the object
SeeAlso: INT C8"APL"

Format of shape model:
Offset  Size    Description
00h    BYTE    type
               01h character (2-byte dimension sizes)
               02h integer (2-byte dimension sizes)
               08h floating point (2-byte dimension sizes)
               11h character (4-byte dimension sizes)
               12h integer (4-byte dimension sizes)
               18h floating point (4-byte dimension sizes)
01h    BYTE    rank
02h    WORD/DWORD first dimension of shape
N      WORD/DWORD second dimension of shape
       ...
----------88--01-----------------------------
INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
       AL = 01h
       AH = rank
       BX = STPTR of the variable to be assigned
       CX = first dimension (if any)
       DX = second dimension (if any)
Return: ES:DI -> object
       CX = number of elements in the object
Note:   each dimension must be 32767 or smaller
SeeAlso: AL=02h,AL=08h,INT C8"APL"
----------88--02-----------------------------
INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
       AL = 02h
       AH = rank
       BX = STPTR of the variable to be assigned
       CX = first dimension (if any)
       DX = second dimension (if any)
Return: ES:DI -> object
       CX = number of elements in the object
Note:   each dimension must be 32767 or smaller
SeeAlso: AL=01h,AL=08h,INT C8"APL"
----------88--08-----------------------------
INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
       AL = 08h
       AH = rank
       BX = STPTR of the variable to be assigned
       CX = first dimension (if any)
       DX = second dimension (if any)
Return: ES:DI -> object
       CX = number of elements in the object
Note:   each dimension must be 32767 or smaller
SeeAlso: AL=01h,AL=02h,INT C8"APL"
----------88--F5-----------------------------
INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
       AL = F5h
       BX = STPTR of object
SeeAlso: INT C8"APL"
----------88--F6-----------------------------
INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
       AL = F6h
       BX = STPTR of object
SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
----------88--F7-----------------------------
INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
       AL = F7h
       BX = STPTR of object
SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
----------88--F8-----------------------------
INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
       AL = F8h
       BX = STPTR of object
Return:  BX = 0000h eligible
             0001h not eligible
SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
----------88--F9-----------------------------
INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
       AL = F9h
       ES:SI -> name
       CX = length of name
Return: CF set if name ill-formed or already in use
           BX = STPTR if already in symbol table
       CF clear if name is available for use
           BX = 0000h
Note:   does not force the name into the workspace
SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
----------88--FC-----------------------------
INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
       AL = FCh
       BX = amount of memory needed (paragraphs)
Return: CF clear if memory available
       CF set if a workspace compaction is required
SeeAlso: AL=FDh,INT C8"APL"
----------88--FD-----------------------------
INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
       AL = FDh
Return: BX = number of paragraphs available in workspace
SeeAlso: AL=FCh,INT C8"APL"
----------88--FE-----------------------------
INT 88 - APL*PLUS/PC - CREATE NAME
       AL = FEh
       ES:SI -> name
       CX = length of name
Return: BX = STPTR of name
       DX = interpreter's data segment
SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
----------88--FF-----------------------------
INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
       AL = FFh
       ES:SI -> name
       CX = length of name
Return: CF set if name ill-formed or already in use
           BX = STPTR if already in symbol table
       CF clear if name is available for use
           BX = 0000h
Note:   forces the name into the workspace and makes it immune from outswapping
SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
----------89---------------------------------
INT 89 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 88"BASIC",INT 8A"BASIC"
----------8A---------------------------------
INT 8A - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 89"BASIC",INT 8B"BASIC"
----------8A---------------------------------
INT 8A - APL*PLUS/PC - PRINT SCREEN
Note:   same as INT 05
SeeAlso: INT 05,INT 8C"APL",INT CA"APL"
----------8B---------------------------------
INT 8B - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
----------8B---------------------------------
INT 8B - APL*PLUS/PC - BEEP
Note:   same as printing a ^G via INT 21/AH=02h
SeeAlso: INT 21/AH=02h,INT CB"APL"
----------8C---------------------------------
INT 8C - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------8C---------------------------------
INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
       AX = flag
           0000h do not save display attributes
           0001h save attributes
SeeAlso: INT CC"APL"
----------8D---------------------------------
INT 8D - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------8E---------------------------------
INT 8E - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------8F---------------------------------
INT 8F - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------90---------------------------------
INT 90 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------90---------------------------------
INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
----------91---------------------------------
INT 91 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------91---------------------------------
INT 91 - IBM TOKEN RING ADAPTER - ???
----------92---------------------------------
INT 92 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------92---------------------------------
INT 92 - Sangoma X.25 INTERFACE PROGRAM
       BX:DX -> control block
SeeAlso: INT 68"Sangoma"
----------92E1-------------------------------
INT 92 - Da Vinci eMail Dispatcher INTERFACE
       AH = E1h
       AL = function
       BX = stack count (number of words to push)
       CX:DX -> stack data (in word-reversed order ready to push)
Return: AX = status
           0001h success
           FF97h "ERS_NOT_AVAILABLE"
           FF99h "ERS_TOO_MANY_NAMES"
           FF9Ah "ERS_BAD_NAME_PASSWORD"
           FFE3h "ERS_NAME_NOT_FOUND"
           FFF8h "ERS_USE_STRING" (call NetGetError to get error string)
           FFFFh "ERS_NO_SUCH_FILE"
Note:   preserves BP, DS, SI, DI; other registers may be destroyed
----------92E100BX000A-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
       AX = E100h
       BX = 000Ah
       CX:DX -> parameter block (see below)
Return: AX = 0001h success
Note:   this function is used to initialize the dispatcher
SeeAlso: AX=E101h,AX=E103h

Format of parameter block:
Offset  Size    Description
00h    WORD    segment of ???
02h    WORD    offset of ???
04h    WORD    high part of long ???
06h    WORD    low part of long ???
08h    WORD    high part of long ???
0Ah    WORD    low part of long ???
0Ch    WORD    high part of long ???
0Eh    WORD    low part of long ???
10h    WORD    high part of long ???
12h    WORD    low part of long ???
----------92E101BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
       AX = E101h
       BX = 0000h
       CX:DX ignored
Return: AX = 0001h success
SeeAlso: AX=E100h
----------92E102BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
       AX = E102h
       BX = 0000h
       CX:DX ignored
Return: AX = 0001h success
Note:   this function is used to determine if the dispatcher is loaded
SeeAlso: AX=E10Bh,AX=E180h
----------92E103BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
       AX = E103h
       BX = 0000h
       CX:DX ignored
Return: AX = status (see AH=E1h)
SeeAlso: AX=E100h
----------92E104BX0006-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
       AX = E104h
       BX = 0006h
       CX:DX -> parameter block (see below)
Return: AX = status (see AH=E1h)
Note:   this function is used to verify node address for usernames

Format of parameter block:
Offset  Size    Description
00h    WORD    segment of node address buffer
02h    WORD    offset of node address buffer
04h    WORD    segment of uppercase username
06h    WORD    offset of uppercase username
08h    WORD    segment of "DVSEMAIL"
0Ah    WORD    offset of "DVSEMAIL"
----------92E105BX0007-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
       AX = E105h
       BX = 0007h
       CX:DX -> parameter block (see below)
Return: AX = 0000h Error
       AX = handle
Note:   this function is used to open a submission channel
SeeAlso: AX=E10Ah

Format of parameter block:
Offset  Size    Description
00h    WORD    operation (1 = read, 2 = write)
02h    WORD    segment of uppercase To: username
04h    WORD    offset of uppercase To: username
06h    WORD    segment of "DVSEMAIL"
08h    WORD    offset of "DVSEMAIL"
0Ah    WORD    segment of node address
0Ch    WORD    offset of node address
----------92E106BX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetRead"
       AX = E106h
       BX = 0004h
       CX:DX -> parameter block
Return: AX = 0001h
SeeAlso: AX=E108h
----------92E107BX0002-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
       AX = E107h
       BX = 0002h
       CX:DX -> parameter block
Return: AX = 0001h
----------92E108BX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
       AX = E108h
       BX = 0004h
       CX:DX -> parameter block (see below)
Return: AX = amount written
Note:   this function is used to write transactions to the dispatcher.
         The command block is written first and then another call is used
         to write the associated data.
SeeAlso: AX=E106h

Format of parameter block:
Offset  Size    Description
00h    WORD    buffer count
02h    WORD    segment of command buffer
04h    WORD    offset of command buffer
06h    WORD    handle from NetOpen

Format of command buffer:
Offset  Size    Description
00h    BYTE    command
               21h '!' Protocol commands for remote control
               41h 'A' Authorization protocol element
               42h 'B' Return(back) routing information
                   Associated data is the From: username
               43h 'C' Carbon Copy list
                   Associated data is a comma delimitted list of usernames
               44h 'D' Distribution list
                   Associated data is a comma delimitted list of usernames
               45h 'E' Mail end marker
                   No associated data
               48h 'H' Mail message header
                   Associated data is a message header buffer
               4Dh 'M' Mail message
                   Associated data is the body of the message
               4Fh 'O' Object
               50h 'P' Paperclip attachment
               52h 'R' Routing information
                   Associated data is the To: username
               53h 'S' Subject
                   Associated data is the subject of the message
               54h 'T' Trail of Reply/Forwards
01h    BYTE    subcommand
02h    DWORD   length of associated data

Format of message header buffer:
Offset  Size    Description
00h 30 BYTEs   subject line
1Eh 24 BYTEs   To
36h 24 BYTEs   From
4Eh    DWORD   Time
               BYTE    0
               BYTE    hour
               BYTE    minute
               BYTE    second
52h    DWORD   Date
               BYTE    0
               BYTE    year
               BYTE    month
               BYTE    day
56h    DWORD   serial number (0L)
5Ah    WORD    mail types
               bit 7   blind carbon copy
               bit 6   carbon copy
               bit 5   priority
               bit 4   confidential
               bit 3   certified
               bit 2   bulk
               bits 1-0 class (first, second, third, bulk)
5Ch    WORD    special types (0)
----------92E109BX0001-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
       AX = E109h
       BX = 0001h
       CX:DX -> ???
Return: AX = FF97h (ERS_NOT_AVAILABLE)
----------92E10ABX0001-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetClose"
       AX = E10Ah
       BX = 0001h
       CX:DX -> parameter block (see below)
Return: AX = 0001h
Note:   this function is used to close a dispatcher handle
SeeAlso: AX=E105h

Format of parameter block:
Offset  Size    Description
00h    WORD    handle from NetOpen
----------92E10BBX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
       AX = E10Bh
       BX = 0004h
       CX:DX -> parameter block (see below)
Return: AX = 0001h
SeeAlso: AX=E102h,AX=E10Ch

Format of parameter block:
Offset  Size    Description
00h    WORD    segment of 24 byte username buffer
02h    WORD    offset of 24 byte username buffer
04h    WORD    segment of 24 byte protocol buffer
06h    WORD    offset of 24 byte protocol buffer
----------92E10CBX0002-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
       AX = E10Ch
       BX = 0002h
       CX:DX -> parameter block (see below)
Return: AX = 0001h
SeeAlso: AX=E10Bh

Format of parameter block:
Offset  Size    Description
00h    WORD    Segment of 128 byte node address buffer
02h    WORD    Offset of 128 byte node address buffer
----------92E10DBX0006-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
       AX = E10Dh
       BX = 0006h
       CX:DX -> parameter block (see below)
Return: AX = status (see AH=E1h)
Note:   this function is used to verify username/password
SeeAlso: AX=E10Eh

Format of parameter block:
Offset  Size    Description
00h    WORD    segment of uppercase password string
02h    WORD    offset of uppercase password string
04h    WORD    segment of uppercase username string
06h    WORD    offset of uppercase username string
08h    WORD    segment of "DVSEMAIL"
0Ah    WORD    offset of "DVSEMAIL"
----------92E10EBX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
       AX = E10Eh
       BX = 0004h
       CX:DX -> parameter block (see below)
Return: AX = 0001h
Note:   this function is used to remove a username
SeeAlso: AX=E10Dh

Format of parameter block:
Offset  Type    Description
00h    WORD    segment of uppercase username
02h    WORD    offset of uppercase username
04h    WORD    segment of "DVSEMAIL"
06h    WORD    offset of "DVSEMAIL"
----------92E10FBX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
       AX = E10Fh
       BX = 0000h
       CX:DX ignored
Return: AX = 0001h
----------92E110BX0006-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
       AX = E110h
       BX = 0006h
       CX:DX -> ???
Return: AX = 0001h
SeeAlso: AX=E111h,AX=E113h
----------92E111BX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
       AX = E111h
       BX = 0004h
       CX:DX -> ???
Return: AX = 0001h
SeeAlso: AX=E110h,AX=E113h
----------92E112BX0008-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
       AX = E112h
       BX = 0008h
       CX:DX -> ???
Return: AX = 0001h
----------92E113BX0008-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
       AX = E113h
       BX = 0008h
       CX:DX -> ???
Return: AX = 0001h
SeeAlso: AX=E110h,AX=E111h
----------92E175-----------------------------
INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
       AX = E175h
Return: AX = 0012h
       BX = PSP
----------92E180-----------------------------
INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
       AX = E180h
Return: AX = 0012h if installed
       ES:DX -> '$'-terminated driver information string
SeeAlso: AX=E102h
----------93---------------------------------
INT 93 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------93---------------------------------
INT 93 - IBM TOKEN RING ADAPTER - ???
----------94---------------------------------
INT 94 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------95---------------------------------
INT 95 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------95---------------------------------
INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
Note:   use only when the R= option is invoked on entering APL
----------96---------------------------------
INT 96 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------97---------------------------------
INT 97 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------98---------------------------------
INT 98 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------99---------------------------------
INT 99 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------9A---------------------------------
INT 9A - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------9B---------------------------------
INT 9B - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------9C---------------------------------
INT 9C - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------9D---------------------------------
INT 9D - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------9E---------------------------------
INT 9E - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------9F---------------------------------
INT 9F - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A0---------------------------------
INT A0 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A0---------------------------------
INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
SeeAlso: INT 59
----------A1---------------------------------
INT A1 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A2---------------------------------
INT A2 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A3---------------------------------
INT A3 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A4---------------------------------
INT A4 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A4---------------------------------
INT A4 U - Right Hand Man - API
       AH = function number (v3.3 supports functions 00h-52h)
Return: CF set on error
       CF clear if successful
Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
         which has evolved into Futurus Team
Note:   this interrupt is only hooked while popped up
SeeAlso: INT 2F/AX=A4E0h
----------A5---------------------------------
INT A5 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A6---------------------------------
INT A6 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A7---------------------------------
INT A7 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A8---------------------------------
INT A8 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------A9---------------------------------
INT A9 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------AA---------------------------------
INT AA - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------AB---------------------------------
INT AB - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------AC---------------------------------
INT AC - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------AD---------------------------------
INT AD - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------AE---------------------------------
INT AE - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------AF---------------------------------
INT AF - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B0---------------------------------
INT B0 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B1---------------------------------
INT B1 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B2---------------------------------
INT B2 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B3---------------------------------
INT B3 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B370-------------------------------
INT B3 - ZIPKEY - GET VERSION
       AH = 70h
Return: AH = major version
       AL = minor version
       CL = number of states and territories in current database
       DH = year of current database - 1900
       DL = month of current database's file date
Return: AX destroyed
Notes:  if installed, the string "ZIPKEY" is present at offset 75h in the
         interrupt handler's segment, and the byte at 7Bh contains the API
         version number (00h for v1.x, 01h for v2.0)
       ZIPKEY is a resident ZIPCODE database by Eric Isaacson
----------B371-------------------------------
INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
       AH = 71h
       BX = abbreviation, in either case (first letter in BL)
Return: CF set on error
           AL = FFh
       CF clear if successful
           AL = ZIPKEY state code
SeeAlso: AH=72h
----------B372-------------------------------
INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
       AH = 72h
       BL = ZIPKEY state code
Return: CF set on error
           AX destroyed
       CF clear if successful
           AX = abbreviation, in upper case
SeeAlso: AH=71h,AH=73h
----------B373-------------------------------
INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
       AH = 73h
       BL = ZIPKEY state code
       ES:DI -> buffer for name
Return: CF set on error
           AX destroyed
       CF clear if successful
           ES:DI points one byte beyond end of name
SeeAlso: AH=72h
----------B374-------------------------------
INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
       AH = 74h
       DX = zipcode region (0-999)
       CH = last two digits of zipcode (0-99)
       ES:DI -> buffer
Return: CF set on error
           AX destroyed
       CF clear if successful
           ES:DI points one byte beyond end of digit string
----------B375-------------------------------
INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
       AH = 75h
       DX = zipcode region (0-999)
       CH = last two digits of zipcode (0-99)
Return: CF set on error (zipcode not found)
           AL = suggested state code, FFh if none
       CF clear if successful
           AL = ZIPKEY state code
           BX = area code (v2.0+)
SeeAlso: AH=76h,AH=79h
----------B376-------------------------------
INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
       AH = 76h
       DX = zipcode region (0-999)
       CH = last two digits of zipcode (0-99)
       ES:DI -> buffer for name
Return: CF set on error
           AL = suggested state code, FFh if none
           ES:DI buffer filled with suggested city name
       CF clear if successful
           AL = ZIPKEY state code
           BX = area code (v2.0+)
           ES:DI points one byte beyond end of name
SeeAlso: AH=75h,AH=78h
----------B377-------------------------------
INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
       AH = 77h
       DX = zipcode region (0-999)
       CH = last two digits of zipcode (0-99)
       BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
Return: CF set on error
           AX destroyed
       CF clear if successful
           zipcode specification as defined by the BX keystroke is placed in
             keyboard buffer, as if the user had popped up ZIPKEY and exited
             by pressing the key specified by BX
----------B378-------------------------------
INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
       AH = 78h
       BL = ZIPKEY state code
       DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
Return: BH = number of matching entries (set to 51 if more than 50)
       DX = zipcode region of first match (0-999)
       CL = last two digits of first zipcode in the range (0-99)
       CH = last two digits of last zipcode in the range (0-99)
       AX destroyed
SeeAlso: AH=79h,AH=7Ah
----------B379-------------------------------
INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
       AH = 79h
       BL = ZIPKEY state code of first state to search
       DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
Return: AL = ZIPKEY state code of first matching state
       BH = number of matching entries (set to 51 if more than 50)
       DX = zipcode region of first match (0-999)
       CL = last two digits of first zipcode in first range (0-99)
       CH = last two digits of last zipcode in first range (0-99)
Note:   to find all matching cities, repeat search with BL set to one more than
         the returned AL
SeeAlso: AH=78h,AH=7Ah
----------B37A-------------------------------
INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
       AH = 7Ah
       BL = case number (0 to one less than value returned in BH by lookup)
Return: AL = ZIPKEY state code
       DX = zipcode region (0-999)
       CL = last two digits of first zipcode in the range (0-99)
       CH = last two digits of last zipcode in the range (0-99)
SeeAlso: AH=78h,AH=79h
----------B37B-------------------------------
INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
       AH = 7Bh
Return: BL = maximum number of characters for a city name
       BH = ZIPKEY state code for last city-name search
           FFh if none
       CX:DX = internal code identifying last city search
       AX destroyed
SeeAlso: AH=7Ch
----------B37C-------------------------------
INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
       AH = 7Ch
       BL = maximum number of characters for a city name
       BH = ZIPKEY state code for last city-name search
           FFh if none
       CX:DX = internal code returned by AH=7Bh
Return: CF set on error
       CF clear if successful
       AX destroyed
SeeAlso: AH=7Bh
----------B37D-------------------------------
INT B3 - ZIPKEY - REQUEST POP UP
       AH = 7Dh
       BL = index number to simulate pressing a hotkey
           FFh for immediate popup with no playback on return
Return: CF set on error
           AL = FDh already busy with another request
              = FEh illegal function
       CF clear if successful
           AX destroyed
           window popped up and was closed by the user
----------B37E-------------------------------
INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
       AH = 7Eh
       DX = zipcode region (0-999)
       ES:DI -> buffer for name
Return: CF set on error
           AL = FFh region does not exist
       CF clear if successful
           AL = ZIPKEY state code
           ES:DI points one byte beyond end of name
----------B37F-------------------------------
INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
       AH = 7Fh
       BL = function
           00h turn off hotkeys
           01h turn on hotkeys
           02h return hotkey status
           03h toggle hotkey status
Return: AL = hotkey status
           00h off
           01h on
----------B380-------------------------------
INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
       AH = 80h
       BX = telephone area code (decimal)
Return: CF clear if successful
           AL = ZIPKEY state code
           DX = first ZIP region for state (03E8h if Canada)
           CX = number of ZIP regions in state
       CF set on error
           AL = FFh
           DX = 03E9h
----------B4---------------------------------
INT B4 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B4---------------------------------
INT B4 - STACKMAN - REQUEST NEW STACK
Return: SS:SP -> new stack
Note:   the installation check consists of testing for the string "STACKXXX" at
         offset 0Ah from the interrupt handler
SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
----------B5---------------------------------
INT B5 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B5---------------------------------
INT B5 - STACKMAN - RESTORE ORIGINAL STACK
       SS:SP -> stack returned by INT B4
Return: SS:SP restored to value before INT B4
SeeAlso: INT 2F/AX=C9FFh,INT B4"STACKMAN"
----------B6---------------------------------
INT B6 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B7---------------------------------
INT B7 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B8---------------------------------
INT B8 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------B9---------------------------------
INT B9 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------BA---------------------------------
INT BA - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------BB---------------------------------
INT BB - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------BC---------------------------------
INT BC - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------BD---------------------------------
INT BD - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------BE---------------------------------
INT BE - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------BE---------------------------------
INT BE - DESQview/X - ???
Note:   points at an IRET
SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
----------BF---------------------------------
INT BF - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C0---------------------------------
INT C0 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C1---------------------------------
INT C1 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C2---------------------------------
INT C2 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C3---------------------------------
INT C3 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C4---------------------------------
INT C4 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C5---------------------------------
INT C5 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C6---------------------------------
INT C6 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C6---------------------------------
INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
Note:   STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
         the older interrupts
SeeAlso: INT 86"APL"
----------C7---------------------------------
INT C7 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C7---------------------------------
INT C7 - APL*PLUS/PC - ???
Note:   STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
         the older interrupts
SeeAlso: INT 87"APL"
----------C8---------------------------------
INT C8 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C8---------------------------------
INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
Note:   STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
         the older interrupts
SeeAlso: INT 88"APL"
----------C9---------------------------------
INT C9 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------C9---------------------------------
INT C9 - APL*PLUS/PC - ???
Note:   STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
         the older interrupts
SeeAlso: INT 89"APL"
----------CA---------------------------------
INT CA - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------CA---------------------------------
INT CA - APL*PLUS/PC - PRINT SCREEN
Note:   STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
         the older interrupts
SeeAlso: INT 8A"APL"
----------CB---------------------------------
INT CB - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------CB---------------------------------
INT CB - APL*PLUS/PC - BEEP
Notes:  STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
         the older interrupts
       same as printing a ^G via INT 21/AH=02h
SeeAlso: INT 8B"APL"
----------CC---------------------------------
INT CC - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------CC---------------------------------
INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
       AX = flag
           0000h do not save display attributes
           0001h save attributes
Note:   STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
         the older interrupts
SeeAlso: INT 8C"APL"
----------CD---------------------------------
INT CD - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------CD---------------------------------
INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------CE---------------------------------
INT CE - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------CE---------------------------------
INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------CF---------------------------------
INT CF - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------CF---------------------------------
INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
SeeAlso: INT E0"APL"
----------D0---------------------------------
INT D0 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D0---------------------------------
INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D0---------------------------------
INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
Notes:  NJFRERAM is a resident free-memory display utility by Mike "Nifty
         James" Blaszczak
       if NJFRERAM is installed, this vector points at the signature "NJ"
----------D1---------------------------------
INT D1 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D1---------------------------------
INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D2---------------------------------
INT D2 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D2---------------------------------
INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D3---------------------------------
INT D3 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D3---------------------------------
INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D4---------------------------------
INT D4 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D4---------------------------------
INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D4---------------------------------
INT D4 - PC-MOS/386 - API
----------D5---------------------------------
INT D5 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D5---------------------------------
INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D6---------------------------------
INT D6 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D6---------------------------------
INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D7---------------------------------
INT D7 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D7---------------------------------
INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D8---------------------------------
INT D8 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D8---------------------------------
INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------D9---------------------------------
INT D9 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------D9---------------------------------
INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------DA---------------------------------
INT DA - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------DA---------------------------------
INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------DB---------------------------------
INT DB - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------DB---------------------------------
INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------DC---------------------------------
INT DC - PC/370 v4.1- - API
SeeAlso: INT 60"PC/370"
----------DC---------------------------------
INT DC - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------DC---------------------------------
INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
----------DD---------------------------------
INT DD - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------DD---------------------------------
INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
       BX = where to place keystrokes
           FFFFh insert before current buffer contents
           0000h replace current contents
           0001h insert after current contents
       CX = number of keystroke events to insert
       ES:SI -> data to be placed into buffer (list of WORD key codes)
           4000h + N = normal ASCII keystroke N (N = 00h to FFh)
           4100h + N = extended ASCII keystroke N (N = 03h to 84h)
SeeAlso: INT 16/AH=05h
----------DE---------------------------------
INT DE - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------DE---------------------------------
INT DE - APL*PLUS/PC - ???
Note:   appears to be the same as INT 16
----------DF---------------------------------
INT DF - Victor 9000 - SuperBIOS
----------DF---------------------------------
INT DF - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------DF---------------------------------
INT DF - APL*PLUS/PC - SAME AS INT 10
SeeAlso: INT 10
----------E0---------------------------------
INT E0 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E0---------------------------------
INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
SeeAlso: INT CF"APL"
----------E0---------------------------------
INT E0 - VIRUS - "Micro-128" - ???
Note:   Micro-128 also overwrites the upper half of the interrupt table
SeeAlso: INT 70"VIRUS"
----------E0---------------------------------
INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
       CL = function number
       DS,DX = parameters
Return: as appropriate for function
Notes:  several functions are covered in more detail in following entries
       most of these calls are also supported by Digital Research's DOS Plus
         v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
         90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus"

Values for function number:
00h    terminate calling process (see also INT 21/AH=00h)
01h    read a character
02h    write character to default console (see also INT 21/AH=02h)
03h    read character from default AUX (see also INT 21/AH=03h)
04h    write character to default AUX (see also INT 21/AH=04h)
05h    write character to default list device (see also INT 21/AH=05h)
06h    perform raw I/O on default console (see also INT 21/AH=06h)
07h    return default AUX input status
08h    return default AUX output status
09h    write string to default console (see also INT 21/AH=09h)
0Ah    read string from default console (see also INT 21/AH=0Ah)
0Bh    return default console input status (see also INT 21/AH=0Bh)
0Ch    get BDOS release ID
0Dh    reset all disk drives (see also INT 21/AH=0Dh)
0Eh    set default drive (see also INT 21/AH=0Eh)
0Fh    open file via FCB (see also INT 21/AH=0Fh)
10h    close file via FCB (see also INT 21/AH=10h)
11h    search for first matching file with FCB (see also INT 21/AH=11h)
12h    search for next matching file with FCB (see also INT 21/AH=12h)
13h    delete file via FCB (see also INT 21/AH=13h)
14h    sequential read via FCB (see also INT 21/AH=14h)
15h    sequential write via FCB (see also INT 21/AH=15h)
16h    create file via FCB (see also INT 21/AH=16h)
17h    rename file via FCB (see also INT 21/AH=17h)
18h    get bit map of logged drives
19h    get default drive (see also INT 21/AH=19h)
1Ah    set DMA address offset
1Bh    get default disk allocation vector (see also INT 21/AH=1Bh)
1Ch    set default drive to read-only
1Dh    get bit map of read-only drives
1Eh    set file attributes via FCB (see also INT 21/AX=4301h)
1Fh    get address of disk parameter block (see also INT 21/AH=1Fh)
20h    get/set default user number
21h    read random record via FCB (see also INT 21/AH=21h)
22h    write random record via FCB (see also INT 21/AH=22h)
23h    compute file size with FCB (see also INT 21/AH=23h)
24h    get FCB random record number (see also INT 21/AH=24h)
25h    reset specified drives
26h    access specified drives (not in DR DOS Plus v2.1)
27h    free specified drives
28h    write random with FCB, zero fill (see also also INT 21/AH=28h)
2Ah    lock records in FCB file (see also INT 21/AH=5Ch)
2Bh    unlock records in FCB file (see also INT 21/AH=5Ch)
2Ch    set BDOS multisector count
2Dh    set BDOS error mode
2Eh    get free space on disk
2Fh    load, initialize, and jump to process (see also INT 21/AH=4Bh)
30h    flush write-deferred buffers
31h    get/set system variable (DOS Plus v2.1)
32h    call BIOS (XIOS) character routine (see below)
33h    set DMA address segment
34h    get DMA buffer address
35h    CP/M-86 allocate maximum memory
36h    allocate maximum memory at specified segment
37h    CP/M-86 allocate memory segment (see also INT 21/AH=48h)
38h    allocate memory at specified segment
39h    CP/M-86 free specified memory segment (see also INT 21/AH=49h)
3Ah    CP/M-86 free all memory (not in DOS Plus v2.1)
3Bh    load .CMD file into memory
3Ch    (DOS Plus v2.1) call RSX program
40h    (DR-NET) log on a server
41h    (DR-NET) log off a server
42h    (DR-NET) send a message
43h    (DR-NET) receive a message
44h    (DR-NET) get network status
45h    (DR-NET) get requestor configuration table
46h    (DR-NET) set compatibility attributes
47h    (DR-NET) get server configuration table
48h    (DR-NET) set network error mode
49h    (DR-NET) attach network
4Ah    (DR-NET) detach network
4Bh    (DR-NET) set default password
4Ch    (DR-NET) get-set long timeout
4Dh    (DR-NET) get parameter table
50h    (DR-NET) get network information
53h    get current time (see also INT 21/AH=2Ch)
54h    set current time (see also INT 21/AH=2Dh)
55h    get binary system date (see also INT 21/AH=2Ah)
56h    set system date (see also INT 21/AH=2Bh)
57h    allocate system flag
58h    deallocate system flag
59h    reserve memory in global area
5Ah    lock physical drive
5Bh    unlock physical drive
5Ch    search path for executable file
5Dh    load and execute command (see also INT 21/AH=4Bh)
5Eh    get/set process exit code
5Fh    set country information
60h    get country information
63h    truncate FCB file (see also INT 21/AH=28h)
64h    create/update directory label
65h    get directory label
66h    get FCB date stamp and password mode
67h    write extended FCB
68h    set system date and time
69h    get system date and time in binary
6Ah    establish password for file access
6Bh    get OS serial number
6Ch    (DOS Plus v2.1) get/set program return code
6Dh    get/set console mode
6Eh    get/set string delimiter
6Fh    write block to default console
70h    write block to default list device
71h    execute DOS-compatible function
74h    set FCB time and date stamps
80h    allocate memory
82h    deallocate memory
83h    poll I/O device
84h    wait on system flag
85h    set system flag
86h    create message queue
87h    open message queue
88h    delete message queue
89h    read from message queue
8Ah    conditionally read from message queue
8Bh    write to message queue
8Ch    conditionally write to message queue
8Dh    delay calling process
8Eh    call process dispatcher (yield CPU)
8Fh    terminate calling process (same as function 00h)
90h    create a process
91h    set calling process' priority
92h    attach to default console
93h    detach from default console
95h    assign default console to process
96h    interpret and execute commandline
97h    resident procedure library
98h    parse ASCII string into FCB (see also INT 21/AH=29h)
99h    return default console
9Ah    get address of system data (SYSDAT)
9Bh    get system time and date
9Ch    return calling process' descriptor
9Dh    terminate process by name or PD address
9Eh    attach to default list device
9Fh    detach from default list device
A0h    select default list device
A1h    conditionally attach to default list device
A2h    conditionally attach to default console
A3h    get OS version number
A4h    get default list device
A5h    attach to default AUX
A6h    detach from default AUX
A7h    conditionally attach to default AUX
A8h    set default AUX
A9h    return default AUX
ACh    read block from default AUX
ADh    (DOS Plus v2.1) write block to default AUX
B0h    configure default AUX
B1h    get/set device control parameters
B2h    send Break through default AUX
B3h    allocate physical memory
B4h    free physical memory
B5h    map physical memory
B6h    nondestructive message queue read
B7h    timed wait on system flag
B8h    get/set I/O port mapping
B9h    set list device timeout
BAh    set AUX timeout value
BBh    execute XIOS service
BDh    (DR Multiuser DOS) delay
FFh    return 80386 to native mode

Values for DOS Plus v2.1 XIOS functions:
00h    terminate program
01h    ???
02h    check for console input status
03h    read character from console
04h    write character to console
05h    write character to list device
06h    write character to auxiliary device
07h    read cahracter from auxiliary device
0Fh    get list device status
10h-14h reserved
15h    device initialization
16h    check console output status
17h-7Fh reserved
---BBC Acorn---
80h    get XIOS version
81h    get Tube semaphore
82h    release Tube semaphore
83h    select text/graphics
84h    update B&W graphics rectangle
85h    update color graphics rectangle
86h    get/release/update mouse
87h    get system error info
88h    entry in CLOCK called by WatchDog RSP
89h    BBC OSBYTE function
8Ah    BBC OSWORD function

DR Multiuser DOS Error Return Codes:
00h no error
01h system call not implmented
02h illegal system call number
03h cannot find memory
04h illegal flag number
05h flag overrun
06h flag underrun
07h no unused Queue Descriptors
08h no free queue buffer
09h cannot find queue
0Ah queue in use
0Ch no free Process Descriptors
0Dh no queue access
0Eh empty queue
0Fh full queue
10h CLI queue missing
11h no 8087 in system
12h no unused Memory Descriptors
13h illegal console number
14h no Process Descriptor match
15h no console match
16h no CLI process
17h illegal disk number
18h illegal filename
19h illegal filetype
1Ah character not ready
1Bh illegal Memory Descriptor
1Ch bad return from BDOS load
1Dh bad return from BDOS read
1Eh bad return from BDOS open
1Fh null command
20h not owner of resource
21h no CSEG in load file
22h process Descriptor exists on Thread Root
23h could not terminate process
24h cannot attach to process
25h illegal list device number
26h illegal password
28h external termination occurred
29h fixup error upon load
2Ah flag set ignored
2Bh illegal auxilliary device number
----------E0----CL03-------------------------
INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM AUX DEVICE
       CL = 03h
Return: AL = ASCII character
Notes:  A_READ reads the next 8-bit character from the logical auxilliary
         input device (AUXn:); control is not returned to the calling
         process until a character has been read.
       if another process owns AUX, this call blocks until the device becomes
         available
SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
----------E0----CL04-------------------------
INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO AUX DEVICE
       CL = 04h
       DL = ASCII character
Return: nothing
Note:   if another process owns AUX, this call blocks until the device becomes
         available
SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
----------E0----CL07-------------------------
INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE
       CL = 07h
Return: AL = status
           00h not ready
           FFh character available
SeeAlso: INT E0/CL=03h,INT E0/CL=08h
----------E0----CL08-------------------------
INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
       CL = 08h
Return: AL = status
           00h not ready
           FFh ready for output
SeeAlso: INT E0/CL=04h,INT E0/CL=07h
----------E0----CL59-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
       CL = 59h
       DX = size in bytes
Return: AX = FFFFh if failed
       AX = other if successful
           ES:BX -> reserved memory
----------E0----CL86-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
       CL = 86h
       DS:DX -> queue descriptor (see below)
Return: AX = status
           0000h success
           FFFFh failure
       CX = error code
SeeAlso: INT E0/CL=87h

Format of queue descriptor:
Offset  Size    Description
00h  2 WORDs   internal use, initialize to zeros
04h    WORD    flags
06h  8 BYTEs   queue name
0Eh    WORD    length of message
10h    WORD    number of messages
12h  4 WORDs   internal use, initialize to zeros
1Ah    WORD    offset in system area of buffer for messages
----------E0----CL87-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
       CL = 87h
       DS:DX -> queue parameter block (see below)
Return: AX = status
           0000h success
           FFFFh failure
       CX = error code
SeeAlso: INT E0/CL=86h,INT E0/CL=89h

Format of queue parameter block:
Offset  Size    Description
00h    WORD    internal use, initialize to zero
02h    WORD    queue ID (set by INT E0/CL=87h)
04h    WORD    internal use, initialize to zero
06h    WORD    offset of queue message buffer
08h  8 BYTEs   queue name
----------E0----CL89-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
       CL = 89h
       DS:DX -> queue parameter block (see INT E0/CL=87h)
Return: AX = status
           0000h success
           FFFFh failure
       CX = error code
SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh
----------E0----CL8A-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
       CL = 8Ah
       DS:DX -> queue parameter block (see INT E0/CL=87h)
Return: AX = status
           0000h success
           FFFFh failure
       CX = error code
SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch
----------E0----CL8B-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
       CL = 8Bh
       DS:DX -> queue parameter block (see INT E0/CL=87h)
Return: AX = status
           0000h success
           FFFFh failure
       CX = error code
SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
----------E0----CL8C-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
       CL = 8Ch
       DS:DX -> queue parameter block (see INT E0/CL=87h)
Return: AX = status
           0000h success
           FFFFh failure
       CX = error code
SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
----------E0----CL8E-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
       CL = 8Eh
       DX = FFFFh (optional) to force dispatch
Return: nothing
Note:   if DX=FFFFh, a dispatch is forced even if no other process is ready
SeeAlso: INT E0/CL=91h
----------E0----CL91-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
       CL = 91h
       DL = new priority (00h highest to FFh lowest)
Note:   sets priority of calling process; transient processes are initialized
         to priority C8h
SeeAlso: INT E0/CL=8Eh
----------E0----CL93-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
       CL = 93h
Return: AX = status
           0000h successfully detached
           FFFFh detach failed
----------E0----CLA5-------------------------
INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
       CL = A5h
Desc:   attaches the default auxiliary device to the calling process unless
         it is already attached to another process, in which case the call
         blocks until the device becomes available
Note:   this call should be used before attempting to read or write from
         the AUX device; however, the I/O calls internally call this function
         to ensure device ownership
SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
----------E0----CLA6-------------------------
INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
       CL = A6h
Return: AX = status
           0000h successfully detached
           FFFFh detach failed
       CX = error code
SeeAlso: INT E0/CL=A5h,INT E0/CL=A7h
----------E0----CLA7-------------------------
INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
       CL = A7h
Return: AX = status
           0000h attached
           FFFFh unable to attach
Desc:   attaches the default auxiliary device to the calling process if it is
         available
Note:   does not block if the device is already in use
SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
----------E0----CLA8-------------------------
INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
       CL = A8h
       DL = auxiliary device number
Return: AX = status
           0000h successful
           FFFFh failed
       CX = error code
SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
----------E0----CLA9-------------------------
INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
       CL = A9h
Return: AL = current default auxiliary device number
SeeAlso: INT E0/CL=A8h
----------E0----CLAC-------------------------
INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
       CL = ACh
       DS:DX -> character control block (CHCB) (see below)
Return: AX = number of characters read
Desc:   read characters from the default auxiliary (AUXn:) device into a buffer
         until the buffer is full or the device is no longer ready
Notes:  if the device is initially not ready, blocks until at least one
         character has been read
       if another process owns AUX, this call blocks until the device becomes
         available
SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh

Format of character control block (CHCB):
Offset  Size    Description
00h    DWORD   pointer to character buffer
04h    WORD    length of character buffer
----------E0----CLAD-------------------------
INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
       CL = ADh
       DS:DX -> character control block (see INT E0/CL=ACh)
Return: AX = number of characters written
Note:   does not return until at least one character has been written
SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
----------E0----CLB0-------------------------
INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
       CL = B0h
       DX:DX -> AUX device parameter block (see below)
Return: AX = status
           0000h successful
               parameter block updated
           FFFFh failed
               CX = error code
SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h

Format of AUX device parameter block:
Offset  Size    Description
00h    BYTE    function (00h get, 01h set)
01h    BYTE    baud rate (see below) FFh = don't change/unknown
02h    BYTE    parity
               00h none
               01h odd
               02h none
               03h even
               04h stick parity bit
               FFh don't change/unknown
03h    BYTE    stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
04h    BYTE    data bits (05h-08h or FFh unknown/don't change)
05h    BYTE    handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
               FFh unknown/don't change)
06h    BYTE    XON character, FFh unknown/don't change
07h    BYTE    XOFF character, FFh unknown/don't change

Values for baud rate:
00h = 50 baud
01h = 62.5 baud
02h = 75 baud
03h = 110 baud
04h = 134.5 baud
05h = 150 baud
06h = 200 baud
07h = 300 baud
08h = 600 baud
09h = 1200 baud
0Ah = 1800 baud
0Bh = 2000 baud
0Ch = 2400 baud
0Dh = 3600 baud
0Eh = 4800 baud
0Fh = 7200 baud
10h = 9600 baud
11h = 19200 baud
12h = 38400 baud
13h = 56000 baud
14h = 76800 baud
15h = 115200 baud
----------E0----CLB1-------------------------
INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
       CL = B1h
       DS:DX -> AUX device control block (see below)
Return: AX = status
           0000h successful
               control block updated
           FFFFh failed
               CX = error code
SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h

Format of AUX device control block:
Offset  Size    Description
00h    BYTE    function (00h get, 01h set)
01h    BYTE    DTR state (00h low, 01h high, FFh unknown/don't change)
02h    BYTE    RTS state (00h low, 01h high, FFh unknown/don't change)
03h    BYTE    DSR state (00h low, 01h high, FFh unknown/don't change)
04h    BYTE    CTS state (00h low, 01h high, FFh unknown/don't change)
05h    BYTE    DCD state (00h low, 01h high, FFh unknown/don't change)
06h    BYTE    RI state (00h inactive, 01h active, FFh unknown/don't change)
----------E0----CLB2-------------------------
INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
       CL = B2h
       DX = duration of break in system ticks (0001h-FFFFh)
Return: AX = status
           0000h successful
               break signal completed
           FFFFh failed
               CX = error code
Note:   if the AUX device is currently owned by another process, this call will
         block until the device becomes available
SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
----------E0----CLBD-------------------------
INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
       CL = BDh
       DX = delay in system ticks
Return: after the delay elapses
Notes:  the length of a system tick is installation-dependent (typically
         1/50 or 1/60 second); the length may be determined by reading the
         TICKSPERSEC value from the system data segment
       the actual delay before the process is rescheduled to run may be up to
         one tick longer than requested; the delay between rescheduling and
         actual execution cannot be predicted if higher-priority processes
         are awaiting a turn at the CPU
----------E1---------------------------------
INT E1 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E1---------------------------------
INT E1 - PC Cluster Disk Server Information
SeeAlso: INT E2
----------E2---------------------------------
INT E2 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E2---------------------------------
INT E2 - PC Cluster Program
----------E3---------------------------------
INT E3 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E40005-----------------------------
INT E4 - Logitech Modula v2.0 - MonitorEntry
       AX = 0005h
       BX = priority
SeeAlso: AX=0006h
----------E40006-----------------------------
INT E4 - Logitech Modula v2.0 - MonitorExit
       AX = 0006h
SeeAlso: AX=0005h
----------E4---------------------------------
INT E4 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E5---------------------------------
INT E5 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E6---------------------------------
INT E6 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E7---------------------------------
INT E7 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E8---------------------------------
INT E8 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
----------E9---------------------------------
INT E9 - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------EA---------------------------------
INT EA - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------EB---------------------------------
INT EB - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------EC---------------------------------
INT EC - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC
       BASIC.COM/BASICA.COM do not restore vector on termination
----------EC---------------------------------
INT EC - used by Alloy NTNX
----------EC---------------------------------
INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
       AX = function number (0000h to 0140h)
       STACK:  DWORD address to return to
               any arguments required by function
Return: STACK:  return address popped, but otherwise unchanged
Notes:  this is the interface from applications to the runtime system by Exact
         Automatisering B.V. of the Netherlands.  By using this interrupt,
         it can provide DLL-style capabilities under MSDOS.
       the interrupt handler removes the return address and flags placed on
         the stack by the INT EC, then jumps to the appropriate function
----------ED---------------------------------
INT ED - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
       INT 80 through INT ED are modified but not restored by Direct Access
         v4.0, and may be left dangling by other programs written with the
         same version of compiled BASIC
SeeAlso: INT EC"BASIC",INT EE"BASIC"
----------EE---------------------------------
INT EE - IBM ROM BASIC - used while in interpreter
Notes:  called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
       BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT ED"BASIC",INT EE"BASIC"
----------EF---------------------------------
INT EF - BASIC - ORIGINAL INT 09 VECTOR
Note:   BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT EE"BASIC",INT F0"BASIC"
----------EF----CX0473-----------------------
INT EF - GEM - INTERFACE
       CX = 0473h
       DS:DX -> GEM parameter block
----------F0---------------------------------
INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
Note:   BASICA.COM does not restore vector on termination
SeeAlso: INT EF"BASIC"
----------F1---------------------------------
INT F1 - reserved for user interrupt
----------F1---------------------------------
INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
       DS:BX -> '$'-terminated text string
Note:   SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
----------F1---------------------------------
INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
SeeAlso: INT F2"SPEECH"
----------F1---------------------------------
INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
Return: AX:BX -> data area
Notes:  AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
         and COM2 in software
       The installation check consists of testing for the following signature
         immediately preceding the interrupt handler: "JWBtvv" where 't' is
         either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
         version number
----------F2---------------------------------
INT F2 - reserved for user interrupt
----------F2---------------------------------
INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
SeeAlso: INT F1"SPEECH"
----------F2---------------------------------
INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
       AH = function
           01h power up
           02h power down
           03h set controls
           04h capture image
           05h display image
           06h read file
           07h write file
           08h write array
           09h read pixel
           0Ah write pixel
           0Bh check if VGA present
           0Ch set video mode
           0Dh check for keystroke
           0Eh delay
       ???
Return: ???
Program: ImageCapture is a product of International Computers
SeeAlso: INT F3"ICCTSR"
----------F3---------------------------------
INT F3 - reserved for user interrupt
----------F3---------------------------------
INT F3 - SoundBlaster - POINTER TO ECHO VALUE
Note:   this is not a vector, but a pointer to a DWORD containing the echo
         value selected with SET-ECHO.EXE
SeeAlso: INT 2F/AX=FBFBh
----------F3---------------------------------
INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
Program: ImageCapture is a product of International Computers
SeeAlso: INT F2"ICCTSR"
----------F4---------------------------------
INT F4 - reserved for user interrupt
----------F4---------------------------------
INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
----------F5---------------------------------
INT F5 - reserved for user interrupt
----------F5---------------------------------
INT F5 - DoubleDOS - ???
----------F6---------------------------------
INT F6 - reserved for user interrupt
----------F6---------------------------------
INT F6 - DoubleDOS - ???
----------F7---------------------------------
INT F7 - reserved for user interrupt
----------F7---------------------------------
INT F7 - DoubleDOS - ???
----------F700-------------------------------
INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
       AH = 00h
       AL = function
           00h get configuration record
               Return: DS:DX -> configuration record
           01h set configuration record
           02h get path for option
               DS:DX -> option name
               Return: DS:DX -> path
           03h determine whether configuration record set
               Return: AX = status
                           0000h set
                           0001h not yet set
           04h get link state
               Return: AX = state
                           0000h unlinked
                           0001h linked
Notes:  this information is preliminary and still subject to change
       all of the INT F7 calls for FSBBS are used for interprogram
         communication between the BBS kernel and the programs it spawns
SeeAlso: AH=01h
----------F701-------------------------------
INT F7 - FSBBS 2.0 - USER RECORD
       AH = 01h
       AL = function
           00h get user record for user currently online
               Return: DS:DX -> user record
           01h set user record
               DS:DX -> user record
SeeAlso: AH=00h,AH=02h
----------F702-------------------------------
INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
       AH = 02h
Return: DS:DX -> 8-character blank-padded account name
SeeAlso: AH=01h
----------F703-------------------------------
INT F7 - FSBBS 2.0 - TERMINAL NUMBER
       AH = 03h
       AL = function
           00h get terminal index number
               Return: DX = index number
           01h set terminal index number
               DX = terminal index
----------F704-------------------------------
INT F7 - FSBBS 2.0 - PASSDATA BUFFER
       AH = 04h
       AL = function
           00h get PassData buffer contents
               DS:DX -> buffer for PassData contents
           01h set PassData contents
               DS:DX -> buffer containing new PassData
               CH = length of data in buffer
----------F705-------------------------------
INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
       AH = 05h
       AL = function
           00h get time remaining
               Return: DX = number of minutes remaining
           01h get current time
               Return: DS:DX -> 8-character time string
           02h increment time
               DX = number of additional minutes
           03h decrement time
               DX = number of minutes
SeeAlso: AH=06h
----------F706-------------------------------
INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
       AH = 06h
       AL = function
           00h determine whether function is available
               DX = index of function
           01h set function availability
               DX = index of function
               ???
SeeAlso: AH=05h,AH=07h
----------F707-------------------------------
INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
       AH = 07h
       AL = function
           00h get current dump mode
               Return: DL = mode
           01h set dump mode
               DL = mode
SeeAlso: AH=06h
----------F8---------------------------------
INT F8 - TANDY??? - 100 HZ INTERRUPT
SeeAlso: INT FA"USART"
----------F8---------------------------------
INT F8 - DoubleDOS - ???
----------F9---------------------------------
INT F9 - reserved for user interrupt
----------F9---------------------------------
INT F9 - DoubleDOS - ???
----------FA---------------------------------
INT FA - TANDY??? - SERIAL PORT USART INTERRUPT
SeeAlso: INT F8"100 HZ",INT FB"USART"
----------FA---------------------------------
INT FA - DoubleDOS - TURN OFF TIMESHARING
SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
----------FB---------------------------------
INT FB - TANDY??? - KEYBOARD USART RECEIVE INTERRUPT
SeeAlso: INT FA"USART"
----------FB---------------------------------
INT FB - DoubleDOS - TURN ON TIMESHARING
SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
----------FC---------------------------------
INT FC - reserved for user interrupt
----------FC---------------------------------
INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
Return: ES = segment of display buffer
Note:   the display buffer may be moved if multitasking is enabled
SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
----------FD---------------------------------
INT FD - reserved for user interrupt
----------FD---------------------------------
INT FD - DoubleDOS - ???
----------FE---------------------------------
INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
SeeAlso: INT FF"XT286"
----------FE---------------------------------
INT FE - DoubleDOS - GIVE UP TIME
       AL = number of 55ms time slices to give away
SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
----------FE---------------------------------
INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
SeeAlso: INT 3F
----------FF---------------------------------
INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
SeeAlso: INT FE"XT286"
----------FF---------------------------------
INT FF - Z100 - WARM BOOT
SeeAlso: INT 40"Z100"
---------------------------------------------
Please redistribute the following files unmodified as a group, in a pair of
archives named INTER32A and INTER32B (preferably the original authenticated
PKZIP archives):
       INTERRUP.1ST    the read-me file, containing credits, availability info
       INTERRUP.A      INT 00 through INT 14
       INTERRUP.B      INT 15 through INT 1F
       INTERRUP.C      INT 20 through INT 21/7F
       INTERRUP.D      INT 21/80 through INT 2E
       INTERRUP.E      INT 2F through INT 2F/BF
       INTERRUP.F      INT 2F/C0 through INT 4F
       INTERRUP.G      INT 50 through INT 67
       INTERRUP.H      INT 68 through INT FF
       INTERRUP.PRI    a brief introduction to interrupts
       INTPRINT.COM    a simple formatter that also generates a list summary
       INTPRINT.DOC    instructions for INTPRINT
       GLOSSARY.LST    a glossary of terms, abbreviations, and acronyms
       MEMORY.LST      format of the BIOS data area
The following files should be distributed in an archive called INTER32C:
       INT.COM         invoke interrupts from commandline
       INT2HLP.BAT     Perl script to convert list into QuickHelp database
       INT2GUID.*      convert list into TurboPower GUIDE or POPHELP database
       INT2QH.*        program to convert list into QuickHelp database
       INTHELP.*       convert list into TurboPower GUIDE database
       INTLIST.E       Epsilon extension for handling list
       INTPRINT.C      source code for INTPRINT
This compilation is Copyright (c) 1989, 1990, 1991, 1992 Ralf Brown
---------------------------------------------
ARPA: [email protected]
UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
BIT:  ralf%cs.cmu.edu@carnegie
FIDO: Ralf Brown 1:129/26.1
       or post a message to me in the DR_DEBUG echo (I probably won't see it
       unless you address it to me)
CIS:  >INTERNET:[email protected]

Downloaded From P-80 International Information Systems 304-744-2253