home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / KAND / INTER27B.ZIP / INTERRUP.E < prev    next >
Text File  |  1991-09-01  |  284KB  |  8,035 lines

  1. ----------60---------------------------------
  2. INT 60 - reserved for user interrupt
  3. ----------60---------------------------------
  4. INT 60 - Zero Bug Virus - INSTALLATION CHECK
  5.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  6.    offset 103h of the handler's segment contains the bytes "ZE"
  7. SeeAlso: INT 32
  8. ----------60---------------------------------
  9. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  10. SeeAlso: INT 64"Adaptec"
  11. ----------60---------------------------------
  12. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  13.    supplies a number of subfunctions which perform such functions as drawing
  14.    boxes and menus, and provide input line editing
  15. SeeAlso: INT 61"Atari"
  16. ----------60---------------------------------
  17. INT 60 - HP 95LX System Manager
  18. SeeAlso: INT 61"HP 95LX"
  19. ----------60---------------------------------
  20. INT 60 - PC-IPC API
  21.     STACK:    DWORD    pointer to parameter block (see below)
  22. Return: STACK:    unchanged
  23. Notes:    PC-IPC is a shareware TSR by Donnelly Software Engineering which allows
  24.       communication between independent programs
  25.     INT 60 is the default, any interrupt vector may be used by specifying
  26.       the vector on the commandline
  27.  
  28. Format of parameter block:
  29. Offset    Size    Description
  30.  00h    WORD    caller's ID
  31.  02h    WORD    to ID
  32.  04h    WORD    command code (see below)
  33.  06h    WORD    returned status
  34.         bit 0: unused
  35.         bit 1: IPC enabled
  36.         bit 2: IPC installed
  37.         bit 3: error
  38.         bit 4: message(s) available
  39.  08h    WORD    returned error code (see below)
  40.  0Ah    WORD    size of data
  41.  0Ch    DWORD    pointer to data buffer
  42.  
  43. Values of command code:
  44.  01h "IPC_CMND_INQUIRE"     inquire current status
  45.         set status field, writes WORD to data buffer containing free
  46.           message space in bytes, and sets the "size" field to the
  47.           number of messages waiting
  48.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  49.         ignored unless called with the same ID that disabled PC-IPC
  50.  03h "IPC_CMND_DISABLE" disable PC-IPC
  51.  04h "IPC_CMND_INSTALL" reset PC-IPC
  52.  06h "IPC_CMND_RDATA"    read data
  53.         returns first message in data buffer, sets "size" to message
  54.           length and "to ID" field to sender's ID
  55.         if no messages available, bit 4 of status is cleared and "size"
  56.           is set to zero
  57.  07h "IPC_CMND_SDATA"    send data
  58.  08h "IPC_CMND_REQID"    require user ID
  59.         create a new recognized ID and return in "caller's ID" field
  60.  09h "IPC_CMND_DELID"    cancel user ID
  61.         delete caller's ID from pool of recognized IDs
  62.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  63.  0Bh "IPC_CMND_VERS"    get PC-IPC version 
  64.         string representing version returned in data buffer, "size"
  65.           field set to length of string
  66.  
  67. Values for error code:
  68.  00h    no error
  69.  01h    invalid command or parameter
  70.  02h    only process 0 can install/reset IPC
  71.  03h    process can not install/reset IPC
  72.  04h    IPC is not enabled
  73.  05h    process can not disable IPC
  74.  06h    invalid destination process ID
  75.  07h    invalid sending process ID
  76.  08h    invalid data destination
  77.  09h    no more process IDs available
  78.  0Ah    can not relinquish that process ID
  79.  0Bh    message space is full
  80.  0Ch    IPC is not installed
  81. ----------60---------------------------------
  82. INT 60 - Tangram Arbiter - API
  83. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  84.     identified by string "@ARB_API" immediately following a short jump at
  85.       the interrupt handler address
  86.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  87.       IBM mainframe
  88. ----------60---------------------------------
  89. INT 60 - INTRSPY/CMDSPY API
  90. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  91.     The installation check is to 
  92.       a) determine that the handler is an IRET instruction
  93.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  94.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  95.       its entry point.
  96.     INTRSPY is a script-driven debugger included with the book
  97.       _Undocumented_DOS_.
  98.  
  99. Call INTRSPY entry point with:
  100.     AH = function
  101.         00h ???
  102.         01h set current directory (for use in reporting)
  103.         ES:DI -> counted string containing directory name (max 79 char)
  104.         02h set name of script file
  105.         ES:DI -> counted string containing file name (max 79 chars)
  106.         03h set script arguments
  107.         ES:DI -> counted string containing arguments (max 79 chars)
  108.         04h get directory set with function 01h
  109.         ES:DI -> 80-byte buffer for directory name
  110.         05h get name of script file
  111.         ES:DI -> 80-byte buffer for script filename
  112.         06h get script arguments
  113.         ES:DI -> 80-byte buffer for script arguments
  114.         07h get ???
  115.         CL = 00h-15h specifies what to get
  116.         ES:DI -> WORD to be set with desired value on return
  117.         08h get ???
  118.         ES:DI -> WORD to be set with returned value
  119.         09h get ???
  120.         ES:DI -> WORD to be set with returned value
  121.         0Bh store code for interrupt handler???
  122.         ES:DI -> data
  123.         CX = number of bytes
  124.         0Ch ???
  125.         ES:DI -> ???
  126.         0Dh get ???
  127.         ES:DI -> BYTE to be set with returned value
  128.         0Eh set ??? flag
  129.         0Fh clear ??? flag
  130.         10h ???
  131.         Return: AL = 04h or 05h if failed
  132.         11h ???
  133.         Return: AL = 05h if failed
  134.         12h get ???
  135.         ES:DI -> buffer
  136.         Return: CX = number of bytes returned in buffer
  137.         13h ???
  138. Return: AH = 00h
  139.     AL = status
  140.         00h successful
  141.         01h invalid function
  142.         02h ???
  143.         03h ???
  144.         04h ???
  145.         05h ???
  146. ----------60---------------------------------
  147. INT 60 - PC/370 v4.2 - ???
  148.     ???
  149. Return: ???
  150. Notes:    PC/370 is an IBM 370 emulator by Donald S. Higgins
  151.     this is the default interrupt, however the documentation includes
  152.       instructions for patching the system for another interrupt
  153. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  154. ----------60---------------------------------
  155. INT 60 - JPI TopSPEED Modula-2 - PROCEDURE ENTRY TRAP
  156. SeeAlso: INT 61"JPI"
  157. ----------60---------------------------------
  158. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  159.    The handler for the interrupt will start with a 3-byte jump instruction, 
  160.    followed by the ASCIZ string "PKT DRVR".  To find the interrupt being used
  161.    by the driver, an application should scan through interrupt vectors 60h to
  162.    80h until it finds one with the "PKT DRVR" string.
  163. ----------6000-------------------------------
  164. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  165.     AH = 00h
  166. Return: AX = 0000h    profiling is off
  167.         otherwise profiling is on
  168. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  169. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  170. ----------6000-------------------------------
  171. INT 60 - MDEBUG - GET STATUS
  172.     AH = 00h
  173.     DS:SI -> password or a null byte
  174. Return: AX = return code
  175.         FFFEh password is invalid
  176.         FFFDh display mode is invalid
  177.        else successful
  178.         ES = value of the monitor register SE
  179.         DI = value of the monitor register OF
  180.         CH = monitor color
  181.         CL = debugger color
  182.         BH = monitor start line
  183.         BL = debugger start line
  184.         AH = makecode of the hotkey
  185.         AL = ASCII code of the hotkey
  186.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  187.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  188.         DH = basic process number for the communication with drivers
  189.             process number for the display driver, DH+1 = process
  190.             number for the command driver(s)
  191.     DS:SI -> MDEBUG identification table
  192. Notes:    MDEBUG is a shareware memory-resident debugger by Bernd Schemmer
  193.     MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  194.       through INT 67; the interrupt handler is preceded by the signature
  195.       "USERINT" and is not chained
  196.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  197.       passwords are active; enough stack space must be provided for an
  198.       INT 10h call
  199. SeeAlso: AH=02h"MDEBUG"
  200.  
  201. Format of MDEBUG identification table:
  202. Offset    Size    Description
  203.  -2    WORD    entry offset
  204.  00h    WORD    CS of MDEBUG
  205.  02h    DWORD    old INT 08h vector
  206.  06h    DWORD    old INT 09h vector
  207.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  208.  0Eh    BYTE    length of version string
  209.  0Fh  N BYTEs    version string
  210. ----------6001-------------------------------
  211. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  212.     AH = 01h
  213.     DS:SI -> password or a null byte
  214. Return: AX = return code
  215.         FFFEh password is invalid
  216.         FFFDh display mode is invalid
  217.        else successful
  218.         ES:DI point to the help registers of MDEBUG
  219.            ES:DI-02h  -> R0
  220.            ES:DI      -> R1
  221.            ES:DI+02h  -> R2
  222.            ES:DI+04h  -> R3
  223.            ...
  224.            ES:DI+0Eh  -> R8
  225. ----------6001FF-----------------------------
  226. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  227.     AX = 01FFh
  228.     BX = handle returned by function 02h
  229. Return: CF set on error
  230.         DH = error code (see below)
  231.     CF clear if successful
  232.         BX = version
  233.         CH = network interface class (see below)
  234.         DX = interface type (see below)
  235.         CL = number
  236.         DS:SI -> name
  237.         AL = driver functions supported
  238.         01h basic
  239.         02h basic and extended
  240.         05h basic and high-performance
  241.         06h basic, high-performance, and extended
  242.         FFh not installed
  243. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  244.       the packet driver specification
  245.  
  246. Values for error code:
  247.     01h invalid handle number
  248.     02h no interfaces of the specified class found
  249.     03h no interfaces of the specified type found
  250.     04h no interfaces of the specified number found
  251.     05h bad packet type
  252.     06h interface does not support multicast messages
  253.     07h this packet driver cannot terminate
  254.     08h invalid receiver mode
  255.     09h insufficient space
  256.     0Ah type accessed but never released
  257.     0Bh bad command
  258.     0Ch packet could not be sent
  259.     0Dh hardware address could not be changed
  260.     0Eh hardware address has a bad length or format
  261.     0Fh could not reset interface
  262.  
  263. Values for Network Interface classes/types:
  264.     Class 01h  Ethernet/IEEE 802.3     
  265.     01h 3COM 3C500/3C501
  266.     02h 3COM 3C505
  267.     03h MICOM-Interlan NI5010
  268.     04h BICC Data Networks 4110
  269.     05h BICC Data Networks 4117
  270.     06h MICOM-Interlan NP600
  271.     08h Ungermann-Bass PC-NIC
  272.     09h Univation NC-516
  273.     0Ah TRW PC-2000    
  274.     0Bh MICOM-Interlan NI5210
  275.     0Ch 3COM 3C503
  276.     0Dh 3COM 3C523
  277.     0Eh Western Digital WD8003
  278.     0Fh Spider Systems S4
  279.     10h Torus Frame Level
  280.     11h 10Net Communications
  281.     12h Gateway PC-bus
  282.     13h Gateway AT-bus
  283.     14h Gateway MCA-bus
  284.     15h IMC PCnic
  285.     16h IMC PCnic II
  286.     17h IMC PCnic 8-bit
  287.     18h Tigan Communications
  288.     19h Micromatic Research
  289.     1Ah Clarkson "Multiplexor"
  290.     1Bh D-Link 8-bit
  291.     1Ch D-Link 16-bit
  292.     1Dh D-Link PS/2
  293.     1Eh Research Machines 8
  294.     1Fh Research Machines 16
  295.     20h Research Machines MCA
  296.     21h Radix Microsystems EXM1 16-bit
  297.     22h Interlan Ni9210
  298.     23h Interlan Ni6510
  299.     24h Vestra LANMASTER 16-bit
  300.     25h Vestra LANMASTER 8-bit
  301.     26h Allied Telesis PC/XT/AT
  302.     27h Allied Telesis NEC PC-98
  303.     28h Allied Telesis Fujitsu FMR
  304.     29h Ungermann-Bass NIC/PS2
  305.     2Ah Tiara LANCard/E AT
  306.     2Bh Tiara LANCard/E MC
  307.     2Ch Tiara LANCard/E TP
  308.     2Dh Spider Communications SpiderComm 8
  309.     2Eh Spider Communications SpiderComm 16
  310.     2Fh AT&T Starlan NAU
  311.     30h AT&T Starlan-10 NAU
  312.     31h AT&T Ethernet NAU
  313.     32h Intel smart card
  314.     Class 02h  ProNET-10
  315.     01h Proteon p1300
  316.     02h Proteon p1800
  317.     Class 03h  IEEE 802.5/ProNet-4
  318.     01h IBM Token-Ring Adapter
  319.     02h Proteon p1340
  320.     03h Proteon p1344
  321.     04h Gateway PC-bus
  322.     05h Gateway AT-bus
  323.     06h Gateway MCA-bus
  324.     Class 04h  Omninet
  325.     Class 05h  Appletalk
  326.     Class 06h  Serial Line
  327.     01h Clarkson 8250-SLIP
  328.     02h Clarkson "Multiplexor"
  329.     Class 07h  StarLAN (subsumed by Ethernet class)
  330.     Class 08h  ARCnet
  331.     01h Datapoint RIM
  332.     Class 09h  AX.25
  333.     Class 0Ah  KISS
  334.     Class 0Bh  IEEE 802.3 with 802.2 headers
  335.     types same as for class 01h
  336.     Class 0Ch  FDDI with 802.2 headers
  337.     Class 0Dh  Internet X.25
  338.     01h Western Digital
  339.     02h Frontier Technology
  340.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  341.     01h NT LANSTAR/8
  342.     02h NT LANSTAR/MC
  343. Note: class and type numbers are cleared through FTP Software
  344. ----------6001-------------------------------
  345. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  346.     AH = 01h
  347. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  348. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  349. ----------6002-------------------------------
  350. INT 60 - MDEBUG - SET STATUS
  351.     AH = 02h
  352.     DS:SI -> password or a null byte
  353.     ES = new value for the register SE
  354.     DI = new value for the register OF
  355.     CH = new monitor color if nonzero
  356.     CL = new debugger color if nonzero
  357.     BH = new monitor start line if nonzero
  358.     BL = new debugger start line if nonzero
  359.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  360.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  361.         if nonzero
  362.     DH = if nonzero, new basic process number for communication with the
  363.         drivers (DH = multiplex number for the display driver,
  364.         DH+1 = multiplex number for the command driver or drivers)
  365. Return: AX = return code
  366.         FFFFh call not allowed
  367.         FFFEh password is invalid
  368.         FFFDh display mode is invalid
  369.         0000h successful, status changed
  370.        else AL = error code
  371.             bit 0 invalid monitor start line
  372.             1 invalid debugger start line
  373.             2 invalid hotkey
  374.             3 invalid process number
  375.               4-7 reserved
  376. Note:    the values of the registers SE and OF are always changed, the other
  377.       values are only changed if they are valid
  378. SeeAlso: AH=00h"MDEBUG"
  379. ----------6002-------------------------------
  380. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  381.     AH = 02h
  382.     AL = interface class
  383.     BX = interface type
  384.     DL = interface number
  385.     DS:SI -> type
  386.     CX = length of type
  387.     ES:DI -> receiver
  388. Return: CF set on error
  389.         DH = error code (see AX=01FFh)
  390.     CF clear if successful
  391.         AX = handle        
  392. SeeAlso: AH=03h"FTP"
  393.  
  394. Receiver is called with
  395.     AX = subfunction
  396.         00h application to return pointer to buffer in ES:DI
  397.         returned ES:DI = 0000h:0000h means throw away packet
  398.         01h copy completed
  399.         DS:SI -> buffer
  400.     BX = handle
  401.     CX = buffer length
  402. when a packet is received
  403. ----------6002-------------------------------
  404. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  405.     AH = 02h
  406. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  407. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  408. ----------6003-------------------------------
  409. INT 60 - MDEBUG - POP UP
  410.     AH = 03h
  411.     DS:SI point to the password or a null byte
  412.     ES -> new value for the register SE
  413.     DI -> new value for the register OF
  414. Return: AX = return code
  415.         FFFFh call not allowed
  416.         FFFEh password is invalid
  417.         FFFDh display mode is invalid
  418.        else successful
  419. SeeAlso: AH=04h"MDEBUG"
  420. ----------6003-------------------------------
  421. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  422.     AH = 03h
  423.     BX = handle
  424. Return: CF set on error
  425.        DH = error code (see AX=01FFh)
  426.     CF clear if successful    
  427. SeeAlso: AH=02h"FTP"
  428. ----------6003-------------------------------
  429. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  430.     AH = 03h
  431. Return: ES:BX -> profiling table
  432. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  433. SeeAlso: AH=04h"SYS_PROF"
  434. ----------6004-------------------------------
  435. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  436.     AH = 04h
  437.     DS:SI -> buffer
  438.     CX = length
  439. Return: CF set on error
  440.         DH = error code (see AX=01FFh)
  441.     CF clear if successful
  442. Note:    the buffer may be modified immediately upon return from this call
  443. SeeAlso: AH=0Bh
  444. ----------6004-------------------------------
  445. INT 60 - MDEBUG - POP UP
  446.     AH = 04h
  447.     DS:SI -> password or a null byte
  448. Return: AX = return code
  449.         FFFFh call not allowed
  450.         FFFEh password is invalid
  451.         FFFDh display mode is invalid
  452.        else successful
  453. SeeAlso: AH=03h"MDEBUG"
  454. ----------6004-------------------------------
  455. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  456.     AH = 04h
  457. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  458. SeeAlso: AH=03h"SYS_PROF"
  459. ----------6005-------------------------------
  460. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  461.     AH = 05h
  462.     BX = handle
  463. Return: CF set on error
  464.        DH = error code (see AX=01FFh)
  465.     CF clear if successful
  466. ----------6005-------------------------------
  467. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  468.     AH = 05h
  469.     DS:SI -> password or a null byte
  470.     BL = new value for the semaphor of MDEBUG
  471.          00h  enable popup of MDEBUG
  472.          else disable popup of MDEBUG
  473. Return: AX = return code
  474.         FFFEh password is invalid
  475.         FFFDh display mode is invalid
  476.        else successful
  477.         BL = old value of the semapor of MDEBUG
  478.         BH = old value of the INT 08h semaphor
  479.             (this semaphor is always reset after this function)
  480. ----------6006-------------------------------
  481. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  482.     AH = 06h
  483.     BX = handle
  484.     ES:DI -> buffer
  485.     CX = length
  486. Return: CF set on error
  487.         DH = error code (see AX=01FFh)
  488.     CF clear if successful
  489.         CX = length    
  490. Note:    copies the local net address associated with the handle into the buffer
  491. ----------6006-------------------------------
  492. INT 60 - MDEBUG - GET PASSWORD STATUS
  493.     AH = 06h
  494. Return: AL = status
  495.         00h password inactive
  496.         01h password active
  497. ----------6007-------------------------------
  498. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  499.     AH = 07h
  500.     BX = handle
  501. Return: CF set on error
  502.         DH = error code (see AX=01FFh)
  503.     CF clear if successful
  504. ----------600A-------------------------------
  505. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  506.     AH = 0Ah
  507. Return: CF set on error
  508.         DH = error code (0Bh) (see AX=01FFh)
  509.     CF clear if successful
  510.         ES:DI -> parameter table (see below)
  511.  
  512. Format of parameter table:
  513. Offset    Size    Description
  514.  00h    BYTE    major revision of packet driver spec driver conforms to
  515.  01h    BYTE    minor revision of packet driver spec
  516.  02h    BYTE    length of this structure in bytes
  517.  03h    BYTE    length of a MAC-layer address
  518.  04h    WORD    maximum transfer unit, including MAC headers
  519.  06h    WORD    buffer size for multicast addr
  520.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  521.  0Ah    WORD    number of transmit buffers
  522.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  523. ----------600B-------------------------------
  524. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  525.     AH = 0Bh
  526.     DS:SI -> buffer
  527.     CX = length of buffer
  528.     ES:DI -> FAR function to call when buffer becomes available
  529. Return: CF set on error
  530.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  531.     CF clear if successful
  532. Note:    unlike function 04h, the buffer is not available for modification as
  533.       soon as the call returns; the buffer may be queued by the driver and
  534.       not processed until later
  535. SeeAlso: AH=04h"Packet Driver"
  536.  
  537. Completion function called with:
  538.     AX = result
  539.         00h copy OK
  540.         nonzero error
  541.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  542. ----------600C-------------------------------
  543. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  544.     AH = 0Ch
  545. Return: AL = status
  546.         00h successful
  547.         ES:SI -> 6-byte station address
  548.         02h semaphore service is unavailable
  549. ----------6011-------------------------------
  550. INT 60 - 3com, 10-NET, Banyan VINES - LOCK AND WAIT
  551.     AH = 11h
  552.     AL = drive number or 0
  553.     DX = number of seconds to wait
  554.     ES:SI = Ethernet address or 0
  555.     DS:BX -> 31-byte ASCIZ semaphore name
  556. Return: AL = status
  557.         00h successful
  558.         01h timeout
  559.         02h server not responding
  560.         03h invalid semaphore name
  561.         04h semaphore list is full
  562.         05h invalid drive ID
  563.         06h invalid Ethernet address
  564.         07h not logged in
  565.         08h write to network failed
  566.         09h semaphore already logged for this CPU
  567. SeeAlso: AH=12h,AH=13h
  568. ----------6012-------------------------------
  569. INT 60 - 3com, 10-NET, Banyan VINES - LOCK
  570.     AH = 12h
  571.     AL = drive number or 00h
  572.     ES:SI = Ethernet address or 0000h:0000h
  573.     DS:BX -> 31-byte ASCIZ semaphore name
  574. Return: AL = status (see also AH=11h)
  575.         01h semaphore currently locked by another PC
  576. Note:    unlike function 11h, this function returns immediately
  577. SeeAlso: AH=11h,AH=13h
  578. ----------6013-------------------------------
  579. INT 60 - 3com, 10-NET, Banyan VINES - UNLOCK
  580.     AH = 13h
  581.     AL = drive number or 00h
  582.     ES:SI = Ethernet address or 0000h:0000h
  583.     DS:BX -> 31-byte ASCIZ semaphore name
  584. Return: AL = status (see also AH=11h)
  585.         1 semaphore not locked
  586. SeeAlso: AH=11h,AH=12h
  587. ----------6014-------------------------------
  588. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  589.     AH = 14h
  590.     BX = handle
  591.     CX = mode
  592.         01h turn off receiver
  593.         02h receive only packets sent to this interface
  594.         03h mode 2 plus broadcast packets
  595.         04h mode 3 plus limited multicast packets
  596.         05h mode 3 plus all multicast packets
  597.         06h all packets
  598. Return: CF set on error
  599.        DH = error code (01h,08h) (see AX=01FFh)
  600.     CF clear if successful
  601. SeeAlso: AH=15h
  602. ----------6015-------------------------------
  603. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  604.     AH = 15h
  605.     BX = handle
  606. Return: CF set on error
  607.         DH = error code (01h) (see AX=01FFh)
  608.     CF clear if successful
  609.         AX = mode    
  610. SeeAlso: AH=14h
  611. ----------6016-------------------------------
  612. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  613.     AH = 16h
  614.     ES:DI -> multicast list
  615.     CX = length of list in bytes
  616. Return: CF set on error
  617.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  618.     CF clear if successful
  619. SeeAlso: AH=17h
  620. ----------6017-------------------------------
  621. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  622.     AH = 17h
  623. Return: CF set on error
  624.         DH = error code (06h,09h) (see AX=01FFh)
  625.     CF clear if successful
  626.         ES:DI -> multicast addresses (do not modify)
  627.         CX = bytes of multicast addresses currently in use
  628. SeeAlso: AH=16h
  629. ----------6018-------------------------------
  630. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  631.     AH = 18h
  632.     BX = handle
  633. Return: CF set on error
  634.         DH = error code (01h) (see AX=01FFh)
  635.     CF clear if successful
  636.         DS:SI -> statistics (see below)
  637.  
  638. Format of statistics:
  639. Offset    Size    Description
  640.  00h    DWORD    packets in
  641.  04h    DWORD    packets out
  642.  08h    DWORD    bytes in
  643.  0Ch    DWORD    bytes out
  644.  10h    DWORD    errors in
  645.  14h    DWORD    errors out
  646.  18h    DWORD    packets dropped    
  647. ----------6019-------------------------------
  648. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  649.     AH = 19h
  650.     ES:DI -> address
  651.     CX = length of address
  652. Return: CF set on error
  653.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  654.     CF clear if successful
  655.         CX = length
  656. ----------61---------------------------------
  657. INT 61 - reserved for user interrupt
  658. ----------61---------------------------------
  659. INT 61 - Atari Portfolio - EXTENDED BIOS
  660.    provides subfunctions such as turning off the machine, accessing internal
  661.    variables, and mapping memory cards
  662. SeeAlso: INT 60"Atari"
  663. ----------61---------------------------------
  664. INT 61 - HP 95LX System Manager - LOAD DS
  665. SeeAlso: INT 60"HP 95LX"
  666. ----------61---------------------------------
  667. INT 61 - JPI TopSPEED Modula-2 - PROCEDURE EXIT TRAP
  668. SeeAlso: INT 61"JPI"
  669. ----------61---------------------------------
  670. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  671.     AH = system call number
  672. Return: AL = basic error
  673.     AH = suberror number
  674. ----------61---------------------------------
  675. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  676. SeeAlso: INT 60"Adaptec"
  677. ----------610001-----------------------------
  678. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  679.     AX = 0001h
  680.     DS:DX -> communications control block (function 0001h)
  681. Return: AX = status
  682.         0000h  successful
  683.         0001h  service not installed
  684.         0002h  invalid service ID
  685.         0098h  resource already in use
  686.         009Eh  address family does not exist
  687.         009Fh  socket type does not exist
  688.         00A0h  protocol does not exist
  689.         00A1h  no more sockets available
  690.         00A2h  no more buffer space available
  691. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  692.       interrupt handler is identified by the string "BANV" in the four
  693.       bytes immediately preceding the interrupt handler
  694.  
  695. Format of control block:
  696. Offset    Size    Description
  697.  00h    WORD    0001h
  698.  02h    WORD    pointer to argument block
  699.  04h    WORD    error return code
  700.  06h  4 BYTEs    reserved
  701.  
  702. Format of argument block:
  703. Offset    Size    Description
  704.  00h    WORD    pointer to 2-byte buffer for socket identifier
  705.  02h    WORD    address family
  706.         0003h Banyan
  707.  04h    WORD    socket type
  708.         in address family 0003h
  709.             0001h IPC socket
  710.             0002h SPP socket
  711.  06h    WORD    protocol number
  712.         FFFFh default
  713.  08h    WORD    pointer to 16-byte buffer for socket address
  714.  0Ah    WORD    local port number
  715.         0000h if service should assign transient port number
  716.         0001h to 01FFh well-known port number (assigned by Banyan)
  717.  
  718. Format of IPC port:
  719. Offset    Size    Description
  720.  00h    WORD    address family (always 0003h for Banyan ports)
  721.  04h  4 BYTEs    network number (server's serial number)
  722.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  723.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  724.  0Ah    BYTE    hop count
  725.  0Bh  5 BYTEs    filler
  726. ----------610001-----------------------------
  727. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  728.     AX = 0001h
  729.     DS:DX -> communications control block (function 0002h)
  730. Return: AX = status
  731.         0000h  successful
  732.         0001h  service not installed
  733.         0002h  invalid service ID
  734.         0003h-000Ah reserved for BANV interface errors
  735.         0097h  invalid socket identifier
  736.         009Bh  destination node unreachable
  737.         009Ch  message overflow
  738.         009Dh  destination socket nonexistent
  739.         00A2h  no more buffer space
  740.         00A3h  timeout
  741.         00B1h  resource disconnect
  742. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  743.       interrupt handler is identified by the string "BANV" in the four
  744.       bytes immediately preceding the interrupt handler
  745.  
  746. Format of control block:
  747. Offset    Size    Description
  748.  00h    WORD    0002h
  749.  02h    WORD    pointer to argument block (see below)
  750.  04h    WORD    error return code
  751.         0000h successful
  752.         0097h invalid socket ID
  753.         00A2h no more buffer space
  754.         00A3h timeout event
  755.         00A5h resource not available
  756.         00A6h internal communication failure
  757.         00B1h resource disconnect
  758.  06h  4 BYTEs    reserved
  759.  
  760. Format of argument block:
  761. Offset    Size    Description
  762.  00h    WORD    routine metric
  763.  02h    WORD    error return code
  764.  04h    WORD    socket identifier
  765.  06h    WORD    pointer to send buffer
  766.  08h    WORD    length of send buffer
  767.  0Ah    WORD    flags
  768.         bit 0: async request
  769.             1: reliable message
  770.             3: end of user message received
  771.             4: vectored request (if set, send buffer contains buffer
  772.             descriptors)
  773.             5: connection-specific receive
  774.             6: change to connection-specific receive mode
  775.  0Ch 16 BYTEs    socket address (see below)
  776.  1Ch    WORD    timeout value in multiples of 200ms
  777.  1Eh    WORD    connection identifier
  778.  20h    WORD    type of request
  779.         0001h send message
  780.         0002h establish a virtual connection
  781.         0003h terminate a virtual connection
  782.  
  783. Format of buffer descriptor:
  784. Offset    Size    Description
  785.  00h    WORD    data segment
  786.  02h    WORD    buffer pointer
  787.  04h    WORD    buffer length
  788.  06h    WORD    character count
  789.  
  790. Format of socket address for unreliable datagrams:
  791. Offset    Size    Description
  792.  00h    WORD    0003h      address family
  793.  02h    DWORD    FFFFFFFFh network number
  794.  06h    WORD    FFFFh      subnet number
  795.  08h    WORD          local port number
  796.  0Ah    BYTE    00h-0Fh      hop count
  797.  0Bh  5 BYTEs    0000h      filler
  798. ----------610001-----------------------------
  799. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  800.     AX = 0001h
  801.     DS:DX -> communications control block (function 0003h)
  802. Return: AX = status
  803.         0000h  successful
  804.         0001h  service not installed
  805.         0002h  invalid service ID
  806.         0003h-000Ah reserved for BANV interface errors
  807.         0097h  invalid socket identifier
  808.         00A2h  no more buffer space
  809.         00A3h  timeout
  810. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  811.       interrupt handler is identified by the string "BANV" in the four
  812.       bytes immediately preceding the interrupt handler
  813.  
  814. Format of control block:
  815. Offset    Size    Description
  816.  00h    WORD    0003h
  817.  02h    WORD    pointer to argument block (see below)
  818.  04h    WORD    error return code
  819.         0000h successful
  820.         0097h invalid socket ID
  821.         00A2h no more buffer space
  822.         00A3h timeout event
  823.         00A5h resource not available
  824.         00A6h internal communication failure
  825.         00B1h resource disconnect
  826.  06h  4 BYTEs    reserved
  827.  
  828. Format of argument block:
  829. Offset    Size    Description
  830.  00h    WORD    character count
  831.  02h    WORD    error return code
  832.  04h    WORD    socket identifier
  833.  06h    WORD    pointer to receive buffer
  834.  08h    WORD    length of receive buffer
  835.  0Ah    WORD    flags
  836.         bit 0: async request
  837.             2: flush receive buffer on overflow
  838.             3: end of user message received
  839.             4: vectored request (if set, receive buffer contains buffer
  840.             descriptors)
  841.             5: connection-specific receive
  842.             6: change to connection-specific receive mode
  843.  0Ch 16 BYTEs    socket address
  844.  1Ch    WORD    timeout value in multiples of 200ms
  845.  1Eh    WORD    connection identifier
  846.  20h    WORD    type of response
  847.         0001h message received
  848.         0002h virtual connection established
  849.         0003h virtual connection terminated
  850.  
  851. Format of buffer descriptor:
  852. Offset    Size    Description
  853.  00h    WORD    data segment
  854.  02h    WORD    buffer pointer
  855.  04h    WORD    buffer length
  856.  06h    WORD    character count
  857. ----------610001-----------------------------
  858. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  859.     AX = 0001h
  860.     DS:DX -> communications control block (function 0004h)
  861. Return: AX = status
  862.         0000h  successful
  863.         0001h  service not installed
  864.         0002h  invalid service ID
  865.         0003h-000Ah reserved for BANV interface errors
  866.         0097h  invalid socket identifier
  867. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  868.       interrupt handler is identified by the string "BANV" in the four
  869.       bytes immediately preceding the interrupt handler
  870.  
  871. Format of control block:
  872. Offset    Size    Description
  873.  00h    WORD    0004h
  874.  02h    WORD    pointer to argument block (see below)
  875.  04h    WORD    error return code
  876.  06h  4 BYTEs    reserved
  877.  
  878. Format of argument block:
  879. Offset    Size    Description
  880.  00h    WORD    socket identifier
  881. ----------610001-----------------------------
  882. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  883.     AX = 0001h
  884.     DS:DX -> communications control block (function 0005h)
  885. Return: AX = status
  886.         0000h  successful
  887.         0001h  service not installed
  888.         0002h  invalid service ID
  889.         0003h-000Ah reserved for BANV interface errors
  890.         00A2h  no more buffer space available
  891.         00A3h  timeout event
  892. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  893.       interrupt handler is identified by the string "BANV" in the four
  894.       bytes immediately preceding the interrupt handler
  895.     returns results for all asynchronous operations invoked from the
  896.       data segment used for this call
  897.  
  898. Format of control block:
  899. Offset    Size    Description
  900.  00h    WORD    0005h
  901.  02h    WORD    pointer to argument block (see below)
  902.  04h    WORD    error return code
  903.  06h  4 BYTEs    reserved
  904.  
  905. Format of argument block:
  906. Offset    Size    Description
  907.  00h    WORD    pointer to WORD event pointer
  908.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  909. ----------610001-----------------------------
  910. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  911.     AX = 0001h
  912.     DS:DX -> communications control block (function 0008h)
  913. Return: AX = status
  914.         0000h  successful
  915.         00A2h  no more buffer space available
  916. Note:    BANYAN can use any interrupt from 60h through 66h (default 61h).  The
  917.       Banyan interrupt handler is identified by the string "BANV" in the
  918.       four bytes immediately preceding the interrupt handler
  919.  
  920. Format of control block:
  921. Offset    Size    Description
  922.  00h    WORD    0008h
  923.  02h    WORD    process type
  924.         0001h transient process
  925.         0002h resident process
  926.  04h    WORD    error return code
  927.  06h  4 BYTEs    reserved
  928. ----------610001-----------------------------
  929. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  930.     AX = 0001h
  931.     DS:DX -> communications control block (function 000Bh)
  932. Return: AX = status
  933.         0000h  successful
  934.         0001h  service not installed
  935.         0002h  invalid service ID
  936.         0003h-000Ah reserved for BANV interface errors
  937.         00A2h  no more buffer space available
  938. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  939.       interrupt handler is identified by the string "BANV" in the four
  940.       bytes immediately preceding the interrupt handler
  941.     FAR user function is invoked with SS,DS, and ES set to segment of
  942.       control block, and with the stack containing
  943.         DWORD    return address
  944.         WORD    argument pointer (sosend or sorec argument block)
  945.         WORD    error return code
  946.             0000h argument pointer is valid
  947.             00A3h timeout
  948.  
  949. Format of control block:
  950. Offset    Size    Description
  951.  00h    WORD    000Bh
  952.  02h    WORD    pointer to argument block (see below)
  953.  04h    WORD    error return code
  954.  06h  2 BYTEs    reserved
  955.  08h    WORD    user CS register
  956.  
  957. Format of argument block:
  958. Offset    Size    Description
  959.  00h    WORD    pointer to user interrupt function    
  960.  02h    WORD    pointer to user stack
  961.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  962. ----------610002-----------------------------
  963. INT 61 - Banyan VINES - 3270 INTERFACE
  964.     AX = 0002h
  965.     BH = function
  966.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  967.         02h "pi2bsc" (3270/BSC only)
  968.         03h    "pi2get"    get information stored in 3270 resident driver
  969.         04h "pi2put"    store information in 3270 resident driver
  970.         05h "pi2gcur"   get current screen position
  971.         07h "pi2sdat"   send data keystroke
  972.         08h "pi2scom"   send command keystroke
  973.         0Ah "pi2field"  get field info for arbitrary screen positions
  974.         0Fh "pi2stat"   get logical unit/device status
  975.         12h "pi2nlus"   determine logical unit/device assignment
  976.         13h "pi2gate"   specifies comm port address to gateway service
  977.         14h "pi2attach" attach a logical unit/device
  978.         15h "pi2sdev"   save logical unit/device info in resident driver
  979.                 (not supported in >3.0)
  980.         16h "pi2gdev"   get device information (not supported in >3.0)
  981.         17h "pi2luinfo" get info about specific logical unit/device
  982.         18h "pi2gerr"   get finer error detail
  983.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  984.         1Ah "pi2shut"   release memory-resident module
  985.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  986.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  987.     DS:CX -> argument block (except BH=00h,1Ah)
  988. Return: AX = status
  989.         0000h successful
  990.         000Bh invalid parameter or data does not fit data area
  991.         000Ch another code path currently active in resident driver
  992.         000Dh operation currently not allowed
  993.         0032h encountered connection disconnect error
  994.         0033h encountered "sosend" completion error
  995.         0034h encountered "sosend" communication error
  996.         0035h attach request refused.  extended error info via "pi2gerr":
  997.             01h resource unavailable
  998.             02h invalid type
  999.             03h version mismatch
  1000.             04h invalid logical unit number
  1001.             05h error during ARL processing
  1002.             06h no access for user
  1003.         0071h encountered "sosock" error
  1004.         0072h encountered unrecognizable error
  1005.         0073h encountered "sowait" error (extended info via "pi2gerr")
  1006.         0074h encountered invalid type-of-request on "sowait"
  1007.         0075h encountered "sorec" error (extended info via "pi2gerr")
  1008.         0076h encountered "sorec" completion error (ext info via "pi2gerr")
  1009.         0077h encountered connection request
  1010.         0078h encountered unrecognizable data
  1011.         0079h encountered unknown connection ID (ext info via "pi2gerr")
  1012. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  1013.       which is loaded first.  The other interface will use AX=000Ah
  1014.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  1015.       or 3270/BSC resident driver, which must be reloaded by the user
  1016.  
  1017. Format of argument block for BH=03h,04h:
  1018. Offset    Size    Description
  1019.  00h    WORD    size of data area (max 256)
  1020.  02h  N BYTEs    data area
  1021.  
  1022. Format of argument block for BH=05h:
  1023. Offset    Size    Description
  1024.  00h    WORD    logical unit/device number
  1025.  02h    WORD    pointer to WORD buffer for cursor index
  1026.  04h    WORD    pointer to BYTE buffer for current field attribute
  1027.  
  1028. Format of argument block for BH=07h:
  1029. Offset    Size    Description
  1030.  00h    WORD    logical unit/device number
  1031.  02h    WORD    ASCII data byte
  1032.  04h    WORD    pointer to WORD count of characters which will need updating
  1033.  
  1034. Format of argument block for BH=08h:
  1035. Offset    Size    Description
  1036.  00h    WORD    logical unit/device number
  1037.  02h    WORD    keystroke
  1038.         0000h Enter
  1039.         0001h Clear
  1040.         0002h PA1
  1041.         0003h PA2
  1042.         0004h PA3
  1043.         0005h PF1
  1044.         ...
  1045.         001Ch PF24
  1046.         001Dh CSELECT (cursor select)
  1047.         001Eh Insert
  1048.         001Fh Delete
  1049.         0020h EOField
  1050.         0021h EINPUT (erase input)
  1051.         0022h Reset
  1052.         0023h Attention
  1053.         0024h SysReq
  1054.         0025h Duplicate
  1055.         0026h Fieldmark
  1056.         0027h Home
  1057.         0028h NextLine
  1058.         0029h Tab
  1059.         002Ah BackTab
  1060.         002Bh cursor up
  1061.         002Ch cursor down
  1062.         002Dh cursor right
  1063.         002Eh cursor left
  1064.         002Fh double cursor right
  1065.         0030h double cursor left
  1066.         0031h PRINT
  1067.         0032h CANCEL
  1068.         0033h Backspace
  1069.  
  1070. Format of argument block for BH=0Ah:
  1071. Offset    Size    Description
  1072.  00h    WORD    logical unit/device number
  1073.  02h    WORD    screen index
  1074.  04h    WORD    pointer to WORD buffer for field length
  1075.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  1076.  
  1077. Format of argument block for BH=0Fh:
  1078. Offset    Size    Description
  1079.  00h    WORD    logical unit/device number
  1080.  02h    WORD    clear mask (clear these bits of status after returning status)
  1081.  04h    WORD    pointer to WORD buffer for status
  1082.         bit 10: status modified
  1083.         bit  9: buffer modified
  1084.         bit  8: set cursor
  1085.         bit  5: sound alarm
  1086.         bits 0,1: size of print line for printer logical units
  1087.             00 unformatted line
  1088.             01 40-character line
  1089.             10 64-character line
  1090.             11 80-character line
  1091.  
  1092. Format of argument block for BH=12h:
  1093. Offset    Size    Description
  1094.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  1095.  02h    WORD    pointer to WORD buffer for version number
  1096.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  1097.  
  1098. Format of argument block for BH=13h:
  1099. Offset    Size    Description
  1100.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  1101.  
  1102. Format of argument block for BH=14h:
  1103. Offset    Size    Description
  1104.  00h    WORD    logical unit/device number 
  1105.         0000h attach any free device of the specified type
  1106.  02h    WORD    logical unit/device type
  1107.         (3270/SNA) 01h, 02h, or 03h
  1108.         (3270/BSC) 02h display
  1109.         (3270/BSC) 03h printer
  1110.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  1111.  
  1112. Format of argument block for BH=16h:
  1113. Offset    Size    Description
  1114.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  1115.         first WORD must be set to desired logical unit/device number
  1116.  
  1117. Format of argument block for BH=17h:
  1118. Offset    Size    Description
  1119.  00h    WORD    logical unit/device number
  1120.  02h    WORD    pointer to information block in caller's DS (see below)
  1121.  
  1122. Format of argument block for BH=18h:
  1123. Offset    Size    Description
  1124.  00h    WORD    pointer to WORD buffer for major error code
  1125.  02h    WORD    pointer to WORD buffer for minor error code
  1126.  
  1127. Format of argument block for BH=19h:
  1128. Offset    Size    Description
  1129.  00h    WORD    logical unit/device number
  1130.  
  1131. Format of argument block for BH=1Ch,1Dh:
  1132. Offset    Size    Description
  1133.  00h    WORD    pointer to profile block in caller's DS (see below)
  1134.  
  1135. Format of device block, argument block for BH=15h:
  1136. Offset    Size    Description
  1137.  00h    WORD    logical unit/device number
  1138.  02h    WORD    logical unit/device type
  1139.  04h    WORD    display model number
  1140.  06h    WORD    numeric checking
  1141.  08h    WORD    status line
  1142.  0Ah    BYTE    unprotected normal field attribute
  1143.  0Bh    BYTE    unprotected intensified field attribute
  1144.  0Ch    BYTE    protected normal field attribute
  1145.  0Dh    BYTE    protected intensified field attribute
  1146.  0Eh    WORD    reserved
  1147.  10h    WORD    printer port number
  1148.  
  1149. Format of information block:
  1150. Offset    Size    Description
  1151.  00h    WORD    device model number
  1152.  02h    DWORD    screen buffer pointer
  1153.  06h    DWORD    status line pointer (see below)
  1154.  0Ah    DWORD    reserved
  1155.  
  1156. Format of status line:
  1157. Offset    Size    Description
  1158.  00h    BYTE    comm line status
  1159.         00h inactive
  1160.         01h active
  1161.  01h    BYTE    activation level
  1162.         01h physical unit activated
  1163.         02h logical unit also activated
  1164.         03h session is bound
  1165.  02h    BYTE    data traffic state
  1166.         00h inactive
  1167.         01h active
  1168.  03h    BYTE    screen ownership
  1169.         00h SLU->PLU sessoin owns screen
  1170.         01h SLU->SSCP session owns screen
  1171.  04h    BYTE    keyboard status
  1172.         00h UNLOCK - ready to accept data
  1173.         01h TIME - aid was struck
  1174.         02h SYSTEM - received response no restore
  1175.         03h FUNCTION - unavailable keyboard function
  1176.         04h INPUT - not currently used
  1177.         05h ENDFIELD - field filled in insert mode
  1178.         06h PROTECTED - attempt to enter in protected field
  1179.         07h NUMERIC - attempt to enter in numeric field
  1180.         08h PROGRAM - error in outbound data stream
  1181.  05h    BYTE    insert mode
  1182.         01h if in insert mode
  1183.  06h    BYTE    numeric
  1184.         01h if current screen buffer is numeric only
  1185.  07h    BYTE    printer status
  1186.         00h printer not assigned
  1187.         01h printer is inactive
  1188.         02h printer error
  1189.         03h currently printing
  1190.         04h printer is busy
  1191.         05h printer is very busy
  1192.  08h    BYTE    printer assignment
  1193.  09h    BYTE    maximum size of network name
  1194.  0Ah  N BYTEs    ASCIZ network name
  1195.     BYTE    maximum size of message window
  1196.       M BYTEs    null-terminated message window
  1197.     BYTE    code set
  1198.         00h EBCDIC
  1199.         01h ASCII
  1200.       M BYTEs    extended attributes
  1201.         01h extended attributes are in effect (stored at screen+1920)
  1202.             each extended attribute specifies
  1203.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  1204.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  1205.                   100=green,101=turquoise,110=yellow,111=white
  1206.     BYTE    extended color
  1207.         01h other than base color is in effect
  1208.  
  1209. Format of profile block:
  1210. Offset    Size    Description
  1211.  00h 64 BYTEs    gateway service name
  1212.  40h 16 BYTEs    gateway comm port address
  1213.  50h    WORD    primary logical unit number
  1214.  52h    WORD    secondary logical unit type
  1215.  54h    WORD    secondary logical unit number
  1216.  56h    WORD    printer assignment
  1217.  58h 50 BYTEs    keyboard definitions filename
  1218. ----------610003-----------------------------
  1219. INT 61 - Banyan VINES - ASYNCHRONOUS TERMINAL EMULATION
  1220.     AX = 0003h
  1221.     DS:BX -> argument block with function number (see below)
  1222. Return: AX = status
  1223.         0000h successful
  1224.         000Bh invalid session ID
  1225.         000Ch session not active
  1226.         000Dh invalid request type
  1227.         000Eh invalid parameters
  1228.         000Fh out of heap space
  1229.         0010h timeout on send
  1230.         0011h Banyan communications error
  1231.         0012h session not waiting for host
  1232.         0013h session is active
  1233.         0014h duplicate suspend session request
  1234.         0015h no session suspended
  1235.         0016h ring data buffer full
  1236.         0017h printer error encountered
  1237.         0018h Banyan communications error
  1238.         0019h unable to make connection
  1239.         001Ah no ring buffer specified at startup
  1240.         001Bh service is down
  1241.         001Ch invalid service name
  1242.         001Dh service is closed
  1243.         001Eh invalid connection name
  1244.         001Fh max session limit reached for service
  1245.         0020h access rights list for connection/dialout does not include
  1246.             this user
  1247.         0021h service not responding
  1248.         0022h missing telephone number
  1249.  
  1250. Format of argument block:
  1251. Offset    Size    Description
  1252.  00h    BYTE    session ID (00h)
  1253.  01h    BYTE    asynchronous interface request number
  1254.         00h initialize user buffer pointer information area
  1255.         01h send to host
  1256.         02h "control monitor"
  1257.         03h "flow control data": freeze/unfreeze display, ring buffer
  1258.         04h end active session
  1259.         05h set session parameter
  1260.         06h get session parameter
  1261.         07h set tab settings
  1262.         08h get tab settings
  1263.         09h refresh emulation screen
  1264.         0Ah suspend session temporarily
  1265.         0Bh restore previously suspended session
  1266.         0Ch set state of scroll lock checking
  1267.         0Dh exit emulation
  1268.         0Eh interrupt on character from host
  1269.         0Fh start a session
  1270.         10h start/stop printing of data received from host
  1271.         11h get file transfer parameters
  1272.         12h get connection information
  1273.         13h start/stop tracing data traffic in session
  1274.         14h interrupt on message from host
  1275.         15h reset error
  1276. ---request=00h---
  1277.  02h    WORD    pointer to info area in caller's current DS
  1278.         Offset    Size    Description
  1279.          00h    WORD    flags
  1280.                 0000h don't read interface's data buffer
  1281.                 0001h read data buffer
  1282.          02h    DWORD    pointer to ring buffer
  1283.          06h    WORD    length of ring buffer
  1284.          08h    WORD    ring buffer offset to last byte read by caller
  1285.          0Ah    DWORD    pointer to WORD containing offset of last byte
  1286.                   in ring buffer filled
  1287.          0Eh    DWORD    pointer to screen buffer
  1288.          12h    DWORD    pointer to field containing cursor position
  1289.          16h    DWORD    pointer to terminal status area (see below)
  1290. ---request=01h---
  1291.  02h    BYTE    type
  1292.         00h ASCII byte
  1293.         01h ASCII string
  1294.         02h terminal function code
  1295.         03h up arrow
  1296.         04h down arrow
  1297.         05h left arrow
  1298.         06h right arrow
  1299.         07h break
  1300.  03h  N BYTEs    type-specific info
  1301.         Offset    Size    Description
  1302.         ---ASCII byte---
  1303.          03h    BYTE    byte to send to host
  1304.         ---ASCII string---
  1305.          03h    WORD    length of string
  1306.          05h    WORD    pointer to string
  1307.         ---terminal function code (VT52/VT100)---
  1308.          03h    BYTE    function code
  1309.                 00h keypad 0
  1310.                 01h keypad 1
  1311.                 ...
  1312.                 09h keypad 9
  1313.                 0Ah keypad -
  1314.                 0Bh keypad ,
  1315.                 0Ch keypad .
  1316.                 0Dh keypad ENTER
  1317.                 0Eh PF1
  1318.                 0Fh PF2
  1319.                 10h PF3
  1320.                 11h PF4
  1321.         ---terminal function code (IBM3101)---
  1322.          03h    BYTE    function code
  1323.                 00h PF1
  1324.                 ...
  1325.                 07h PF8
  1326.                 08h Home
  1327. ---request=02h---
  1328.  02h    BYTE    display flag
  1329.         00h don't display data received from host
  1330.         01h display data
  1331. ---request=03h---
  1332.  02h    BYTE    flow control flag
  1333.         00h allow characters to be put into display or ring buffer
  1334.         01h don't place any more characters into display or ring buffer
  1335. ---request=05h,06h---
  1336.  02h    BYTE    parameter number
  1337.         00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  1338.             05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
  1339.         01h parity (00h=none, 01h=odd, 02h=even)
  1340.         02h duplex (00h=full, 01h=half)
  1341.         03h character size (00h=7 bits, 01h=8 bits)
  1342.         04h stop bits (00h=1, 01h=2)
  1343.         05h XON/XOFF flow control (00h=no, 01h=yes)
  1344.         07h intercharacter delay in tenths of a second
  1345.         08h interline delay in tenths of a second
  1346.         09h auto linefeed (00h=no, 01h=yes)
  1347.         0Ah filter control characters (00h=no, 01h=yes)
  1348.         0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  1349.         0Ch auto wrap (00h=no, 01h=yes)
  1350.         0Dh cursor shape (00h=underscore, 01h=block)
  1351.         0Eh character set (00h=UK, 01h=US ASCII)
  1352.         0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  1353.  03h    BYTE    parameter value (returned for 06h)
  1354. ---request=07h,08h---
  1355.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1356.           each byte = 00h if no tab, 01h if tab at that position
  1357. ---request=0Ah---
  1358.  02h    WORD    size of session information to be saved
  1359.  04h    WORD    pointer to buffer in caller's DS
  1360. ---request=0Bh---
  1361.  02h    WORD    size of buffer into which session info is restored
  1362.  04h    WORD    pointer to buffer in caller's DS
  1363. ---request=0Ch---
  1364.  02h    BYTE    check_scroll_lock flag
  1365.         00h off
  1366.         01h on (display of host data stopped while ScrollLock on)
  1367. ---request=0Eh,14h---
  1368.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1369.  06h    DWORD    stack pointer to use when call is made
  1370. ---request=0Fh---
  1371.  02h    WORD    pointer to information area in caller's current DS
  1372.         Offset    Size    Description
  1373.          00h    WORD    length of service name
  1374.          02h    WORD    pointer to service name in caller's DS
  1375.          04h    BYTE    type of connection
  1376.                 (00h=connection name, 01h=dialout)
  1377.          05h    WORD    length of connection name/telephone number
  1378.          07h    WORD    pointer to connection name/telephone number
  1379. ---request=10h---
  1380.  02h    WORD    print capture flag (00h=off, 01h=on)
  1381. ---request=11h---
  1382.  02h    WORD    pointer to info area in caller's current DS
  1383.         Offset    Size    Description
  1384.          00h    BYTE    protocol flag (00h none, 01h Kermit)
  1385.          01h    BYTE    direction flag (00h send, 01h receive)
  1386.          02h    BYTE    length of null-terminated PC filename
  1387.          03h    DWORD    pointer to null-terminated PC filename
  1388.          07h    BYTE    length of null-terminated host filename
  1389.          08h    DWORD    pointer to null-terminated host filename
  1390. ---request=12h---
  1391.  02h    WORD    pointer to info area in caller's current DS (see below)
  1392.         Offset    Size    Description
  1393.          00h    WORD    length of service name (returned)
  1394.          02h    WORD    pointer to 64-byte buffer for service name
  1395.          04h    BYTE    type of connection
  1396.                 00h connection name
  1397.                 01h dialout
  1398.          05h    WORD    length of connection name/telephone number
  1399.          07h    WORD    pointer to 64-byte buffer for name/telno
  1400.          09h    BYTE    server line number being used (returned)
  1401. ---request=13h---
  1402.  02h    BYTE    trace flag (00h=off, 01h=on)
  1403.  
  1404. Format of terminal status area:
  1405. Offset    Size    Description
  1406.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  1407.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  1408.  02h    BYTE    current keypad mode (VT100,VT52 only)
  1409.         4Eh ("N") numeric mode
  1410.         41h ("A") application mode
  1411.  03h  4 BYTEs    current state of LEDs (VT100 only)
  1412.         00h off
  1413.         01h on
  1414.  07h    WORD    line error count
  1415.  09h    WORD    primary error code
  1416.         0000h no error
  1417.         0001h unable to make connection
  1418.         0002h communications error, restart session
  1419.         0003h async terminal emulation service unavailable
  1420.         0004h lost carrier
  1421.         0005h all matching lines busy
  1422.         0006h no lines defined for connection name
  1423.         0007h no dial lines available on server
  1424.         0008h no matching dial lines available
  1425.         0009h out of heap space
  1426.         000Ah service error encountered
  1427.         000Bh timed out waiting to connect
  1428.         000Ch communications error
  1429.         000Dh communications error
  1430.         000Eh host wants file transferred to/from PC
  1431.         000Fh host software changed session parameter
  1432.         0010h host software changed tap settings
  1433.         0011h host software changed LED indicator
  1434.         0012h host software changed display background (secondary error
  1435.             code 00h for white on black, 01h for black on white)
  1436.         0013h host software changed display option (secondary error
  1437.             code 00h for off, 01h for on)
  1438.         0014h communications error
  1439.         0015h communications error
  1440.         0016h unable to make connection
  1441.         0017h unable to make connection
  1442.  0Bh    WORD    secondary error code
  1443. ----------610004-----------------------------
  1444. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  1445.     AX = 0004h
  1446.     DS:DX -> request block (function 0008h)
  1447. Return: AX = status
  1448.         0000h server ID returned in request block
  1449.         000Fh invalid drive
  1450.         0015h drive not ready
  1451.  
  1452. Format of request block:
  1453. Offset    Size    Description
  1454.  00h    WORD    0008h
  1455.  02h    WORD    drive number (0=default, 1=A, ...)
  1456.  04h  6 BYTEs    buffer for server ID
  1457. ----------610005-----------------------------
  1458. INT 61 - Banyan VINES - PRINTER CONTROL
  1459.     AX = 0005h
  1460.     DS:DX -> request block
  1461. Return: AX = status
  1462.         0000h successful
  1463.         0001h network software not installed or incompatible
  1464.  
  1465. Format of request block:
  1466. Offset    Size    Description
  1467.  00h    WORD    function
  1468.         0201h "endspool" all data for a print job has been sent
  1469.         0205h "getactive" get currently active printer port
  1470.  02h    WORD    number of active port (1-3)
  1471.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  1472.  06h    WORD    0000h
  1473. ----------610007BX0002-----------------------
  1474. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  1475.     AX = 0007h
  1476.     BX = 0002h
  1477.     DS:DX -> StreetTalk service name
  1478.     DS:DI -> port record block (see below)
  1479. Return: AX = status
  1480.         0000h successful
  1481.         0001h PC network software not installed or incompatible
  1482.         03E9h incorrect name syntax
  1483.         03EAh organization name too long
  1484.         03EBh group name too long
  1485.         03ECh item name too long
  1486.         03EDh StreetTalk name too long
  1487.         03F3h organization not found
  1488.         03F4h group not found
  1489.         03F5h StreetTalk name not found
  1490.         03F8h not a StreetTalk name
  1491.         040Dh appropriate StreetTalk name unavailable
  1492.  
  1493. Format of port record block:
  1494. Offset    Size    Description
  1495.  00h    WORD    number of 17-byte elements
  1496.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  1497.         (see AX=0001h#"Sosock" for port format)
  1498. ----------610007BX0004-----------------------
  1499. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  1500.     AX = 0007h
  1501.     BX = 0004h
  1502.     DS:DX -> StreetTalk name of service
  1503.     DS:DI -> port record block (see below)
  1504. Return: AX = status
  1505.         0000h successful
  1506.         0001h PC network software not installed or incompatible
  1507.         03E9h incorrect name syntax
  1508.         03EAh organization name too long
  1509.         03EBh group name too long
  1510.         03ECh item name too long
  1511.         03EDh StreetTalk name too long
  1512.         03F3h organization not found
  1513.         03F4h group not found
  1514.         03F5h StreetTalk name not found
  1515.         03F8h not a StreetTalk name
  1516.         0409h modify access denied
  1517.         040Dh appropriate StreetTalk name unavailable
  1518.  
  1519. Format of port record block:
  1520. Offset    Size    Description
  1521.  00h    WORD    number of 17-byte elements
  1522.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  1523.         (see AX=0001h#"Sosock" for port format)
  1524. ----------610007BX0005-----------------------
  1525. INT 61 - Banyan VINES - GET USER NAME
  1526.     AX = 0007h
  1527.     BX = 0005h
  1528.     DS:DX -> 64-byte buffer for user's StreetTalk name
  1529. Return: AX = status
  1530.         0000h successful
  1531.         0001h network software not installed or incompatible
  1532. Note:    if no user logged in, first byte of returned name will be 00h
  1533. ----------610007BX0006-----------------------
  1534. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  1535.     AX = 0007h
  1536.     BX = 0006h
  1537.     SI = error code (>100)
  1538.     DS:DX -> 80-byte buffer for error text
  1539. Return: AX = status
  1540.         0000h successful
  1541.         0001h network software not installed or incompatible        
  1542. ----------610007BX0007-----------------------
  1543. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1544.     AX = 0007h
  1545.     BX = 0007h
  1546.     DS:DX -> NiceName block (see below)
  1547. Return: AX = status
  1548.         0000h successful
  1549.         0001h PC network software not installed or incompatible
  1550.         03E9h incorrect name syntax
  1551.         03EAh organization name too long
  1552.         03EBh group name too long
  1553.         03ECh item name too long
  1554.         03EDh StreetTalk name too long
  1555.         03F3h organization not found
  1556.         03F4h group not found
  1557.         03F5h StreetTalk name not found
  1558.         03F8h not a StreetTalk name
  1559.         040Dh appropriate StreetTalk name unavailable
  1560. SeeAlso: AX=0007h/BX=0008h
  1561.  
  1562. Format of NiceName block:
  1563. Offset    Size    Description
  1564.  00h    WORD    type of name
  1565.         0064h organization
  1566.         00C8h group
  1567.         012Ch item
  1568.  02h    WORD    pointer to ASCIZ input name
  1569.  04h    WORD    pointer to 64-byte buffer for output name
  1570. ----------610007BX0008-----------------------
  1571. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  1572.     AX = 0007h
  1573.     BX = 0008h
  1574.     DS:DX -> enumerate block (see below)
  1575. Return: AX = status
  1576.         0000h successful
  1577.         0411h all matching names have been returned
  1578.         0412h some groups unavailable, all available matches returned
  1579. Note:    each program using this call should continue until a nonzero status
  1580.       is returned; otherwise, some resources will not be freed for several
  1581.       hours
  1582. SeeAlso: AX=0007h/BX=0007h
  1583.  
  1584. Format of enumerate block:
  1585. Offset    Size    Description
  1586.  00h    WORD    return code
  1587.  02h    WORD    pointer to pattern string
  1588.  04h    WORD    enumerate type
  1589.         0064h organization
  1590.         00C8h group
  1591.         012Ch item
  1592.  06h    WORD    enumerate class
  1593.         0000h unspecified (return all matching items)
  1594.         0001h user names
  1595.         0002h service names
  1596.         0003h list names
  1597.         0004h nicknames
  1598.  08h    WORD    pointer to category criteria block (see below) or 0
  1599.  0Ah    WORD    pointer to array of 64-byte returned names
  1600.  0Ch    WORD    number of names returned
  1601.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  1602.           call)
  1603.  
  1604. Format of category criteria block:
  1605. Offset    Size    Description
  1606.  00h    WORD    exclude flag
  1607.         0000h return only items with the specified categories
  1608.         0001h return all items except those with the given categories
  1609.  02h    WORD    number of categories
  1610.  04h    WORD    category 1 value
  1611.  06h    WORD    category 2 value
  1612.         ...
  1613.  
  1614. Values for common service categories:
  1615.  0002h file service
  1616.  0003h print service
  1617.  0004h mail service
  1618.  0005h StreetTalk
  1619.  0006h time service
  1620.  0008h semaphore service
  1621.  0009h 3270/SNA service
  1622.  000Ah asynchronous terminal emulation service
  1623.  000Ch NETBIOS service
  1624.  000Dh PC-based service
  1625. ----------610008BX0002-----------------------
  1626. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  1627.     AX = 0008h
  1628.     BX = 0002h
  1629.     CX = flags
  1630.         bit 0: message will remain on screen until user presses ^X
  1631.         bit 1: ring bell after displaying message
  1632.         bit 2: blink
  1633.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  1634. Return: AX = status
  1635.         0000h successful
  1636.         000Bh message display function currently busy
  1637.         000Ch message queue full
  1638. Note:    queues up to three messages to be displayed on the bottom line
  1639. ----------610008BX0003-----------------------
  1640. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  1641.     AX = 0008h
  1642.     BX = 0003h
  1643.     DS:DX -> request block
  1644. Return: AX = status
  1645.         0000h successful
  1646.         0001h network software not installed or incompatible
  1647. Notes:    message handler should not call BIOS or DOS functions, and should
  1648.       either call next handler or simply return
  1649.     to stop intercepting messages, set prev and next request blocks to
  1650.       point at each other
  1651.  
  1652. Format of request block:
  1653. Offset    Size    Description
  1654.  00h    DWORD    pointer to user-written message handler
  1655.  04h    DWORD    pointer to next request block (filled in by VINES)
  1656.  08h    DWORD    pointer to previous request block (filled in by VINES)
  1657.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  1658.  
  1659. Format of message storage area:
  1660. Offset    Size    Description
  1661.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  1662.  10h    BYTE    message flags
  1663.  11h    WORD    reserved
  1664.  13h    BYTE    length of message
  1665.  14h 80 BYTEs    message text
  1666. ----------61000A-----------------------------
  1667. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  1668.     AX = 000Ah
  1669. Notes:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  1670.       which is loaded second.  The first interface loaded will use AX=0002h
  1671. SeeAlso: INT 61/AX=0002h
  1672. ----------6101-------------------------------
  1673. INT 61 - Banyan VINES - CHECK SERVICE
  1674.     AH = 01h
  1675.     AL = service ID
  1676.         01h communications
  1677.         02h primary 3270 emulation
  1678.         03h async terminal emulation
  1679.         04h file deflection
  1680.         07h StreetTalk
  1681.         08h environment
  1682.         0Ah secondary 3270 emulation
  1683.         0Bh semaphore service
  1684.         0Ch 3270 emulation active status
  1685.         0Dh 3270 keyboard interrupt simulator
  1686. Return: AX = status
  1687.         0000h installed
  1688.         0001h not installed
  1689.         0002h invalid ID
  1690. ----------6102-------------------------------
  1691. INT 61 - Banyan VINES - GET REVISION NUMBER
  1692.     AH = 02h
  1693.     DS:DX -> 2-byte buffer for result
  1694. Return: AX = 0000h installed
  1695.         DS:DX buffer contains revision number as
  1696.         10000d * major_ver + 100d * minor_ver + patch_revision
  1697. ----------61---------------------------------
  1698. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  1699.     BX:DX -> control block
  1700. ----------62---------------------------------
  1701. INT 62 - reserved for user interrupt
  1702. ----------62---------------------------------
  1703. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  1704. SeeAlso: INT 61"Adaptec"
  1705. ----------62---------------------------------
  1706. INT 62 - MS SQL Server/Sybase DBLIBRARY interface
  1707. ----------6201-------------------------------
  1708. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  1709.     AH = 01h
  1710. Note:    Cswitch is a set of multitasking functions by Herb Rose
  1711. SeeAlso: AH=05h,AH=06h
  1712. ----------6202-------------------------------
  1713. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  1714.     AH = 02h
  1715.     DX = semaphore number (0-63)
  1716. Return: AX = FFFFh bad semaphore number
  1717.          else  success
  1718. SeeAlso: AH=03h,AH=04h
  1719. ----------6203-------------------------------
  1720. INT 62 - Cswitch - CHECK SEMAPHORE
  1721.     AH = 03h
  1722.     DX = semaphore number (0-63)
  1723. Return: AX = FFFFh not owned
  1724.          else  owned
  1725. SeeAlso: AH=02h,AH=04h
  1726. ----------6204-------------------------------
  1727. INT 62 - Cswitch - TRIGGER SEMAPHORE
  1728.     AH = 04h
  1729.     DX = semaphore number (0-63)
  1730. Return: AX = FFFFh bad semaphore number
  1731.          else  success
  1732. SeeAlso: AH=02h,AH=03h
  1733. ----------6205-------------------------------
  1734. INT 62 - Cswitch - SLEEP
  1735.     AH = 05h
  1736.     BX = seconds to sleep
  1737. SeeAlso: AH=01h,AH=06h,AH=08h
  1738. ----------6206-------------------------------
  1739. INT 62 - Cswitch - SUSPEND
  1740.     AH = 06h
  1741. SeeAlso: AH=05h,AH=08h
  1742. ----------6207-------------------------------
  1743. INT 62 - Cswitch - SPAWN
  1744.     AH = 07h
  1745.     ES:BX -> function address to start executing at
  1746.     CX = priority (1-10)
  1747. Return: AX = FFFDh  no free memory control blocks
  1748.        = FFFEh  no free task control blocks
  1749.        = FFFFh  not enough memory to create new task stack
  1750.        = >0        the tcb number of the new task, indicating no error
  1751. SeeAlso: AH=0Fh,AH=10h
  1752. ----------6208-------------------------------
  1753. INT 62 - Cswitch - WAKE UP TASK
  1754.     AH = 08h
  1755.     BX = tcb identifier
  1756. SeeAlso: AH=05h,AH=06h
  1757. ----------6209-------------------------------
  1758. INT 62 - Cswitch - SET PRIORITY
  1759.     AH = 09h
  1760.     BX = new base priority (1-10)
  1761. Note:    the lower the priority is numerically, the more often the task will run
  1762. ----------620A-------------------------------
  1763. INT 62 - Cswitch - TEST MESSAGE QUEUE
  1764.     AH = 0Ah
  1765.     DX = queue number (0-63)
  1766. Return: AX = FFFFh bad queue number
  1767.        = 0000h nothing on queue
  1768.          else  number of bytes in first message in queue
  1769. SeeAlso: AH=0Bh,AH=0Ch
  1770. ----------620B-------------------------------
  1771. INT 62 - Cswitch - SEND MESSAGE
  1772.     AH = 0Bh
  1773.     CX = number of bytes to write
  1774.     DS:SI -> buffer
  1775.     DX = queue number (0-63)
  1776. Return: AX = FFFEh triggered by something arriving, redo the call
  1777.        = FFFFh bad queue number
  1778.        = 0000h no message was on queue
  1779.          else  number of bytes in message
  1780. SeeAlso: AH=0Ah,AH=0Ch
  1781. ----------620C-------------------------------
  1782. INT 62 - Cswitch - READ MESSAGE
  1783.     AH = 0Ch
  1784.     CX = number of bytes to read
  1785.     DS:SI -> buffer
  1786.     DX = queue number (0-63)
  1787. Return: AX = FFFFh bad queue number
  1788.          else  number of bytes transferred
  1789. SeeAlso: AH=0Ah,AH=0Bh
  1790. ----------620D-------------------------------
  1791. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  1792.     AH = 0Dh
  1793. SeeAlso: AH=0Eh
  1794. ----------620E-------------------------------
  1795. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  1796.     AH = 0Eh
  1797. SeeAlso: AH=0Dh
  1798. ----------620F-------------------------------
  1799. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  1800.     AH = 0Fh
  1801.     ES:BX -> command line
  1802.     CX = priority (1-10)
  1803.     DX = background flag
  1804.        = != 0000h  allows loading to EMS
  1805. Return: AX = 0000h task loader queue is full
  1806.        = 0001h  no error
  1807. SeeAlso: AH=07h,AH=10h,AH=13h
  1808. ----------6210-------------------------------
  1809. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  1810.     AH = 10h
  1811. SeeAlso: AH=07h,AH=0Fh
  1812. ----------6211-------------------------------
  1813. INT 62 - Cswitch - GET TCB INFORMATION
  1814.     AH = 11h
  1815.     ES:BX -> a pointer which will be set to the tcb address
  1816. Return: AX = tcb indentifier
  1817. SeeAlso: AH=12h
  1818. ----------6212-------------------------------
  1819. INT 62 - Cswitch - GET TCB ADDRESS
  1820.     AH = 12h
  1821.     ES:BX -> a pointer which will be set to the tcb table address
  1822. Return: AX = tcb indentifier
  1823. SeeAlso: AH=11h
  1824. ----------6213-------------------------------
  1825. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  1826.     AH = 13h
  1827. Return: AX = FFFCh no Memory Control Blocks available
  1828.        = FFFDh no TCBs available
  1829.        = FFFEh insufficient memory
  1830.        = FFFFh cannot open file
  1831.        = 0000h load in progress (not done yet)
  1832.          else  tcb indentifier
  1833. SeeAlso: AH=0Fh
  1834. ----------6247-------------------------------
  1835. INT 62 - PC Tools 7 COMMUTE - ???
  1836.     AH = 47h
  1837.     AL = subfunction (00h-31h)
  1838.     ???
  1839.     CF set
  1840. Return: ???
  1841. ----------6248-------------------------------
  1842. INT 62 - PC Tools 7 COMMUTE - ???
  1843.     AH = 48h
  1844.     AL = ???
  1845.     ???
  1846.     CF set
  1847. Return: ???
  1848. ----------6249-------------------------------
  1849. INT 62 - PC Tools 7 COMMUTE - ???
  1850.     AH = 49h
  1851.     ???
  1852.     CF set
  1853. Return: ???
  1854. Note:    may be the same as AH=4Ch
  1855. ----------624A-------------------------------
  1856. INT 62 - PC Tools 7 COMMUTE - ???
  1857.     AH = 4Ah
  1858.     AL = subfunction (00h-46h)
  1859.     ???
  1860.     CF set
  1861. Return: ???
  1862. ----------624B--BX1234-----------------------
  1863. INT 62 - PC Tools 7 COMMUTE - ???
  1864.     AH = 4Bh
  1865.     BX = 1234h
  1866.     CX = 1234h
  1867.     ES = ???
  1868.     CF set
  1869. Return: ???
  1870. ----------624C-------------------------------
  1871. INT 62 - PC Tools 7 COMMUTE - ???
  1872.     AH = 4Ch
  1873.     BL = subfunction
  1874.         00h ???
  1875.         02h ???
  1876. Return: CF clear if successful
  1877.     CF set on error
  1878. ----------626262-----------------------------
  1879. INT 62 - PC Tools 7 COMMUTE - INSTALLATION CHECK
  1880.     AX = 6262h
  1881.     CF set
  1882. Return: AX = 0000h
  1883.     BX = segment of resident code's PSP
  1884. ----------63---------------------------------
  1885. INT 63 - reserved for user interrupt
  1886. ----------63---------------------------------
  1887. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  1888. SeeAlso: INT 62"Adaptec"
  1889. ----------63---------------------------------
  1890. INT 63 - Oracle SQL Protected Mode Executive - ???
  1891. ----------63---------------------------------
  1892. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  1893.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  1894.    has been moved there) and places the old value here
  1895. ----------64---------------------------------
  1896. INT 64 - reserved for user interrupt
  1897. ----------64---------------------------------
  1898. INT 64 - Adaptec controllers - DRIVE 1 DATA
  1899. SeeAlso: INT 60"Adaptec"
  1900. ----------64---------------------------------
  1901. INT 64 - Oracle SQL Protected Mode Executive - ???
  1902. ----------64---------------------------------
  1903. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  1904. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  1905.       versions do not use this interrupt for IPX/SPX access, instead
  1906.       getting an entry point from INT 2F/AX=7A00h
  1907. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  1908. ----------64---------------------------------
  1909. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  1910. ----------64---------------------------------
  1911. INT 64 - Extended Batch Language v3.14+
  1912.     AH = function
  1913.         00h to 5Fh chained to previous handler
  1914.         60h to 6Ch reserved, return immediately
  1915.         80h to FFh chained to previous handler
  1916.         6Dh (v4.01+) insert tone in queue
  1917.         AL = ???
  1918.         CX = frequency in Hertz
  1919.         DL = duration in clock ticks
  1920.         Return: AL = 00h if note stored
  1921.                = 01h if no room to store
  1922.         6Eh clear ??? counter/flag
  1923.         6Fh return counter/flag that AH=6Eh clears
  1924.         70h ???
  1925.         AL = ???
  1926.         71h ???
  1927.         AL = ???
  1928.         72h ???
  1929.         73h insert byte at end of keyboard buffer
  1930.         AL = byte to insert
  1931.         Return: AL = 00h if byte inserted
  1932.                = 01h if no room to store
  1933.         74h insert byte at front of keyboard buffer
  1934.         AL = byte to insert
  1935.         Return: AL = 00h if byte inserted
  1936.                = 01h if no room to store
  1937.         75h ???
  1938.         76h get keyboard "stack" status
  1939.         AL = 'K' if kbd read will read physical keyboard
  1940.              'S' if it will read EBL internal keyboard buffer
  1941.         AH = ???
  1942.         77h clear internal keyboard buffer
  1943.         78h ???
  1944.         AL = ???
  1945.         79h ???
  1946.         7Ah ???
  1947.         AL = ???
  1948.         7Bh ???
  1949.         AL = ???
  1950.         7Ch ???
  1951.         AL = ???
  1952.         7Dh ???
  1953.         AL = ???
  1954.         7Eh clear buffer for ???
  1955.         7Fh installation check
  1956.         Return: CX = version in BCD
  1957.             DI = segment of ???
  1958.             BX = segment of next program's PSP???
  1959. Notes:    Extended Batch Language is a batch-file enhancer by Seaware
  1960.     the chaining does not check whether the interrupt had been hooked
  1961.       before, so if you try to chain when the previous vector was 
  1962.       0000h:0000h, you'll be in trouble
  1963.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  1964.       floating-point and extended function packages
  1965. ----------65---------------------------------
  1966. INT 65 - reserved for user interrupt
  1967. ----------65---------------------------------
  1968. INT 65 - Adaptec controllers - DRIVE 1 DATA
  1969. SeeAlso: INT 64"Adaptec"
  1970. ----------65---------------------------------
  1971. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  1972. ----------65---------------------------------
  1973. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  1974. ----------65---------------------------------
  1975. INT 65 - SD.COM v6.2
  1976.    The unregistered version of SD62.COM uses the low byte of this vector to
  1977.    count the number of invocations, displaying a registration reminder each
  1978.    time after the 20th use.
  1979. ----------65---------------------------------
  1980. INT 65 - Ad Lib SOUND.COM - INTERFACE
  1981.     SI = function number (see separate entries for details on several)
  1982.        = 0000h Init
  1983.        = 0002h RelTimeStart
  1984.        = 0003h SetState
  1985.        = 0004h GetState
  1986.        = 0005h Flush
  1987.        = 0006h SetMode
  1988.        = 0007h GetMode
  1989.        = 0008h SetRelVolume
  1990.        = 0009h SetTempo
  1991.        = 000Ah SetTranspose
  1992.        = 000Bh GetTranspose
  1993.        = 000Ch SetActVoice
  1994.        = 000Dh GetActVoice
  1995.        = 000Eh PlayNoteDel
  1996.        = 000Fh PlayNote
  1997.        = 0010h SetTimbre
  1998.        = 0011h SetPitch
  1999.        = 0012h SetTickBeat
  2000.        = 0013h NoteOn
  2001.        = 0014h NoteOff
  2002.        = 0015h Timbre
  2003.        = 0016h SetPitchBend
  2004.        = 0017h WaveForm
  2005.     ES:BX -> arguments
  2006. Note:    the installation check consists of checking for the signature block
  2007.       immediately preceding the interrupt handler (see below)
  2008.  
  2009. Format of signature block:
  2010. Offset    Size    Description
  2011.  00h    WORD    version number
  2012.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  2013.  15h    BYTE    01h
  2014.  16h    BYTE    01h
  2015.  17h    BYTE    00h
  2016. ----------65----SI0000-----------------------
  2017. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  2018.     SI = 0000h
  2019. ----------65----SI0003-----------------------
  2020. INT 65 - Ad Lib SOUND.COM - SET STATE
  2021.     SI = 0003h
  2022.     ES:BX -> WORD state = 0000h disabled 
  2023.                 = 0001h enabled
  2024. SeeAlso: SI=0004h
  2025. ----------65----SI0004-----------------------
  2026. INT 65 - Ad Lib SOUND.COM - GET STATE
  2027.     SI = 0004h
  2028. Return: AX = 0000h all done playing sounds
  2029.        = else  still playing sounds
  2030. SeeAlso: SI=0003h
  2031. ----------65----SI0006-----------------------
  2032. INT 65 - Ad Lib SOUND.COM - SET MODE
  2033.     SI = 0006h
  2034.     ES:BX -> WORD mode = 0000h melodic
  2035.                = 0001h percussive
  2036. SeeAlso: SI=0007h
  2037. ----------65----SI0007-----------------------
  2038. INT 65 - Ad Lib SOUND.COM - GET MODE
  2039.     SI = 0007h
  2040. Return: AX = 0000h melodic
  2041.        = 0001h percussive
  2042. SeeAlso: SI=0006h
  2043. ----------65----SI000C-----------------------
  2044. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  2045.     SI = 000Ch
  2046.     ES:BX -> WORD voice = 0000h to 0008h
  2047. SeeAlso: SI=000Dh
  2048. ----------65----SI000D-----------------------
  2049. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  2050.     SI = 000Dh
  2051. Return: AX = voice (0000h to 0008h)
  2052. SeeAlso: SI=000Ch
  2053. ----------66---------------------------------
  2054. INT 66 - reserved for user interrupt
  2055. ----------66---------------------------------
  2056. INT 66 - Adaptec controllers - DRIVE 1 DATA
  2057. SeeAlso: INT 65"Adaptec"
  2058. ----------66---------------------------------
  2059. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  2060. ----------66FFFBBXFFFB-----------------------
  2061. INT 66 - MicroHelp Stay-Res Plus - ???
  2062.     AX = FFFBh
  2063.     BX = FFFBh
  2064.     ???
  2065. Return: ???
  2066. SeeAlso: AX=FFFEh
  2067. ----------66FFFEBXFFFE-----------------------
  2068. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  2069.     AX = FFFEh
  2070.     BX = FFFEh
  2071. Return: only if unsuccessful
  2072. Notes:    installation check is for the interrupt handler to begin with the bytes
  2073.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  2074.       appear at offset 0005h (older versions) or the offset returned by
  2075.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  2076.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  2077.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  2078. SeeAlso: AX=FFFBh,AX=FFFFh
  2079. ----------66FFFFBXFFF0-----------------------
  2080. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  2081.     AX = FFFFh
  2082.     BX = FFF0h
  2083. Return: DI = offset of program name in interrupt handler segment
  2084. SeeAlso: AX=FFFBh,AX=FFFEh
  2085. ----------660688-----------------------------
  2086. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  2087.     AX = 0688h
  2088.     ???
  2089. Return: ???
  2090. ----------660689-----------------------------
  2091. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  2092.     AX = 0689h
  2093.     ???
  2094. Return: ???
  2095. ----------67---------------------------------
  2096. INT 67 - Adaptec controllers - DRIVE 1 DATA
  2097. SeeAlso: INT 66"Adaptec"
  2098. ----------6700-------------------------------
  2099. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  2100.     AH = 00h
  2101.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2102. Return: AL = status
  2103.         00h successful
  2104.         01h invalid function
  2105.         02h semaphore already locked
  2106.         03h unable to lock semaphore
  2107.         04h semaphore space exhausted
  2108.     AH = semaphore owner if status=02h
  2109. SeeAlso: AH=01h,AH=02h,INT 7F/AH=00h
  2110. ----------6701-------------------------------
  2111. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  2112.     AH = 01h
  2113.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2114. Return: AL = status (see AH=00h)
  2115.     AH = semaphore owner if status=02h
  2116. SeeAlso: AH=00h,AH=02h,INT 7F/AH=01h"Alloy"
  2117. ----------6702-------------------------------
  2118. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  2119.     AH = 02h
  2120.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2121. Return: AL = status (see AH=00h)
  2122.     AH = semaphore owner if status=02h
  2123. SeeAlso: AH=00h,AH=01h,INT 7Fh/AH=02h
  2124. ----------6740-------------------------------
  2125. INT 67 - LIM EMS - GET MANAGER STATUS
  2126.     AH = 40h
  2127. Return: AH = status
  2128.         00h successful
  2129.         80h internal error
  2130.         81h hardware malfunction
  2131.         84h undefined function requested by application
  2132. Note:    this call can be used only after establishing that the EMS driver is in
  2133.       fact present
  2134. ----------6741-------------------------------
  2135. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  2136.     AH = 41h
  2137. Return: AH = 00h function successful
  2138.         BX = segment of page frame
  2139.     AH = error code (see AH=40h)
  2140. SeeAlso: AH=58h,AH=68h
  2141. ----------6742-------------------------------
  2142. INT 67 - LIM EMS - GET NUMBER OF PAGES
  2143.     AH = 42h
  2144. Return: AH = 00h function successful
  2145.         BX = number of unallocated pages
  2146.         DX = total number of pages
  2147.     AH = error code (see AH=40h)
  2148. ----------6743-------------------------------
  2149. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  2150.     AH = 43h
  2151.     BX = number of logical pages to allocate
  2152. Return: AH = status
  2153.         00h function successful
  2154.         DX = handle
  2155.         80h internal error
  2156.         81h hardware malfunction
  2157.         84h undefined function requested
  2158.         85h no more handles available
  2159.         87h more pages requested than physically exist
  2160.         88h more pages requested than currently available
  2161.         89h zero pages requested
  2162. SeeAlso: AH=45h
  2163. ----------6744-------------------------------
  2164. INT 67 - LIM EMS - MAP MEMORY
  2165.     AH = 44h
  2166.     AL = physical page number (0-3)
  2167.     BX = logical page number
  2168.     DX = handle
  2169. Return: AH = status
  2170.         00h function successful
  2171.         80h internal error
  2172.         81h hardware malfunction
  2173.         83h invalid handle
  2174.         84h undefined function requested
  2175.         8Ah invalid logical page number
  2176.         8Bh illegal physical-page number
  2177. SeeAlso: AH=69h
  2178. ----------6745-------------------------------
  2179. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  2180.     AH = 45h
  2181.     DX = EMM handle
  2182. Return: AH = status
  2183.         00h successful
  2184.         80h internal error
  2185.         81h hardware malfunction
  2186.         83h invalid handle
  2187.         84h undefined function requested
  2188.         86h error in save or restore of mapping context
  2189. SeeAlso: AH=43h
  2190. ----------6746-------------------------------
  2191. INT 67 - LIM EMS - GET EMM VERSION
  2192.     AH = 46h
  2193. Return: AH = status
  2194.         00h successful
  2195.         AL = EMM version number
  2196.         80h internal error
  2197.         81h hardware malfunction
  2198.         84h undefined function requested
  2199. ----------6747-------------------------------
  2200. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  2201.     AH = 47h
  2202.     DX = handle
  2203. Return: AH = status
  2204.         00h successful
  2205.         80h internal error
  2206.         81h hardware malfunction
  2207.         83h invalid handle
  2208.         84h undefined function requested
  2209.         8Ch page-mapping hardware state save area is full
  2210.         8Dh save of mapping context failed
  2211. SeeAlso: AH=47h
  2212. ----------6748-------------------------------
  2213. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  2214.     AH = 48h
  2215.     DX = handle
  2216. Return: AH = status
  2217.         00h successful
  2218.         80h internal error
  2219.         81h hardware malfunction
  2220.         83h invalid handle
  2221.         84h undefined function requested
  2222.         8Eh restore of mapping context failed
  2223. SeeAlso: AH=47h
  2224. ----------6749-------------------------------
  2225. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  2226.     AH = 49h
  2227. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  2228. ----------674A-------------------------------
  2229. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  2230.     AH = 4Ah
  2231. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  2232. ----------674B-------------------------------
  2233. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  2234.     AH = 4Bh
  2235. Return: AH = status
  2236.         00h successful
  2237.         BX = number of EMM handles
  2238.         80h internal error
  2239.         81h hardware malfunction
  2240.         83h invalid handle
  2241.         84h undefined function requested
  2242. ----------674C-------------------------------
  2243. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  2244.     AH = 4Ch
  2245.     DX = EMM handle
  2246. Return: AH = status
  2247.         00h successful
  2248.         BX = number of logical pages
  2249.         80h internal error
  2250.         81h hardware malfunction
  2251.         83h invalid handle
  2252.         84h undefined function requested
  2253. SeeAlso: AH=4Dh
  2254. ----------674D-------------------------------
  2255. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  2256.     AH = 4Dh
  2257.     ES:DI -> array to receive information
  2258. Return: AH = status
  2259.         00h successful
  2260.         BX = number of active EMM handles
  2261.         array filled with 2-word entries, consisting of a handle
  2262.           and the number of pages allocated to that handle
  2263.         80h internal error
  2264.         81h hardware malfunction
  2265.         84h undefined function requested
  2266. SeeAlso: AH=4Ch
  2267. ----------674E-------------------------------
  2268. INT 67 - LIM EMS - GET OR SET PAGE MAP
  2269.     AH = 4Eh
  2270.     AL = 00h if getting mapping registers
  2271.          01h if setting mapping registers
  2272.          02h if getting and setting mapping registers at once
  2273.          03h if getting size of page-mapping array
  2274.     DS:SI -> array holding information (AL=01/02)
  2275.     ES:DI -> array to receive information (AL=00/02)
  2276. Return: AH = status
  2277.         00h successful
  2278.         AL = bytes in page-mapping array (AL=03h only)
  2279.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  2280.         80h internal error
  2281.         81h hardware malfunction
  2282.         84h undefined function requested
  2283.         8Fh undefined subfunction parameter
  2284.         A3h contents of source array corrupted (EMS 4.0?)
  2285. Note:    this function was designed to be used by multitasking operating systems
  2286.       and should not ordinarily be used by appplication software.
  2287. SeeAlso: AH=4Fh
  2288. ----------674F-------------------------------
  2289. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  2290.     AH = 4Fh
  2291.     AL = subfunction
  2292.         00h get partial page map
  2293.            DS:SI -> structure containing list of segments whose mapping
  2294.             contexts are to be saved
  2295.            ES:DI -> array to receive page map
  2296.         01h set partial page map
  2297.            DS:SI -> structure containing saved partial page map
  2298.         02h get size of partial page map
  2299.            BX = number of mappable segments in the partial map to be saved
  2300. Return: AH = status
  2301.         00h successful
  2302.         80h internal error
  2303.         81h hardware malfunction
  2304.         84h undefined function requested
  2305.         8Bh one of specified segments is not mappable
  2306.         8Fh undefined subfunction parameter
  2307.         A3h contents of partial page map corrupted or count of mappable
  2308.         segments exceeds total number of mappable segments in system
  2309.     AL = size of partial page map for subfunction 02h
  2310. SeeAlso: AH=4Eh
  2311. ----------6750-------------------------------
  2312. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  2313.     AH = 50h
  2314.     AL = subfunction
  2315.         00h use physical page numbers
  2316.         01h use segment addresses
  2317.     DX = handle
  2318.     CX = number of entries in array
  2319.     DS:SI -> mapping array (see below)
  2320. Return: AH = status
  2321.         00h successful
  2322.         80h internal error
  2323.         81h hardware malfunction
  2324.         83h invalid handle
  2325.         84h undefined function requested
  2326.         8Ah one or more logical pages are invalid
  2327.         8Bh one or more physical pages are invalid
  2328.         8Fh invalid subfunction
  2329. SeeAlso: AH=40h
  2330.  
  2331. Format of mapping array entry:
  2332. Offset    Size    Description
  2333.  00h    WORD    logical page number or FFFFh to unmap physical page
  2334.  02h    WORD    physical page number or segment address
  2335. ----------6751-------------------------------
  2336. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  2337.     AH = 51h
  2338.     DX = handle
  2339.     BX = number of pages to be allocated to handle
  2340. Return: BX = actual number of pages allocated to handle
  2341.     AH = status
  2342.         00h successful
  2343.         80h internal error
  2344.         81h hardware malfunction
  2345.         83h invalid handle
  2346.         84h undefined function requested
  2347.         87h more pages requested than present in system
  2348.         88h more pages requested than currently available
  2349. ----------6752-------------------------------
  2350. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  2351.     AH = 52h
  2352.     AL = subfunction
  2353.         00h get handle attributes
  2354.         Return: AL = attribute
  2355.                 00h handle is volatile
  2356.                 01h handle is nonvolatile
  2357.         01h set handle attributes
  2358.         BL = new attribute (see returned AL)
  2359.         02h get attribute capability
  2360.         Return: AL = attribute capability
  2361.                 00h only volatile handles supported
  2362.                 01h both volatile and non-volatile supported
  2363.     DX = handle
  2364. Return:    AH = status
  2365.         00h successful
  2366.         80h internal error
  2367.         81h hardware malfunction
  2368.         83h invalid handle
  2369.         84h undefined function requested
  2370.         8Fh undefined subfunction
  2371.         90h undefined attribute type
  2372.         91h feature not supported
  2373. SeeAlso: AH=53h
  2374. ----------6753-------------------------------
  2375. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  2376.     AH = 53h
  2377.     AL = subfunction
  2378.         00h get handle name
  2379.            ES:DI -> 8-byte handle name array
  2380.         01h set handle name
  2381.            DS:SI -> 8-byte handle name
  2382.     DX = handle
  2383. Return: AH = status
  2384.         00h successful
  2385.         80h internal error
  2386.         81h hardware malfunction
  2387.         83h invalid handle
  2388.         84h undefined function requested
  2389.         8Fh undefined subfunction
  2390.         A1h duplicate handle name
  2391. SeeAlso: AH=52h
  2392. ----------6754-------------------------------
  2393. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  2394.     AH = 54h
  2395.     AL = subfunction
  2396.         00h get handle directory
  2397.            ES:DI -> buffer for handle directory (see below)
  2398.         01h search for named handle
  2399.            DS:SI -> 8-byte name
  2400.         02h get total number of handles
  2401. Return: AL = number of entries in handle directory (subfunction 00h)
  2402.     DX = value of named handle (subfunction 01h)
  2403.     BX = total number of handles (subfunction 02h)
  2404.     AH = status
  2405.         00h successful
  2406.         80h internal error
  2407.         81h hardware malfunction
  2408.         84h undefined function requested
  2409.         8Fh undefined subfunction
  2410.         A0h no such handle name
  2411.         A1h a handle found had no name
  2412.  
  2413. Format of handle directory entry:
  2414. Offset    Size    Description
  2415.  00h    WORD    handle
  2416.  02h  8 BYTEs    handle's name
  2417. ----------6755-------------------------------
  2418. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  2419.     AH = 55h
  2420.     AL = subfunction
  2421.         00h physical page numbers provided by caller
  2422.         01h segment addresses provided by caller
  2423.     DX = handle
  2424.     DS:SI -> structure containing map and jump address
  2425. Return: (at target address unless error)
  2426.     AH = status
  2427.         00h successful
  2428.         80h internal error
  2429.         81h hardware failure
  2430.         83h invalid handle
  2431.         84h undefined function requested
  2432.         8Ah invalid logical page number encountered
  2433.         8Bh invalid physical page number encountered
  2434.         8Fh invalid subfunction
  2435. SeeAlso: AH=56h
  2436. ----------6756-------------------------------
  2437. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  2438.     AH = 56h
  2439.     AL = subfunction
  2440.         00h physical page numbers provided by caller
  2441.         DX = handle
  2442.         DS:SI -> structure containing page map and call address
  2443.         01h segment addresses provided by caller
  2444.         DX = handle
  2445.         DS:SI -> structure containing page map and call address
  2446.         02h get page map stack space required
  2447.         Return: BX = stack space required
  2448. Return: (if successful, the target address is called.  Use a RETF to return and
  2449.      restore mapping context)
  2450.     AH = status (see AH=55h)
  2451. SeeAlso: AH=55h
  2452. ----------6757-------------------------------
  2453. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  2454.     AH = 57h
  2455.     AL = subfunction
  2456.         00h move memory region
  2457.         01h exchange memory region
  2458.     DS:SI -> structure describing source and destination (see below)
  2459. Return: AH = status
  2460.         00h successful
  2461.         80h internal error
  2462.         81h hardware failure
  2463.         83h invalid handle
  2464.         84h undefined function requested
  2465.         8Ah invalid logical page number encountered
  2466.         8Fh undefined subfunction
  2467.         92h successful, but a portion of the source region has been
  2468.         overwritten
  2469.         93h length of source or destination region exceeds length of region
  2470.         allocated to either source or destination handle
  2471.         94h conventional and expanded memory regions overlap
  2472.         95h offset within logical page exceeds size of logical page
  2473.         96h region length exceeds 1M
  2474.         97h source and destination EMS regions have same handle and overlap
  2475.         98h memory source or destination type undefined
  2476.         A2h attempted to wrap around 1M conventional address space
  2477. Note:    source and destination may overlap for a move, in which case the copy
  2478.       direction is chosen such that the destination receives an intact copy
  2479.       of the source region
  2480.  
  2481. Format of EMS copy data:
  2482. Offset    Size    Description
  2483.  00h    DWORD    region length in bytes
  2484.  04h    BYTE    source memory type
  2485.         00h conventional
  2486.         01h expanded
  2487.  05h    WORD    source handle (0000h if conventional memory)
  2488.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  2489.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  2490.  0Bh    BYTE    destination memory type
  2491.         00h conventional
  2492.         01h expanded
  2493.  0Ch    WORD    destination handle
  2494.  0Eh    WORD    destination initial offset
  2495.  10h    WORD    destination initial segment or page
  2496. ----------6758-------------------------------
  2497. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  2498.     AH = 58h
  2499.     AL = subfunction
  2500.         00h get mappable physical address array
  2501.         ES:DI -> buffer to be filled with array
  2502.         01h get number of entries in m.p.a. array
  2503. Return: CX = number of entries in array
  2504.     AH = status
  2505.         00h successful
  2506.         80h internal error
  2507.         81h hardware failure
  2508.         84h undefined function requested
  2509.         8Fh undefined subfunction
  2510. Note:    the returned array for subfunction 00h is filled in physical segment
  2511.       address order
  2512.  
  2513. Format of mappable physical address entry:
  2514. Offset    Size    Description
  2515.  00h    WORD    physical page segment
  2516.  02h    WORD    physical page number
  2517. ----------6759-------------------------------
  2518. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  2519.     AH = 59h
  2520.     AL = subfunction
  2521.         00h get hardware configuration array
  2522.         ES:DI -> buffer to be filled with array (see below)
  2523.         01h get unallocated raw page count
  2524.         Return: BX = unallocated raw pages
  2525.             DX = total raw pages
  2526. Return:    AH = status
  2527.         00h successful
  2528.         80h internal error
  2529.         81h hardware failure
  2530.         84h undefined function requested
  2531.         8Fh undefined subfunction
  2532.         A4h access denied by operating system
  2533. Note:    subfunction 00h is for use by operating systems only, and can be
  2534.       enabled or disabled at any time by the operating system
  2535.  
  2536. Format of hardware configuration array:
  2537. Offset    Size    Description
  2538.  00h    WORD    size of raw EMM pages in paragraphs
  2539.  02h    WORD    number of alternate register sets
  2540.  04h    WORD    size of mapping-context save area in bytes
  2541.  06h    WORD    number of register sets assignable to DMA
  2542.  08h    WORD    DMA operation type
  2543.         0000h DMA with alternate register sets
  2544.         0001h only one DMA register set
  2545. ----------675A-------------------------------
  2546. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  2547.     AH = 5Ah
  2548.     AL = subfunction
  2549.         00h allocate standard pages
  2550.         01h allocate raw pages
  2551.     BX = number of pages to allocate
  2552. Return: DX = handle
  2553.     AH = status
  2554.         00h successful
  2555.         80h internal error
  2556.         81h hardware failure
  2557.         84h undefined function requested
  2558.         85h no more handles available
  2559.         87h insufficient memory pages in system
  2560.         88h insufficient memory pages available
  2561.         8Fh undefined subfunction
  2562. ----------675B-------------------------------
  2563. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  2564.     AH = 5Bh
  2565.     AL = subfunction
  2566.         00h get alternate map register set
  2567.         Return: BL = current active alternate map register set number
  2568.             ES:DI -> map register context save area if BL=00h
  2569.         01h set alternate map register set
  2570.         BL = new alternate map register set number
  2571.         ES:DI -> map register context save area if BL=0
  2572.         02h get alternate map save array size
  2573.         Return: DX = array size in bytes
  2574.         03h allocate alternate map register set
  2575.         Return: BL = number of map register set; 00h = not supported
  2576.         04h deallocate alternate map register set
  2577.         BL = number of alternate map register set
  2578. Return: AH = status
  2579.         00h successful
  2580.         80h internal error
  2581.         81h hardware malfunction
  2582.         84h undefined function requested
  2583.         8Fh undefined subfunction
  2584.         9Ah specified alternate map register set not supported
  2585.         9Bh all alternate map register sets currently allocated
  2586.         9Ch alternate map register sets not supported
  2587.         9Dh undefined or unallocated alternate map register set
  2588.         A3h source array corrupted
  2589.         A4h operating system denied access
  2590. Note:    this function is for use by operating systems only, and can be
  2591.       enabled or disabled at any time by the operating system
  2592. ----------675B-------------------------------
  2593. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  2594.     AH = 5Bh
  2595.     AL = subfunction
  2596.         05h allocate DMA register set
  2597.         Return: BL = DMA register set number, 00h if not supported
  2598.         06h enable DMA on alternate map register set
  2599.            BL = DMA register set number
  2600.            DL = DMA channel number
  2601.         07h disable DMA on alternate map register set
  2602.            BL = DMA register set number
  2603.         08h deallocate DMA register set
  2604.            BL = DMA register set number
  2605. Return: AH = status
  2606.         00h successful
  2607.         80h internal error
  2608.         81h hardware malfunction
  2609.         84h undefined function requested
  2610.         8Fh undefined subfunction
  2611.         9Ah specified DMA register set not supported
  2612.         9Bh all DMA register sets currently allocated
  2613.         9Ch alternate DMA sets not supported
  2614.         9Dh undefined or unallocated DMA register set
  2615.         9Eh dedicated DMA channels not supported
  2616.         9Fh specified dedicated DMA channel not supported
  2617.         A3h source array corrupted
  2618.         A4h operating system denied access
  2619. Note:    this function is for use by operating systems only, and can be
  2620.       enabled or disabled at any time by the operating system
  2621. ----------675C-------------------------------
  2622. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  2623.     AH = 5Ch
  2624. Return: AH = status
  2625.         00h successful
  2626.         80h internal error
  2627.         81h hardware malfunction
  2628.         84h undefined function requested
  2629. ----------675D-------------------------------
  2630. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  2631.     AH = 5Dh
  2632.     AL = subfunction
  2633.         00h enable OS Function Set
  2634.         01h disable OS Function Set
  2635.         02h return access key (resets memory manager, returns access key at
  2636.         next invocation)
  2637.     BX,CX = access key returned by first invocation
  2638. Return: BX,CX = access key, returned only on first invocation of function
  2639.     AH = status
  2640.         00h successful
  2641.         80h internal error
  2642.         81h hardware malfunction
  2643.         84h undefined function requested
  2644.         8Fh undefined subfunction
  2645.         A4h operating system denied access
  2646. ----------6760-------------------------------
  2647. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  2648.     AH = 60h
  2649.     ES:DI -> buffer
  2650. Return: AH = status
  2651.     AL = number of entries
  2652.     buffer at ES:DI filled
  2653. ----------6761-------------------------------
  2654. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  2655.     AH = 61h
  2656.     ???
  2657. Return: ???
  2658. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  2659.       ensuring that the cache accurately reflects what the processor would
  2660.       see without the cache.
  2661. ----------6768-------------------------------
  2662. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  2663.     AH = 68h
  2664.     ES:DI -> buffer
  2665. Return: AH = status
  2666.     AL = number of entries
  2667.     buffer at ES:DI filled
  2668. Note:    equivalent to LIM 4.0 function 58h
  2669. ----------6769-------------------------------
  2670. INT 67 - EEMS - MAP PAGE INTO FRAME
  2671.     AH = 69h
  2672.     AL = frame number
  2673.     BX = page number
  2674.     DX = handle
  2675. Return: AH = status
  2676. Note:    similar to EMS function 44h
  2677. SeeAlso: AH=44h,AH=50h,AH=6Ah
  2678. ----------676A-------------------------------
  2679. INT 67 - EEMS - PAGE MAPPING
  2680.     AH = 6Ah
  2681.     AL = subfunction
  2682.         00h save partial page map
  2683.         CH = first page frame
  2684.         CL = number of frames
  2685.         ES:DI -> buffer which is to be filled
  2686.         01h restore partial page map
  2687.         CH = first page frame
  2688.         CL = number of frames
  2689.         DI:SI -> previously saved page map
  2690.         02h save and restore partial page map
  2691.         CH = first page frame
  2692.         CL = number of frames
  2693.         ES:DI = buffer for current page map
  2694.         DI:SI = new page map
  2695.         03h get size of save array
  2696.         CH = first page frame
  2697.         CL = number of frames
  2698.         Return: AL = size of array in bytes
  2699.         04h switch to standard map register setting
  2700.         05h switch to alternate map register setting
  2701.         06h deallocate pages mapped to frames in conventional memory
  2702.         CH = first page frame
  2703.         CL = number of frames
  2704. Return: AH = status
  2705. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  2706.       specified
  2707. SeeAlso: AH=69h
  2708. ----------67DE00-----------------------------
  2709. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  2710.     AX = DE00h
  2711. Return: AH = 00h    VCPI is present
  2712.         BH = major version number
  2713.         BL = minor version number
  2714.     AH nonzero  VCPI not present
  2715. ----------67DE01-----------------------------
  2716. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  2717.     AX = DE01h
  2718.     ES:DI -> 4K page table buffer
  2719.     DS:SI -> three descriptor table entries in GDT
  2720.         first becomes code segment descriptor, other two for use by
  2721.         main control program
  2722. Return: AH = 00h successful
  2723.         DI -> first unused page table entry in buffer
  2724.         EBX -> protected mode entry point in code segment
  2725.     AH = nonzero  failed
  2726. ----------67DE02-----------------------------
  2727. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  2728.     AX = DE02h
  2729. Return: AH = 00h  successful
  2730.         EDX = physical address of highest 4K memory page
  2731.     AH nonzero: failed
  2732. ----------67DE03-----------------------------
  2733. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  2734.     AX = DE03h
  2735. Return: AH = 00h  successful
  2736.         EDX = number of free 4K pages
  2737.     AH nonzero: failed
  2738. Notes:    returns total number of pages available to ALL tasks in system
  2739.     also available in protected mode by calling the protected-mode VCPI
  2740.       entry point
  2741. SeeAlso: AX=DE04h
  2742. ----------67DE04-----------------------------
  2743. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  2744.     AX = DE04h
  2745. Return: AH = 00h successful
  2746.         EDX = physical address of allocated page
  2747.     AH nonzero: failed
  2748. Notes:    the client program is responsible for freeing all memory allocated
  2749.       with this call before terminating
  2750.     also available in protected mode by calling the protected-mode VCPI
  2751.       entry point
  2752. SeeAlso: AX=DE03h,AX=DE05h
  2753. ----------67DE05-----------------------------
  2754. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  2755.     AX = DE05h
  2756.     EDX = physical address of 4K page
  2757. Return: AH = 00h successful
  2758.     AH nonzero: failed
  2759. Note:    also available in protected mode by calling the protected-mode VCPI
  2760.       entry point
  2761. SeeAlso: AX=DE04h
  2762. ----------67DE06-----------------------------
  2763. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  2764.     AX = DE06h
  2765.     CX = page number (linear address shifted right 12 bits)
  2766. Return: AH = 00h successful
  2767.         EDX = physical address of page
  2768.     AH nonzero: invalid page number (AH = 8Bh recommended)
  2769. ----------67DE07-----------------------------
  2770. INT 67 - Virtual Control Program Interface - READ CR0
  2771.     AX = DE07h
  2772. Return: AH = 00h
  2773.     EBX = value of Control Register 0
  2774. SeeAlso: AX=DE07h
  2775. ----------67DE08-----------------------------
  2776. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  2777.     AX = DE08h
  2778.     ES:DI -> array of 8 DWORDs
  2779. Return: AH = 00h
  2780.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  2781. SeeAlso: AX=DE09h
  2782. ----------67DE09-----------------------------
  2783. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  2784.     AX = DE09h
  2785.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  2786. Return: AH = 00h
  2787. Note:    values for DR4 and DR5 ignored
  2788. SeeAlso: AX=DE08h
  2789. ----------67DE0A-----------------------------
  2790. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  2791.     AX = DE0Ah
  2792. Return: AH = 00h successful
  2793.         BX = first vector used by master 8259 (IRQ0)
  2794.         CX = first vector used by slave 8259 (IRQ8)
  2795.     AH nonzero: failed
  2796. Note:    CX is undefined in systems without a slave 8259
  2797. SeeAlso: AX=DE0Bh
  2798. ----------67DE0B-----------------------------
  2799. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  2800.     AX = DE0Bh
  2801.     BX = first vector used by master 8259
  2802.     CX = first vector used by slave 8259
  2803.     interrupts disabled
  2804. Return: AH = 00h successful
  2805.     AH nonzero: failed 
  2806. Notes:    This call merely informs the server that the client has changed the
  2807.       interrupt mappings.  The client may not change the mappings if they
  2808.       have already been changed by the server or another client, and is
  2809.       responsible for restoring the original mappings before terminating.
  2810. SeeAlso: AX=DE0Ah
  2811. ----------67DE0C-----------------------------
  2812. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  2813.     AX = DE0Ch
  2814.     ESI = linear address in first megabyte of values for system registers
  2815.     interrupts disabled
  2816. Return: interrupts disabled
  2817.     GDTR, IDTR, LDTR, TR loaded
  2818.     SS:ESP must have at least 16 bytes space, and the entry point is
  2819.         required to set up a new stack before enabling interrupts
  2820.     EAX, ESI, DS, ES, FS, GS destroyed
  2821. SeeAlso: INT 15/AH=89h
  2822.  
  2823. Note:    in protected mode, calling the protected-mode VCPI entry point with 
  2824.       AX = DE0Ch
  2825.       DS = segment selector from function DE01h
  2826.       SS:ESP in first megabyte of linear memory
  2827.       STACK:QWORD  return address from FAR call to 32-bit segment
  2828.         DWORD  EIP
  2829.         DWORD  CS
  2830.         DWORD  reserved for EFLAGS
  2831.         DWORD  ESP
  2832.         DWORD  SS
  2833.         DWORD  ES
  2834.         DWORD  DS
  2835.         DWORD  FS
  2836.         DWORD  GS
  2837.       and interrupts disabled, will switch to virtual86 mode with
  2838.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  2839.  
  2840. Format of system register values for switch to protected mode:
  2841. Offset    Size    Description
  2842.  00h    DWORD    value for CR3
  2843.  04h    DWORD    linear address in first megabyte of value for GDTR
  2844.  08h    DWORD    linear address in first megabyte of value for IDTR
  2845.  0Ch    WORD    value for LDTR
  2846.  0Eh    WORD    value for TR
  2847.  10h    PWORD    CS:EIP of protected mode entry-point
  2848. ----------67---------------------------------
  2849. INT 67 - Sangoma CCPOP 3270 resident module
  2850. ----------6801-------------------------------
  2851. INT 68 - APPC/PC - NETWORK DEVICE CONTROL
  2852.     AH = 01h
  2853.     DS:DX -> control block
  2854.  
  2855. Format of control block:
  2856. Offset    Size    Description
  2857.  00h 12 BYTEs    reserved
  2858.  0Ch    WORD    verb (action)
  2859.  0Eh  6 BYTEs    00h
  2860.  14h    DWORD    (high byte first) return code (see below)
  2861. ---if verb = 1B00h (DISPLAY)---
  2862.  18h    WORD    00h
  2863.  1Ah  8 BYTEs    (high byte first) logical unit ID
  2864.  22h  8 BYTEs    (high byte first) partner logical unit name
  2865.  2Ah  8 BYTEs    (high byte first) mode name
  2866.  32h    BYTE    logical unit session limit
  2867.  33h    BYTE    partner logical unit session limit
  2868.  34h    BYTE    node maximum negotiable session limit
  2869.  35h    BYTE    current session limit
  2870.  36h    BYTE    minimum negotiated winner limit
  2871.  37h    BYTE    maximum negotiated loser limit
  2872.  38h    BYTE    active session count
  2873.  39h    BYTE    active CONWINNER session count
  2874.  3Ah    BYTE    active CONLOSER session count
  2875.  3Bh    BYTE    session termination count
  2876.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  2877.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  2878. ---if verb=2000h (Attach Physical Unit)---
  2879.  18h    WORD    00h
  2880.  1Ah    BYTE    version
  2881.  1Bh    BYTE    release
  2882.  1Ch  8 BYTEs    (high byte first) net name
  2883.  24h  8 BYTEs    (high byte first) physical unit name
  2884.  2Ch  8 BYTEs    00h
  2885.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  2886.  38h    DWORD    00h
  2887.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  2888.         01h RETURN_CONTROL: INCOMPLETE
  2889. ---if verb=2100h (Attach Logical Unit)---
  2890.  18h    WORD    70  offset to partner logical unit record
  2891.  1Ah  8 BYTEs    (high byte first) logical unit name
  2892.  22h  8 BYTEs    (high byte first) logical unit ID
  2893.  2Ah    BYTE    logical unit local address
  2894.  2Bh    BYTE    logical unit session limit
  2895.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  2896.         FFFFFFFFh = reject incoming ALLOCATEs
  2897.         00000000h = queue ALLOCATEs
  2898.  30h    DWORD    00h
  2899.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  2900.  38h    DWORD    00h
  2901.  3Ch    BYTE    maximum TPs
  2902.  3Dh    BYTE    queue depth
  2903.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  2904.  42h    DWORD    00h
  2905.  46h    WORD    total length of partner records
  2906.     for each partner logical unit:
  2907.     WORD    length of this partner logical unit record
  2908.     WORD    42  offset to mode records
  2909.       8 BYTEs    (high byte first) partner logical unit name
  2910.     BYTE    partner logical unit security capabilities
  2911.         bit 7: already verified
  2912.         bit 6: conversation level security
  2913.         bit 5: session level security
  2914.     BYTE    partner logical unit session limit
  2915.     WORD    partner logical unit maximum MC_SEND_LL
  2916.       8 BYTEs    (high byte first) partner logical unit DLC name
  2917.     BYTE    partner logical unit adapter number
  2918.      17 BYTEs    (counted string) partner logical unit adapter address
  2919.     WORD    total length of mode records
  2920.    for each mode:
  2921.     WORD    16  length of this mode record
  2922.       8 BYTEs    (high byte first) mode name
  2923.     WORD    RU_SIZE high bound
  2924.     WORD    RU_SIZE low bound
  2925.     BYTE    mode maximum negotiable session limit
  2926.     BYTE    pacing size for receive
  2927. ---if verb=2200h (Detach Logical Unit)---
  2928.  18h  8 BYTEs    (high byte first) logical unit ID
  2929.  20h    BYTE    00h
  2930. ---if verb=2700h (Detach Physical Unit)---
  2931.  18h    BYTE    00h  type: hard
  2932.         01h  type: soft
  2933. ---if verb=2B00h (Activate DLC)---
  2934.  18h  8 BYTEs    (high byte first) DLC name
  2935.  20h    BYTE    adapter number
  2936.  
  2937. Values for return code:
  2938.      0000h    successful
  2939.      0001h    BAD_TP_ID
  2940.      0002h    BAD_CONV_ID
  2941.      0003h    bad logical unit ID
  2942.      0008h    no physical unit attached
  2943.      0110h    bad state
  2944.      01B1h    BAD_PART_LUNAME
  2945.      01B2h    bad mode name
  2946.      0201h    physical unit already active
  2947.      0211h    logical unit already active
  2948.      0212h    BAD_PART_SESS
  2949.      0213h    BAD_RU_SIZES
  2950.      0214h    BAD_MODE_SESS
  2951.      0216h    BAD_PACING_CNT
  2952.      0219h    EXTREME_RUS
  2953.      021Ah    SNASVCMG_1
  2954.      0223h    SSCP_CONNECTED_LU
  2955.      0230h    invalid change
  2956.      0243h    too many TPs
  2957.      0272h    adapter close failure
  2958.      0281h    GET_ALLOC_BAD_TYPE
  2959.      0282h    unsuccessful
  2960.      0283h    DLC failure
  2961.      0284h    unrecognized DLC
  2962.      0286h    duplicate DLC
  2963.      0301h    SSCP_PU_SESSION_NOT_ACTIVE
  2964.      0302h    data exceeds RU size
  2965.      0401h    invalid direction
  2966.      0402h    invalid type
  2967.      0403h    segment overlap
  2968.      0404h    invalid first character
  2969.      0405h    table error
  2970.      0406h    conversion error
  2971.      F0010000h    APPC disabled
  2972.      F0020000h    APPC busy
  2973.      F0030000h    APPC abended
  2974.      F0040000h    incomplete
  2975.  
  2976. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  2977. pointers are called by pushing the DWORD pointer to the verb on the stack and
  2978. then performing a FAR call.
  2979.  
  2980. Format of ACCESS_LU_LU_PW verb:
  2981. Offset    Size    Description
  2982.  00h 12 BYTEs    reserved
  2983.  0Ch    WORD    1900h
  2984.  0Eh  8 BYTEs    (high byte first) logical unit ID
  2985.  16h  8 BYTEs    (high byte first) logical unit name
  2986.  1Eh  8 BYTEs    (high byte first) partner logical unit name
  2987.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  2988.  37h    BYTE    password available (0=no, 1=yes)
  2989.  38h  8 BYTEs    password
  2990.  
  2991. Format of CREATE_TP verb:
  2992. Offset    Size    Description
  2993.  00h 12 BYTEs    reserved
  2994.  0Ch    WORD    2300h
  2995.  0Eh  6 BYTEs    00h
  2996.  14h    DWORD    (high byte first) sense code
  2997.         00000000h    Ok
  2998.         080F6051h    SECURITY_NOT_VALID
  2999.         084B6031h    TP_NOT_AVAIL_RETRY
  3000.         084C0000h    TP_NOT_AVAIL_NO_RETRY
  3001.         10086021h    TP_NAME_NOT_RECOGNIZED
  3002.         10086034h    CONVERSATION_TYPE_MISMATCH
  3003.         10086041h    SYNC_LEVEL_NOT_SUPPORTED
  3004.  18h  8 BYTEs    (high byte first) TP ID
  3005.  20h  8 BYTEs    (high byte first) logical unit ID
  3006.  28h    DWORD    (high byte first) conversation ID
  3007.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  3008.  2Dh    BYTE    0 no sync level, 1 confirm
  3009.  2Eh    BYTE    reserved
  3010.  2Fh 65 BYTEs    (counted string) transaction program name
  3011.  70h  6 BYTEs    00h
  3012.  76h    WORD    length of ERROR_LOG_DATA to return
  3013.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  3014.  7Ch  8 BYTEs    (high byte first) partner logical unit name
  3015.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  3016.  96h  8 BYTEs    (high byte first) mode name
  3017.  9Eh 12 BYTEs    00h
  3018.  AAh 11 BYTEs    (counted string) password
  3019.  B5h 11 BYTEs    (counted string) user ID
  3020.  C0h    BYTE    0 verification should be performed
  3021.         1 already verified
  3022.  
  3023. Format of SYSLOG verb:
  3024. Offset    Size    Description
  3025.  00h 12 BYTEs    reserved
  3026.  0Ch    WORD    2600h
  3027.  0Eh 10 BYTEs    00h
  3028.  18h    WORD    (high byte first) type
  3029.  1Ah    DWORD    (high byte first) subtype
  3030.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  3031.  22h    DWORD    (high byte first) conversation ID
  3032.  26h  8 BYTEs    (high byte first) TP ID
  3033.  2Eh  8 BYTEs    (high byte first) physical unit or logical unit name
  3034.  36h    WORD    length of data
  3035.  38h    DWORD    pointer to data
  3036.  3Ch    BYTE    00h
  3037. ----------6802-------------------------------
  3038. INT 68 - APPC/PC - CONNECTION CONTROL
  3039.     AH = 02h
  3040.     DS:DX -> control block
  3041.  
  3042. Format of control block:
  3043. Offset    Size    Description
  3044.  00h 12 BYTEs    reserved
  3045.  0Ch    WORD    verb (action)
  3046.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3047.         0 if basic verb
  3048.  0Fh  5 BYTEs    reserved (0)
  3049.  14h    WORD    (high byte first) primary return code (see below)
  3050.  16h    DWORD    (high byte first) error code (see below)
  3051.  1Ah  8 BYTEs    (high byte first) TP_ID
  3052.  22h    DWORD    (high byte first) conversation ID
  3053. ---if verb=0100h (Allocate or MC_Allocate)---
  3054.  26h    BYTE    (MC_Allocate only) 0 basic conversation
  3055.                    1 mapped conversation
  3056.  27h    BYTE    00h SYNC_LEVEL = none
  3057.         01h SYNC_LEVEL = confirm
  3058.  28h    WORD    0000h
  3059.  2Ah    BYTE    00h RETURN_CONTROL: when session allocated
  3060.         01h RETURN_CONTROL: immediate
  3061.         02h RETURN_CONTROL: when session free
  3062.  2Bh  8 BYTEs    00h
  3063.  33h  8 BYTEs    (high byte first) partner logical unit name
  3064.  3Bh  8 BYTEs    (high byte first) mode name
  3065.  43h 65 BYTEs    (counted string) TP name
  3066.  84h    BYTE    00h security: none
  3067.         01h security: same
  3068.         02h security: pgm
  3069.  85h 11 BYTEs    00h
  3070.  90h 11 BYTEs    (counted string) password
  3071.  9Bh 11 BYTEs    (counted string) user ID
  3072.  A6h    WORD    PIP_DATA length
  3073.  A8h    DWORD    pointer to PIP_DATA
  3074. ---if verb=0300h (Confirm or MC_Confirm)---
  3075.  26h    BYTE  request to send received (0=no, 1=yes)
  3076. ---if verb=0400h (Confirmed or MC_Confirmed), no additional fields---
  3077. ---if verb=0500h (Deallocate or MC_Deallocate)---
  3078.  26h    BYTE    00h
  3079.  27h    BYTE    type 0 SYNC_LEVEL
  3080.              1 FLUSH
  3081.              2 ABEND_PROC
  3082.              3 ABEND_SVC
  3083.              4 ABEND_TIMER
  3084.              5 ABEND
  3085.  28h    WORD    (MC_Deallocate only) length of error log data
  3086.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  3087. ---if verb=0600h (Flush or MC_Flush), no additional fields---
  3088. ---if verb=0700h (Get_Attributes or MC_Get_Attributes)---
  3089.  26h  8 BYTEs    (high byte first) logical unit ID
  3090.  2Eh    BYTE    00h
  3091.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  3092.  30h  8 BYTEs    (high byte first) mode name
  3093.  38h  8 BYTEs    (high byte first) own net name
  3094.  40h  8 BYTEs    (high byte first) own logical unit name
  3095.  48h  8 BYTEs    (high byte first) partner logical unit name
  3096.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  3097.  62h    BYTE    00h
  3098.  63h 11 BYTEs    (counted string) user ID
  3099. ---if verb=0800h (Get_Type)---
  3100.  26h    BYTE    type (0=basic conversation, 1=mapped conversation)
  3101. ---if verb=0900h (Post_on_Receipt)---
  3102.  26h    WORD    maximum length
  3103.  28h    BYTE    fill (0=buffer, 1=LL)
  3104. ---if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive)---
  3105.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  3106.  27h    BYTE    locks (0=short, 1=long)
  3107. ---if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait)---
  3108.  26h    BYTE    what received
  3109.         00h data
  3110.         01h data complete
  3111.         02h data incomplete
  3112.         03h confirm
  3113.         04h confirm send
  3114.         05h confirm deallocate
  3115.         06h send
  3116.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  3117.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  3118.  29h    WORD    maximum length
  3119.  2Bh    WORD    data length
  3120.  2Dh    DWORD    pointer to data
  3121. ---if verb=0C00h (Receive_Immediate or MC_Receive_Immediate)---
  3122.  26h    BYTE    what received
  3123.         00h data
  3124.         01h data complete
  3125.         02h data incomplete
  3126.         03h confirm
  3127.         04h confirm send
  3128.         05h confirm deallocate
  3129.         06h send
  3130.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  3131.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  3132.  29h    WORD    maximum length
  3133.  2Bh    WORD    data length
  3134.  2Dh    DWORD    pointer to data
  3135. ---if verb=0E00h (Request_to_Send or MC_Request_to_Send), no other fields---
  3136. ---if verb=0F00h (Send_Data or MC_Send_Data)---
  3137.  26h    BYTE    request to send received (0=no, 1=yes)
  3138.  27h    BYTE    00h
  3139.  28h    WORD    data length
  3140.  2Ah    DWORD    pointer to data
  3141. ---if verb=1000h (Send_Error or MC_Send_Error)---
  3142.  26h    BYTE    request to send received (0=no, 1=yes)
  3143.  27h    BYTE    type (0=program, 1=SVC)
  3144.  28h    DWORD    00h
  3145.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  3146.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  3147. ---if verb=1200h (Test or MC_Test)---
  3148.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  3149.         Note: error code has different interpretations for:
  3150.             0 posted data
  3151.             1 posted not data (primary return code = 0)
  3152.             1 bad TP_ID (primary return code = 1)
  3153. ---if verb=1300h (Wait)---
  3154.  26h    BYTE    number of conversations to wait on
  3155.         Note: error codes have interpretations as for 1200h above
  3156.  
  3157. Values for primary return code:
  3158.  0000h    successful
  3159.  0001h    parameter check
  3160.  0002h    state check
  3161.  0003h    allocation error
  3162.  0005h    deallocate abended
  3163.  0006h    deallocate abended program
  3164.  0007h    deallocate abended SVC
  3165.  0008h    deallocate abended timer
  3166.  0009h    deallocate normal return
  3167.  000Ah    data posting blocked
  3168.  000Bh    posting not active
  3169.  000Ch    PROG_ERROR_NO_TRUNC
  3170.  000Dh    PROG_ERROR_TRUNC
  3171.  000Eh    PROG_ERROR_PURGING
  3172.  000Fh    CONV_FAILURE_RETRY
  3173.  0010h    CONV_FAILURE_NO_RETRY
  3174.  0011h    SVC_ERROR_NO_TRUNC
  3175.  0012h    SVC_ERROR_TRUNC
  3176.  0013h    SVC_ERROR_PURGING
  3177.  0014h    unsuccessful
  3178.  0018h    CNOS partner logical unit reject
  3179.  0019h    conversation type mixed
  3180.  F001h    APPC disabled
  3181.  F002h    APPC busy
  3182.  F003h    APPC abended
  3183.  F004h    incomplete
  3184.  
  3185. Values for error code:
  3186.  0001h bad TP ID
  3187.  0002h bad conversation ID
  3188.  0004h allocation error, no retry
  3189.  0005h allocation error, retry
  3190.  0006h data area crosses segment boundary
  3191.  0010h bad TPN length
  3192.  0011h bad CONV length
  3193.  0012h bad SYNC level
  3194.  0013h bad security selection
  3195.  0014h bad return control
  3196.  0015h SEC_TOKENS too big
  3197.  0016h PIP_LEN incorrect
  3198.  0017h no use of SNASVCMG
  3199.  0018h unknown partner mode
  3200.  0031h confirm: SYNC_NONE
  3201.  0032h confirm: bad state
  3202.  0033h confirm: NOT_LL_BDY
  3203.  0041h confirmed: bad state
  3204.  0051h deallocate: bad type
  3205.  0052h deallocate: flush bad state
  3206.  0053h deallocate: confirm bad state
  3207.  0055h deallocate: NOT_LL_BDY
  3208.  0057h deallocate: log LL_WRONG
  3209.  0061h flush: not send state
  3210.  0091h post on receipt: invalid length
  3211.  0092h post on receipt: not in receive state
  3212.  0093h post on receipt: bad fill
  3213.  00A1h prepare to receive:invalid type
  3214.  00A2h prepare to receive: unfinished LL
  3215.  00A3h prepare to receive: not in send state
  3216.  00B1h receive and wait: bad state
  3217.  00B2h receive and wait: NOT_LL_BDY
  3218.  00B5h receive and wait: bad fill
  3219.  00C1h receive immediate: not in receive state
  3220.  00C4h receive immediate: bad fill
  3221.  00E1h request to send: not in receive state
  3222.  00F1h send data: bad LL
  3223.  00F2h send data: not in send state
  3224.  0102h send error: log LL wrong
  3225.  0103h send error: bad type
  3226.  0121h test: invalid type
  3227.  0122h test: not in receive state
  3228. ----------6803-------------------------------
  3229. INT 68 - APPC/PC
  3230.     AH = 03h
  3231.     DS:DX -> control block (see below)
  3232.  
  3233. Format of control block:
  3234. Offset    Size    Description
  3235.  00h 12 BYTEs    reserved
  3236.  0Ch    WORD    verb (action)
  3237.  0Eh  6 BYTEs    0
  3238.  14h    DWORD    (high byte first) return code (see AH=01h)
  3239.  18h    WORD    0
  3240.  1Ah  8 BYTEs    (high byte first) logical unit ID
  3241. ---if verb=2400h (TP Started), control block continues---
  3242.  22h  8 BYTEs    (high byte first) TP ID
  3243. ---if verb=2800h (Get ALLOCATE), control block continues---
  3244.  22h    BYTE    type
  3245.         00h dequeue
  3246.         01h test
  3247.  23h    DWORD    pointer to CREATE_TP record
  3248. ---if verb=2A00h (Change Logical Unit). control block continues---
  3249.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  3250.         FFFFFFFFh reject incoming ALLOCATEs
  3251.         00000000h queue ALLOCATEs
  3252.  26h    DWORD    00000000h
  3253.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  3254.  2Eh    DWORD    00000000h
  3255.  32h    BYTE    maximum TPs
  3256.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  3257.         01h resume QUEUE_ALLOCATEs
  3258.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  3259.  38h    DWORD    00000000h
  3260. ----------6804-------------------------------
  3261. INT 68 - APPC/PC
  3262.     AH = 04h
  3263.     DS:DX -> control block (see below)
  3264.  
  3265. Format of control block:
  3266. Offset    Size    Description
  3267.  00h 12 BYTEs    reserved
  3268.  0Ch    WORD    verb (action)
  3269.         2500h TP_ENDED
  3270.         2900h TP_VALID
  3271.  0Eh  6 BYTEs    0
  3272.  14h    DWORD    (high byte first) return code (see AH=01h)
  3273.  18h    WORD    0
  3274.  1Ah  8 BYTEs    (high byte first) TP_ID
  3275.  22h    DWORD -> CREATE_TP record (only if verb = 2900h)
  3276. ----------6805-------------------------------
  3277. INT 68 - APPC/PC - TRANSFER MSG DATA
  3278.     AH = 05h
  3279.     DS:DX -> control block (see below)
  3280.  
  3281. Format of control block:
  3282. Offset    Size    Description
  3283.  00h 12 BYTEs    reserved
  3284.  0Ch    WORD    1C00h
  3285.  0Eh    BYTE    00h user defined
  3286.         01h NMVT
  3287.         02h alert subvectors
  3288.         03h PDSTATS subvectors
  3289.  0Fh  5 BYTEs    0
  3290.  14h    DWORD    (high byte first) return code (see AH=01h)
  3291.  18h 12 BYTEs    0
  3292.  24h    BYTE    if bit 0 clear, add correlation subvector
  3293.         if bit 1 clear, add product set ID subvector
  3294.         if bit 2 clear, do SYSLOG
  3295.         if bit 3 clear, send SSCP_PU_SESSION
  3296.  25h    BYTE    0
  3297.  26h    WORD    length of data
  3298.  28h  N BYTEs    data
  3299. ----------6806-------------------------------
  3300. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  3301.     AH = 06h
  3302.     DS:DX -> control block (see below)
  3303.  
  3304. Format of control block:
  3305. Offset    Size    Description
  3306.  00h 12 BYTEs    reserved
  3307.  0Ch    WORD    1500h
  3308.  0Eh  6 BYTEs    0
  3309.  14h    WORD    (high byte first) primary return code (see AH=02h)
  3310.  16h    DWORD    (high byte first) secondary return code (see below, AH=01h)
  3311.  1Ah  8 BYTEs    (high byte first) logical unit ID
  3312.  22h  8 BYTEs    blanks
  3313.  2Ah  8 BYTEs    (high byte first) partner logical unit name
  3314.  32h  8 BYTEs    (high byte first) mode name
  3315.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  3316.         bit 6: set negotiable values
  3317.  3Bh    BYTE    partner logical unit mode session limit
  3318.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  3319.  3Dh    BYTE    maximum CONWINNERS_TARGET
  3320.  3Eh    BYTE    automatic activation
  3321.  3Fh    BYTE    0
  3322.  40h    BYTE    bit 7: drain target
  3323.         bit 6: drain source
  3324.         bit 5: target responsible, not source
  3325.  
  3326. Values for secondary return code (see also AH=01h):
  3327.   0000h accepted
  3328.   0001h negotiated
  3329.   0003h bad logical unit ID
  3330.   0004h allocation failure, no retry
  3331.   0005h allocation failure, retry
  3332.   0151h can't raise limits
  3333.   0153h all modes must reset
  3334.   0154h bad SNASVCMG limits
  3335.   0155h minimum greater than total
  3336.   0156h mode closed (prim return code = 1)
  3337.     CNOS mode closed (prim return code = 18h)
  3338.   0157h bad mode name (prim return code = 1)
  3339.     CNOS bad mode name (prim return code = 18h)
  3340.   0159h reset SNA drains
  3341.   015Ah single not SRC response
  3342.   015Bh bad partner logical unit
  3343.   015Ch exceeds maximum allowed
  3344.   015Dh change SRC drains
  3345.   015Eh logical unit detached
  3346.   015Fh CNOS command race reject
  3347. ----------6807-------------------------------
  3348. INT 68 - APPC/PC - PASSTHROUGH
  3349.     AH = 07h
  3350.     DS:DX -> control block (format depends on application subsystem)
  3351. SeeAlso: AH=FFh
  3352. ----------68FA-------------------------------
  3353. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  3354.     AH = FAh
  3355.     AL bit 0 = 0 enable
  3356.            1 disable
  3357. ----------68FB-------------------------------
  3358. INT 68 - APPC/PC - CONVERT
  3359.     AH = FBh
  3360.     DS:DX -> control block (see below)
  3361.  
  3362. Format of control block:
  3363. Offset    Size    Description
  3364.  00h 12 BYTEs    reserved
  3365.  0Ch    WORD    1A00h
  3366.  0Eh  6 BYTEs    0
  3367.  14h    DWORD    (high byte first) return code
  3368.  18h    BYTE    conversion
  3369.            00h ASCII to EBCDIC
  3370.            01h EBCDIC to ASCII
  3371.  19h    BYTE    character set
  3372.            00h AE
  3373.            01h A
  3374.            02h G
  3375.  1Ah    WORD    length of string to convert
  3376.  1Ch    DWORD    pointer to source
  3377.  20h    DWORD    pointer to target
  3378. ----------68FC-------------------------------
  3379. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  3380.     AH = FCh
  3381.     AL = 00h disable tracing
  3382.        = 01h enable tracing
  3383.         DX = number of bytes to keep (0=all)
  3384. SeeAlso: AH=FDh
  3385. ----------68FD-------------------------------
  3386. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  3387.     AH = FDh
  3388.     AL = 00h disable tracing
  3389.          01h enable tracing
  3390. SeeAlso: AH=FCh,AH=FEh
  3391. ----------68FE-------------------------------
  3392. INT 68 - APPC/PC - SET TRACE DESTINATION
  3393.     AH = FEh
  3394.     AL = trace destinations
  3395.         bit 0  storage (DS:DX -> trace stats record)
  3396.         bit 1  display
  3397.         bit 2  file (trace written to file OUTPUT.PC)
  3398.         bit 3  printer
  3399. SeeAlso: AH=FDh
  3400.  
  3401. Format of Trace Statistics Record:
  3402. Offset    Size    Description
  3403.  00h    DWORD    pointer to storage trace buffer
  3404.  04h    WORD    max number of 80-byte records in trace
  3405.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  3406.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  3407.  0Ch    DWORD    reserved
  3408. Note:    do not move record while trace is active
  3409. ----------68FF-------------------------------
  3410. INT 68 - APPC/PC - SET PASSTHROUGH
  3411.     AH = FFh
  3412.     DS:DX -> passthrough exit routine
  3413. SeeAlso: AH=07h
  3414. ----------68---------------------------------
  3415. INT 68 - Sangoma CCPOP 3270 resident module
  3416. ----------69---------------------------------
  3417. INT 69 - Zenith AT BIOS - ???
  3418.    called by INT 09 handler
  3419. ----------690100-----------------------------
  3420. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  3421.     AX = 0100h
  3422. Return: AL = FFh if present
  3423. SeeAlso: AX=010Fh
  3424. ----------690101-----------------------------
  3425. INT 69 - DECnet DOS CTERM - SEND BYTE
  3426.     AX = 0101h
  3427.     BL = character
  3428.     DX = session handle
  3429. Return: AH >= 80h on error
  3430. SeeAlso: AX=0102h
  3431. ----------690102-----------------------------
  3432. INT 69 - DECnet DOS CTERM - READ BYTE
  3433.     AX = 0102h
  3434.     DX = session handle
  3435. Return: AH >= 80h on error
  3436.     AH < 80h if successful
  3437.         AL = character
  3438. SeeAlso: AX=0101h
  3439. ----------690103-----------------------------
  3440. INT 69 - DECnet DOS CTERM - STATUS
  3441.     AX = 0103h
  3442.     DX = session handle
  3443. Return: AH status flags
  3444.         bit 7 session has been aborted
  3445.         6 DECnet error
  3446.         1 trace data available
  3447.         0 receive data available
  3448.     AL = reason code if DECnet error
  3449.         00h normal disconnect
  3450.         01h unknown message from host
  3451.         02h protocol violation from host
  3452.         03h could not process the initiate message
  3453.         04h error receiving message from host
  3454.         05h error sending message to host
  3455.         06h error checking for message from host
  3456.         07h remote system does not support CTERM
  3457.         08h remote system does not support correct protocol version
  3458.         09h did not receive BIND message from host
  3459.         0Ah could not send BIND message to host
  3460.         0Bh no more sessions available
  3461.         0Ch session does not exist
  3462.         0Dh not enough memory to complete operation
  3463.         0Eh connection has broken
  3464. SeeAlso: AX=0104h
  3465. ----------690104-----------------------------
  3466. INT 69 - DECnet DOS CTERM - DECnet STATUS
  3467.     AX = 0104h
  3468.     DX = session handle
  3469. Return: AX = reason code (see AX=0103h)
  3470. Note:    use this call when AX=0103h returns a DECnet error
  3471. SeeAlso: AX=0103h
  3472. ----------690105-----------------------------
  3473. INT 69 - DECnet DOS CTERM - OPEN SESSION
  3474.     AX = 0105h
  3475.     DS:BX -> ASCIZ node name
  3476.     ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
  3477. Return: AX <= 0 on error
  3478.     AX > 0 session handle
  3479. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  3480. ----------690106-----------------------------
  3481. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  3482.     AX = 0106h
  3483.     DX = session handle
  3484. Return: AH = 00h good close
  3485.        other error code (see AX=0103h)
  3486. SeeAlso: AX=0103h,AX=0105h
  3487. ----------69010A-----------------------------
  3488. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  3489.     AX = 010Ah
  3490. Return: AX = length of session control block in bytes
  3491. SeeAlso: AX=0105h
  3492. ----------69010B-----------------------------
  3493. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  3494.     AX = 010Bh
  3495.     DX = session handle
  3496. Return: AX > 0    DECnet socket for the session
  3497.        = 0    no match for handle
  3498. ----------69010F-----------------------------
  3499. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  3500.     AX = 010Fh
  3501. Return: AH = 00h succesful uninstall
  3502.        other error code
  3503. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  3504. SeeAlso: AX=0100h
  3505. ----------6A---------------------------------
  3506. INT 6A - OPTHELP.COM
  3507. Notes:    OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  3508.       assembler
  3509.     may be configured to use any interrupt from 60h to 7Fh (default 6Ah)
  3510. ----------6A---------------------------------
  3511. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
  3512. Note:    the 3 bytes preceding the interrupt handler are "LAT"; this serves as
  3513.       the installation check
  3514. ----------6A01--DHFF-------------------------
  3515. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  3516.     AH = 01h
  3517.     DH = FFh
  3518.     AL = character
  3519.     DL = handle
  3520. Return: AH >= 80h on error
  3521. SeeAlso: AH=02h
  3522. ----------6A02--DHFF-------------------------
  3523. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  3524.     AH = 02h
  3525.     DH = FFh
  3526.     DL = handle
  3527. Return: AH < 80h if successful
  3528.         AL = character
  3529.     AH >= 80h on error
  3530. SeeAlso: AH=01h
  3531. ----------6A03--DHFF-------------------------
  3532. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  3533.     AH = 03h
  3534.     DH = FFh
  3535.     DL = handle
  3536. Return: AH = status flags
  3537.         bit 5 transmit buffer empty
  3538.         3 session in start state
  3539.         2 session not active
  3540.         1 unable to queue transmit data
  3541.         0 receive data available
  3542. ----------6AD0--DHFF-------------------------
  3543. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  3544.     AH = D0h
  3545.     DH = FFh
  3546.     AL = FFh no password
  3547.        = 0Fh password at ES:DI
  3548.     ES:BX -> LAT session control block (see below)
  3549.     ES:DI -> 16-byte blank-padded password
  3550. Return: AH = 00h success
  3551.         DL = handle
  3552. SeeAlso: AX=D000h
  3553.  
  3554. Format of LAT Session Control Block:
  3555. Offset    Size    Description
  3556.  00h 18 BYTEs    service name
  3557.  12h 18 BYTEs    node name (future use)
  3558.  24h 18 BYTEs    port name (future use)
  3559.  36h    DWORD    -> session stopped post routine
  3560.  3Ah    DWORD    -> service table overflow post routine
  3561.  3Eh    DWORD    -> transmit post routine
  3562.  42h    DWORD    -> receive post routine
  3563.  46h    WORD    session status
  3564.         04h circuit failure
  3565.         08h stop slot received
  3566.  48h    WORD    slot state (LAT driver use)
  3567.  4Ah    WORD    local credits (LAT driver use)
  3568.  4Ch    DWORD    -> VCB (LAT driver use)
  3569.  50h    WORD    backward slot (LAT driver use)
  3570.  52h    WORD    forward slot (LAT driver use)
  3571.  54h    WORD    remote slot ID (LAT driver use)
  3572.  56h    WORD    local slot ID (LAT driver use)
  3573.  58h    WORD    slot byte count (LAT driver use)
  3574.  5Ah    BYTE    remote credits (LAT driver use)
  3575.  5Bh 255 BYTEs    transmitted data slot
  3576. 15Ah    BYTE    number of receive data slots (4 recommended)
  3577. 15Bh    BYTE    number of occupied slots
  3578. 15Ch    BYTE    index of next receive slot to use
  3579. 15Dh    BYTE    index of current receive slot
  3580. 15Eh    WORD    pointer to first received character
  3581. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  3582. Note:    set post routines to 0000h:0000h if polled operation will be used
  3583. ----------6AD000DHFF-------------------------
  3584. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  3585.     AX = D000h
  3586.     DH = FFh
  3587.     DL = handle
  3588. Return: AX = 0000h successful
  3589.        = 0001h no such session
  3590.        = 0002h session not running, try again later
  3591. SeeAlso: AH=D0h
  3592. ----------6AD100DHFF-------------------------
  3593. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  3594.     AX = D100h
  3595.     DH = FFh
  3596.     DL = handle
  3597. Return: AX = 0000h if successful
  3598.     AH bit 7 set if unable to send break
  3599. ----------6AD300DHFF-------------------------
  3600. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  3601.     AX = D300h
  3602.     DH = FFh
  3603. SeeAlso: AX=D400h
  3604. ----------6AD400DHFF-------------------------
  3605. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  3606.     AX = D400h
  3607.     DH = FFh
  3608.     CX = buffer size
  3609.     ES:BX -> buffer for LAT counters
  3610. Return: AX = 0000h counters copied into buffer
  3611.        = FFFFh buffer too small
  3612. SeeAlso: AX=D300h
  3613. ----------6AD500DHFF-------------------------
  3614. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  3615.     AX = D500h
  3616.     DH = FFh
  3617.     ES:BX -> 17-byte buffer for name
  3618. Return: AH = 00h if successful
  3619.        ES:BX buffer filled
  3620.     AX = FFFFh if end of table or no name available
  3621. Notes:    use this function to get the names of the hosts on the network
  3622.     successive calls are necessary to get all names
  3623. SeeAlso: AX=D600h
  3624. ----------6AD600DHFF-------------------------
  3625. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  3626.     AX = D600h
  3627.     DH = FFh
  3628. Return: AX = number of service table entries
  3629.     BX = 0000h service table has not overflowed
  3630.        = FFFFh service table has overflowed
  3631. SeeAlso: AX=D500h
  3632. ----------6B0000-----------------------------
  3633. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
  3634.     AX = 0000h
  3635.     CX = length
  3636.     ES:BX -> buffer
  3637. Return: CX = number of bytes written
  3638. Note:    also supported by NPC NCSI
  3639. SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h
  3640. ----------6B0100-----------------------------
  3641. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
  3642.     AX = 0100h
  3643.     CX = length of buffer
  3644.     ES:BX -> buffer
  3645. Return: CX = number of bytes read
  3646. Note:    also supported by NPC NCSI
  3647. SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AX=FF02h
  3648. ----------6B02-------------------------------
  3649. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
  3650.     AH = 02h
  3651.     AL nonzero
  3652. Return: AL = 00h if present and OK
  3653. Note:    also supported by NPC NCSI
  3654. SeeAlso: AX=0700h
  3655. ----------6B0600-----------------------------
  3656. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
  3657.     AX = 0600h
  3658.     CX = command
  3659.         02h send break
  3660.         04h disconnect
  3661.         06h hold
  3662. Note:    also supported by NPC NCSI
  3663. ----------6B0700-----------------------------
  3664. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
  3665.     AX = 0700h
  3666. Return: CH <> 00h if connection active
  3667. Note:    also supported by NPC NCSI
  3668. SeeAlso: AH=02h,AH=10h
  3669. ---------------------------------------------
  3670. INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
  3671.     AH = 10h
  3672.     ???
  3673. Return: ???
  3674. SeeAlso: AX=0700h,AH=12h,AH=1Fh
  3675. ---------------------------------------------
  3676. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
  3677.     AH = 11h
  3678.     ???
  3679. Return: ???
  3680. SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
  3681. ---------------------------------------------
  3682. INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
  3683.     AH = 12h
  3684.     ???
  3685. Return: ???
  3686. SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
  3687. ---------------------------------------------
  3688. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
  3689.     AH = 13h
  3690.     ???
  3691. Return: ???
  3692. SeeAlso: AH=14h,AH=15h
  3693. ---------------------------------------------
  3694. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
  3695.     AH = 14h
  3696.     ???
  3697. Return: ???
  3698. SeeAlso: AH=13h,AH=15h,AH=21h
  3699. ---------------------------------------------
  3700. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
  3701.     AH = 15h
  3702.     ???
  3703. Return: ???
  3704. SeeAlso: AH=13h,AH=14h
  3705. ----------6B16-------------------------------
  3706. INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
  3707.     AH = 16h
  3708.     ???
  3709. Return: ???
  3710. SeeAlso: AH=11h,AH=12h,AH=17h
  3711. ----------6B17-------------------------------
  3712. INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
  3713.     AH = 17h
  3714.     ???
  3715. Return: ???
  3716. SeeAlso: AH=11h,AH=16h
  3717. ----------6B18-------------------------------
  3718. INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
  3719.     AH = 18h
  3720.     ???
  3721. Return: ???
  3722. SeeAlso: AX=0000h,AH=12h,AH=19h
  3723. ----------6B19-------------------------------
  3724. INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
  3725.     AH = 19h
  3726.     ???
  3727. Return: ???
  3728. SeeAlso: AX=0100h,AH=12h,AH=18h
  3729. ----------6B1A-------------------------------
  3730. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
  3731.     AH = 1Ah
  3732.     ???
  3733. Return: ???
  3734. SeeAlso: AH=12h,AH=1Bh
  3735. ----------6B1B-------------------------------
  3736. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
  3737.     AH = 1Bh
  3738.     ???
  3739. Return: ???
  3740. SeeAlso: AH=12h,AH=1Ah
  3741. ----------6B1C-------------------------------
  3742. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE BUFFER CONTROL
  3743.     AH = 1Ch
  3744.     ???
  3745. Return: ???
  3746. SeeAlso: AH=1Dh,AH=1Eh
  3747. ----------6B1D-------------------------------
  3748. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
  3749.     AH = 1Dh
  3750.     ???
  3751. Return: ???
  3752. SeeAlso: AH=1Ch,AH=1Eh
  3753. ----------6B1E-------------------------------
  3754. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
  3755.     AH = 1Eh
  3756.     ???
  3757. Return: ???
  3758. SeeAlso: AH=1Ch,AH=1Dh
  3759. ----------6B1F-------------------------------
  3760. INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
  3761.     AH = 1Fh
  3762.     ???
  3763. Return: ???
  3764. SeeAlso: AH=10h,AH=12h
  3765. ----------6B21-------------------------------
  3766. INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
  3767.     AH = 21h
  3768.     ???
  3769. Return: ???
  3770. SeeAlso: AH=14h
  3771. ----------6B6B-------------------------------
  3772. INT 6B - Tandy SCHOOLMATE PLUS - API
  3773.     AH = 6Bh
  3774.     AL = E0h to FFh
  3775. ----------6B---------------------------------
  3776. INT 6B - "Saddam" virus - ???
  3777. SeeAlso: INT 21/AX=FFFFh,INT 60"virus",INT 70"virus"
  3778. ----------6C---------------------------------
  3779. INT 6C - system resume vector (CONVERTIBLE)
  3780. ----------6C---------------------------------
  3781. INT 6C - DOS 3.2 Realtime Clock update
  3782. ----------6D---------------------------------
  3783. INT 6D - VGA - internal
  3784. Note:    used by IBM, Paradise, Video7, and NCR
  3785. ----------6D---------------------------------
  3786. INT 6D - ATI VGA Wonder - VIDEO BIOS ENTRY POINT
  3787.    points at the original INT 10 entry point set up by the ATI BIOS
  3788. SeeAlso: INT 10
  3789. ----------6D---------------------------------
  3790. INT 6D - DECnet DOS - DATA LINK LAYER PROGRAM
  3791. ----------6E---------------------------------
  3792. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  3793. Notes:    this is the main DECnet DOS access, and is described in Digital manual
  3794.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  3795.     there is a signature/data area immediately prior to the interrupt
  3796.       handler which may be used as an installation check
  3797.  
  3798. Format of signature area:
  3799. Offset    Size    Description
  3800.  -5    BYTE    major version number
  3801.  -4    BYTE    minor version number
  3802.  -3   3 BYTEs    signature (ASCII "DNP")
  3803. ----------6F----BP0012-----------------------
  3804. INT 6F - HP ES-12 EXTENDED BIOS - READ CMOS MEMORY
  3805.     BP = 0012h
  3806.     AH = 22h
  3807.     BL = address of CMOS byte to read
  3808. Return: AH = status
  3809.     AL = byte read
  3810.     BP, DS destroyed
  3811. SeeAlso: BP=0012h/AH=24h
  3812. ----------6F----BP0012-----------------------
  3813. INT 6F - HP ES-12 EXTENDED BIOS - WRITE CMOS MEMORY
  3814.     BP = 0012h
  3815.     AH = 24h
  3816.     BL = address of CMOS byte to write
  3817.     AL = new value
  3818. Return: AH = status
  3819.     BP, DS destroyed
  3820. SeeAlso: BP=0012h/AH=22h
  3821. ----------6F---------------------------------
  3822. INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
  3823. ----------6F00-------------------------------
  3824. INT 6F - 10-NET - LOGIN
  3825.     AH = 00h
  3826.     DS:DX -> login record (see below)
  3827. Return: CL = security level
  3828.     AX = status
  3829.         0000h successful
  3830.         01FFh time out on response
  3831.         02FFh network (hardware) error
  3832.         03FFh invalid password
  3833.         04FFh local resource not available
  3834.         05FFh server resource not available
  3835.         06FFh already logged in under different name
  3836.         07FFh login security failure (node)
  3837.         08FFh not logged in
  3838.         09FFh position calc error
  3839.         0AFFh receive subfunction not = send subfunction (i.e. read, write)
  3840.         0BFFh request function not in range
  3841.         0CFFh no more server file handle entries left
  3842.         0DFFh no more shared file table entries left
  3843.         0EFFh no more user file handle entries left
  3844.         0FFFh chat permit not on
  3845.         10FFh not a server on request
  3846.         11FFh no transporter board error
  3847.         12FFh time out on send
  3848.         13FFh item not found (spool item not on queue)
  3849.         14FFh DOS access incompatible
  3850.         15FFh record already locked
  3851.         16FFh invalid parameter
  3852.         17FFh record lock time out error
  3853.         18FFh currently spooling to named device
  3854.         19FFh dropped receive message (throttle)
  3855.         1AFFh open sharing violation
  3856.         1BFFh no more tuf entries left
  3857.         1CFFh not file owner on open
  3858.         1DFFh read security not passed
  3859.         1EFFh write security not passed
  3860.         1FFFh group security not passed
  3861.         20FFh security file failure
  3862.         21FFh activity file failure
  3863.         22FFh spool cntrl file failure
  3864.         23FFh device not mounted (spooling)
  3865.         24FFh spool file has not been terminated
  3866.         25FFh device not mounted or is not being shared
  3867.         26FFh duplicate node id
  3868.         27FFh file not found error
  3869.         28FFh no more files
  3870.         29FFh unknown internal system error
  3871.         2AFFh print queue is full or corrupted
  3872.         2BFFh invalid function
  3873.         2CFFh invalid handle
  3874.         2DFFh too many files opened
  3875.         2EFFh path not found
  3876.         2FFFh named file is active
  3877. /* I've gotten one submission which says FFxxh, and another with xxFFh */
  3878. /* I don't know which way around these should be, does somebody else know? */
  3879.         FF01h timeout
  3880.         FF02h network error
  3881.         FF03h invalid password
  3882.         FF04h no local buffer
  3883.         FF05h superstation not available
  3884.         FF06h node already logged in
  3885.         FF07h login not valid from this node
  3886.         FF08h node ID already in use
  3887.         FF16h invalid parameter (bad length, invalid node ID, etc)
  3888.         FF17h record locked by another user
  3889.         FF18h sent message has been dropped
  3890. SeeAlso: AH=01h
  3891.  
  3892. Format of login record:
  3893. Offset    Size    Description
  3894.  00h  8 BYTEs    user name
  3895.  08h  8 BYTEs    password
  3896.  10h 12 BYTEs    name of SuperStation
  3897. ----------6F01-------------------------------
  3898. INT 6F - 10-NET - LOGOFF
  3899.     AH = 01h
  3900.     DS:DX -> superstation ID or nulls (12 bytes)
  3901. Return: CX = number of files closed
  3902.     AX = status (see AH=00h)
  3903.         FF08h superstation ID not already logged in
  3904. SeeAlso: AH=00h
  3905. ----------6F02-------------------------------
  3906. INT 6F - 10-NET - STATUS OF NODE
  3907.     AH = 02h
  3908.     DS:DX -> 512-byte status record (see below)
  3909. Return: CF set on error
  3910.         AX = error code (see AH=00h)
  3911.     CF clear if successful
  3912.  
  3913. Format of node status record:
  3914. Offset    Size    Description
  3915.  00h  8 BYTEs    user name (0 if none)
  3916.  08h    BYTE    station type
  3917.            00h workstation
  3918.            01h superstation
  3919.            02h gateway station
  3920.            03h gateway active
  3921.            04h logged into multiple superstations
  3922.            05h reserved
  3923.  09h 24 BYTEs    list of superstations logged into more than one superstation
  3924.  21h 12 BYTEs    node ID
  3925.  2Dh    WORD    message count for this station (send for user node, receive for
  3926.         superstations)
  3927. ---for superstations only---
  3928.  2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
  3929.  31h    BYTE    user service flag
  3930.         bit 7: gate
  3931.             6: print permit on
  3932.             4: SUBMIT is on
  3933.             3: mail waiting for node
  3934.             2: calendar waiting for you
  3935.             1: news waiting for you
  3936.             0: mail waiting for you
  3937.  32h    BYTE    printers allocated (bit 0=LPT1,...)
  3938.  33h    BYTE    number of unprinted spool files
  3939.  34h    BYTE    number of opened files
  3940.  35h    BYTE    number of logged on nodes
  3941.  36h    BYTE    primary drive (1=A:)
  3942.  37h    BYTE    reserved
  3943.  38h  N BYTEs    list of logged on node IDs (each 12 bytes, max 37 IDs)
  3944. 1F4h  3 BYTEs    time: sec/min/hrs
  3945. 1F7h  3 BYTEs    date: day/mon/year-1980
  3946. ----------6F03-------------------------------
  3947. INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
  3948.     AH = 03h
  3949.     DS:DI -> node ID (optional)
  3950. Return: ES:BX -> configuration table 
  3951. SeeAlso: AH=13h
  3952.  
  3953. Format of configuration table:
  3954. Offset    Size    Description
  3955. -41    WORD    local device table address
  3956. -39    WORD    extended network error mapping table address
  3957. -37    WORD    shared device table address
  3958. -35    WORD    mounted device table address
  3959. -33    BYTE    receive buffer counter
  3960. -32    BYTE    collect buffer counter
  3961. -31    WORD    TUF address
  3962. -29    BYTE    enable flag
  3963. -28    BYTE    FCB keep flag
  3964. -27    WORD    reserved
  3965. ---up to here, 10-Net v3.3---
  3966. -25    WORD    count of dropped Send6F
  3967. -23    WORD    buffer start address
  3968. -21    WORD    comm driver base address
  3969. -19    WORD    send/receive retry count
  3970. -17    BYTE    number of 550ms loops before timeout
  3971. -16    WORD    UFH address
  3972. -14    WORD    CDIR address
  3973. -12    WORD    LTAB address
  3974. -10    WORD    SFH address
  3975. -8    WORD    FTAB address
  3976. -6    WORD    RLTAB address
  3977. -4    WORD    SMI address
  3978. -2    WORD    NTAB address
  3979.  00h    WORD    address of first CT_DRV
  3980.  02h    BYTE    number of DRV entries
  3981.  03h  8 BYTEs    login name
  3982.  0Bh 12 BYTEs    node ID (blank-padded)
  3983.  17h  6 BYTEs    node address
  3984.  1Dh    BYTE    flag
  3985.  1Eh    BYTE    CT_CFLG (chat permit)
  3986.         bit 1: sound bell
  3987.         bit 0: CHAT permit
  3988.  1Fh    BYTE    CT_PSFLG
  3989.         bit 5: PRINT permit
  3990.         bit 4: KB initiated
  3991.         bit 3: CHAT called FOXPTRM
  3992.         bit 2: SUBMIT active
  3993.         bit 1: SUBMIT received
  3994.         bit 0: SUBMIT permit
  3995.  20h    BYTE    in 10Net flag
  3996.  21h    WORD    receive message count
  3997.  23h    WORD    send message count
  3998.  25h    WORD    retry count
  3999.  27h    WORD    failed count
  4000.  29h    WORD    driver errors
  4001.  2Bh    WORD    dropped responses/CHATs
  4002.  2Dh  9 BYTEs    LIST ID/NTAB address (3 entries--LPT1-3)
  4003.  36h  6 BYTEs    AUX ID/NTAB address (2 entries--COM1-2)
  4004.  3Ch    BYTE    active CB channel
  4005.  3Dh    BYTE    received 6F messages on queue
  4006.  3Eh  9 BYTEs    activity counters for channels 1-9
  4007. ---beyond here, 10-Net v3.3---
  4008.  47h    BYTE    bit 0 = RS232 gate
  4009.             1 = Send6F gate (user set)
  4010.  48h    DWORD    pointer into gate (user set)
  4011.  4Ch    DWORD    pointer into 10Net send
  4012.  50h  N WORDs    addresses of timer blocks
  4013. ----------6F04-------------------------------
  4014. INT 6F - 10-NET - SEND
  4015.     AH = 04h
  4016.     DS:BX -> record
  4017.         12 BYTEs receiving node's ID
  4018.             if first byte has high-order bit set, message is
  4019.                directed to the CT_RGATE vector at the receiver
  4020.             if second byte is 00h, first byte is taken as a CB
  4021.                channel number and delivered to all nodes on same
  4022.                channel
  4023.            WORD     length of data at DX
  4024.     DS:DX -> data (max 1024 bytes)
  4025. Return: CF set on error
  4026.         AX = error code (see AH=00h)
  4027.     CF clear if successful
  4028. SeeAlso: AH=05h
  4029. ----------6F05-------------------------------
  4030. INT 6F - 10-NET - RECEIVE
  4031.     AH = 05h
  4032.     CX = number of seconds before timeout
  4033.     DS:DX -> receive buffer (see below)
  4034. Return: CF set on error
  4035.         AX = error code (see AH=00h)
  4036.     CF clear if successful
  4037.         AH = FEh if dequeued message is a CB message
  4038. SeeAlso: AH=04h
  4039.  
  4040. Format of receive buffer:
  4041. Offset    Size    Description
  4042.  00h 12 BYTEs    sending node's ID
  4043.  0Ch    WORD    length of message
  4044.  0Eh  N BYTEs    message (maximum 1024 bytes)
  4045. ----------6F07-------------------------------
  4046. INT 6F - 10-NET - LOCK HANDLE
  4047.     AH = 07h
  4048.     BX = file handle
  4049.     CX:DX = starting offset in file
  4050.     SI = record length
  4051. Return: CF set on error
  4052.         AX = error code (see also AH=00h)
  4053.         0002h file not found
  4054.     CF clear if successful
  4055. SeeAlso: AH=08h,INT 21/AH=5Ch
  4056. ----------6F08-------------------------------
  4057. INT 6F - 10-NET - UNLOCK HANDLE
  4058.     AH = 08h
  4059.     BX = file handle
  4060.     AL = mode
  4061.         00h unlock all
  4062.         01h unlock record at CX:DX
  4063. Return: CF set on error
  4064.         AX = error code (see also AH=00h)
  4065.         0002h file not found
  4066.     CF clear if successful
  4067. SeeAlso: AH=07h,INT 21/AH=5Ch
  4068. ----------6F09-------------------------------
  4069. INT 6F - 10-NET - SUBMIT
  4070.     AH = 09h
  4071.     DS:BX -> submit record (see below)
  4072.  
  4073. Format of submit record:
  4074. Offset    Size    Description
  4075.  00h 12 BYTEs    destination node ID (must be logged in)
  4076.  0Ch    WORD    length+2 of following 'command line' text
  4077.  0Eh  N BYTEs    command line text (<=100 bytes), system adds CR
  4078. ----------6F0A-------------------------------
  4079. INT 6F - 10-NET - CHAT
  4080.     AH = 0Ah
  4081.     DS:BX -> control parameters (see below)
  4082.     DS:DX -> chat message (see below)
  4083.  
  4084. Format of control parameters:
  4085. Offset    Size    Description
  4086.  00h  8 BYTEs    sender ID, defaults to node's userID if nulls
  4087.  08h  8 BYTEs    destination user ID, 'EVERYONE' may be used
  4088.  10h 12 BYTEs    destination node ID
  4089.  
  4090. Format of chat message:
  4091. Offset    Size    Description
  4092.  00h    WORD    length+2 of following text
  4093.  02h  N BYTEs    text, max 101 bytes
  4094. ----------6F0B-------------------------------
  4095. INT 6F - 10-NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
  4096.     AH = 0Bh
  4097.     AL = drive number or 0
  4098.     ES:SI = Ethernet address or 0
  4099.     DS:BX -> 31-byte ASCIZ semaphore name
  4100. Return: AL = status
  4101.         00h successful
  4102.         01h semaphore currently locked
  4103.         02h server not responding
  4104.         03h invalid semaphore name
  4105.         04h semaphore list is full
  4106.         05h invalid drive ID
  4107.         06h invalid Ethernet address
  4108.         07h not logged in
  4109.         08h write to network failed
  4110.         09h semaphore already logged in this CPU
  4111. Note:    same as INT 60/AH=12h
  4112. SeeAlso: AH=0Ch,INT 60/AH=12h
  4113. ----------6F0C-------------------------------
  4114. INT 6F - 10-NET - UNLOCK SEMAPHORE
  4115.     AH = 0Ch
  4116.     AL = drive number or 0
  4117.     ES:SI = Ethernet address or 0
  4118.     DS:BX -> 31-byte ASCIZ semaphore name
  4119. Return: AL = status (see also AH=0Bh)
  4120.         01h semaphore not locked
  4121. Note:    same as INT 60/AH=13h
  4122. SeeAlso: AH=0Bh,INT 60/AH=13h
  4123. ----------6F0D-------------------------------
  4124. INT 6F - 10-NET - WHO
  4125.     AH = 0Dh
  4126.     AL = type code
  4127.         01h return superstations only
  4128.         02h return non-superstations only
  4129.         otherwise return all
  4130.     CX = length of data
  4131.     DS:DX -> array of records to be filled (see below)
  4132. Return: CL = number of records returned (responding stations)
  4133.  
  4134. Format of station record:
  4135. Offset    Size    Description
  4136.  00h 12 BYTEs    node ID
  4137.  0Ch    BYTE    flags
  4138.         bit 1 = workstation
  4139.             2 = superstation
  4140.             3 = xgate
  4141.             4 = active gate
  4142. ---if AL = 01h---
  4143.  0Dh    BYTE    version number
  4144.     WORD    level number of 10Net software in responding node
  4145. ---if AL = 02h---
  4146.  0Dh  8 BYTEs    user ID
  4147.  15h    BYTE    version number
  4148.  16h    WORD    level number
  4149. ----------6F0E-------------------------------
  4150. INT 6F - 10-NET - SPOOL/PRINT
  4151.     AH = 0Eh
  4152.     DS:DX -> spool/print record (see below)
  4153. Return: CF set on error
  4154.         AX = error code (see also AH=00h)
  4155.         FF17h device not mounted
  4156.         FF18h already spooling to named device
  4157.     CF clear if successful
  4158.  
  4159. Format of Spool/Print record:
  4160. Offset    Size    Description
  4161.  00h    WORD    operation code
  4162.            00h initiate spool
  4163.            01h abort print
  4164.            02h close spool
  4165.            03h delete spool
  4166.            04h print
  4167.            05h get report info
  4168.            06h set chat template
  4169.            07h queue
  4170.            08h return queue
  4171.            09h queue non-spooled file for printing
  4172.  02h 11 BYTEs    file name in FCB format
  4173. ---if operation code = 00h or 06h---
  4174.  0Dh    BYTE    notification
  4175.         bit 7: queue to top
  4176.         bit 6: do ID page
  4177.         bit 5: no form feed
  4178.         bit 4: reserved
  4179.         bit 3: explicity queuing only
  4180.         bit 2: notify at print completion
  4181.         bit 1: notify server operator/reply
  4182.         bit 0: notify at print start
  4183.  0Eh    BYTE    days to keep (FFh=forever)
  4184.  0Fh    BYTE    bits 0,1: device (1=LPT1)
  4185.         bits 4-7: remote drive to store spool file (1=A,...)
  4186.  10h    WORD    length of following data area
  4187.  12h  N BYTEs    up to 64 bytes of description
  4188. ---if operation code = 03h---
  4189.  0Dh  8 BYTEs    user ID to associate with filename
  4190. ---if operation code = 04h---
  4191.  0Dh    WORD    block number
  4192.  0Fh  8 BYTEs    user ID to associate with filename
  4193. ---if operation code = 05h---
  4194.  0Dh    BYTE    RRN to start retrieve
  4195.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  4196.         bit 3: if set, return entries for all users
  4197.  0Fh    WORD    length of following area
  4198.  11h  N BYTEs    up to 1500 bytes to receive $SCNTL records returned
  4199. ---if operation code = 07h---
  4200.  0Dh    BYTE    queue number
  4201.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  4202.  0Fh    WORD    number of bytes of test print to be done
  4203.  11h    BYTE    code: 01h print device
  4204.               02h test print count
  4205.               03h prn
  4206. ---if operation code = 08h---
  4207.  0Dh    BYTE    queue location or $SCNTL location to start access
  4208.             returns next item for access:
  4209.                 00h-7Fh queued items
  4210.                 80h-FEh non-queued, non-printed items
  4211.                 FFh    no more items
  4212.  0Eh    WORD    unused
  4213.  10h    WORD    length of following area
  4214.  12h  N BYTEs    up to 64 bytes to receive $SCNTL records
  4215. ---if operation code = 09h---
  4216.  0Dh  3 BYTEs    unused
  4217.  10h  N BYTEs    path to non-spooled file to be queued for printing
  4218.  
  4219. Format of $SCNTL record:
  4220. Offset    Size    Description
  4221.  00h  8 BYTEs    user ID
  4222.  08h 11 BYTEs    filename in FCB format
  4223.  13h  6 BYTEs    node ID
  4224.  19h  3 BYTEs    creation date
  4225.  1Ch    BYTE    flags
  4226.         bit 7: queue to top
  4227.             6: do ID page
  4228.             5: no form feed at end
  4229.             4: reserved
  4230.             3: explicit queueing only
  4231.             2: notify at completion
  4232.             1: notify server operator/reply
  4233.             0: notify at start
  4234.  1Dh    BYTE    retention time in days
  4235.  1Eh    BYTE    printing device (LPTx)
  4236.  1Fh  3 BYTEs    date last printed (0 = never)
  4237.  22h    BYTE    device containing spoolfile
  4238.  23h    WORD    bytes to print for test print
  4239.  25h    WORD    block number to start print
  4240.  27h    BYTE    reserved
  4241. ----------6F10-------------------------------
  4242. INT 6F - 10-NET - ATTACH/DETACH PRINTER
  4243.     AH = 10h
  4244.     AL = subfunction
  4245.         00h initiate spooling if LPT1 is mounted
  4246.         01h terminate spooling if LPT1 is mounted
  4247. SeeAlso: INT 21/AX=5D08h
  4248. ----------6F11-------------------------------
  4249. INT 6F - 10-NET - LOCK FCB
  4250.     AH = 11h
  4251.     AL = mode
  4252.         01h sequential
  4253.         02h random
  4254.         03h random block
  4255.         CX = number of records
  4256.     DS:DX -> FCB (see INT 21/AH=0Fh)
  4257. Return: CF set on error
  4258.         AX = error code (see also AH=00h)
  4259.         0002h file not found
  4260.     CF clear if successful
  4261. SeeAlso: AH=12h
  4262. ----------6F12-------------------------------
  4263. INT 6F - 10-NET - UNLOCK FCB
  4264.     AH = 12h
  4265.     AL = mode
  4266.         00h sequential
  4267.         01h random
  4268.         02h random block
  4269.         CX = number of records
  4270.     DS:DX -> FCB (see INT 21/AH=0Fh)
  4271. Return: CF set on error
  4272.         AX = error code (see also AH=00h)
  4273.         0002h file not found
  4274.     CF clear if successful
  4275. SeeAlso: AH=11h
  4276. ----------6F13-------------------------------
  4277. INT 6F - 10-NET v3.3 - GET REMOTE CONFIGURATION TABLE ADDRESS
  4278.     AH = 13h
  4279.     DS:DX -> node ID, 12 bytes blank-padded
  4280. Return: CF set on error
  4281.         AX = error code (see AH=00h)
  4282.     CF clear if successful
  4283.         ES:BX = configuration table address on given machine
  4284. SeeAlso: AH=03h
  4285. ----------6F14-------------------------------
  4286. INT 6F - 10-NET v3.3 - GET REMOTE MEMORY
  4287.     AH = 14h
  4288.     BX:SI = address of remote memory
  4289.     CX = length (<=1024 bytes)
  4290.     DS:DX -> node ID, 12 bytes blank-padded
  4291.     DS:DI -> area to receive remote memory image
  4292. Return: CF set on error
  4293.         AX = error code (see AH=00h)
  4294.     CF clear if successful
  4295.         CX = amount of memory copied to DS:SI
  4296. ----------6F1501-----------------------------
  4297. INT 6F - 10-NET v3.3 - GET SHARED DEVICE ENTRY
  4298.     AX = 1501h
  4299.     BX = zero-based index
  4300.     DS:SI -> node ID, 12 bytes blank-padded
  4301.     ES:DI -> 85-byte buffer for shared device table entry (see below)
  4302. Return: CF set on error
  4303.         AX = error code (see AH=00h)
  4304.     CF clear if successful
  4305.         ES:DI buffer contains shared device table entry of BXth device:
  4306. SeeAlso: AX=1502h,AX=1503h
  4307.  
  4308. Format of shared device table entry:
  4309. Offset    Size    Description
  4310.  00h  8 BYTEs    device
  4311.  08h  8 BYTEs    alias
  4312.  10h 64 BYTEs    path
  4313.  50h  8 BYTEs    password
  4314.  58h    BYTE    access
  4315.  59h  4 BYTEs    mask
  4316. ----------6F1502-----------------------------
  4317. INT 6F - 10-NET v3.3 - SET SHARED DEVICE ENTRY
  4318.     AX = 1502h
  4319.     DS:SI -> node ID, 12 bytes blank-padded
  4320.     ES:DI -> valid shared device table entry
  4321. Return: CF set on error
  4322.         AX = error code (see AH=00h)
  4323.     CF clear if successful
  4324. SeeAlso: AX=1501h,AX=1503h
  4325. ----------6F1503-----------------------------
  4326. INT 6F - 10-NET v3.3 - DELETE SHARED DEVICE ENTRY
  4327.     AX = 1503h
  4328.     BX = zero-based index
  4329.     DS:SI -> node ID, 12 bytes blank-padded
  4330. Return: CF set on error
  4331.         AX = error code (see AH=00h)
  4332.     CF clear if successful
  4333. SeeAlso: AX=1501h,AX=1502h
  4334. ----------6F17-------------------------------
  4335. INT 6F - 10-NET v3.3 - MOUNT
  4336.     AH = 17h
  4337.     AL = local drive number (0=A:)
  4338.     BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
  4339.     DS:DX -> node ID, 12 bytes blank-padded
  4340. Return: CF set on error
  4341.         AX = error code (see AH=00h)
  4342.     CF clear if successful
  4343. SeeAlso: AH=18h
  4344. ----------6F18-------------------------------
  4345. INT 6F - 10-NET v3.3 - UNMOUNT
  4346.     AH = 18h
  4347.     AL = local drive number (0=A:)
  4348.     BL = type
  4349.         00h        disk
  4350.         01h-03h LPTn
  4351.         04h,05h COMx
  4352. Return: CF set on error
  4353.         AX = error code (see AH=00h)
  4354.     CF clear if successful
  4355. SeeAlso: AH=17h
  4356. ----------70---------------------------------
  4357. INT 70 - IRQ8 - CMOS REAL-TIME CLOCK
  4358. Notes:    this interrupt is called when the real-time clock chip generates an
  4359.       alarm or periodic interrupt, among others.  The periodic interrupt
  4360.       occurs 1024 times per second, although many BIOSes turn it off in
  4361.       the INT 70h handler unless in an event wait (see INT 15/AH=83h or
  4362.       INT 15/AH=86h).
  4363.     may be masked by setting bit 0 on I/O port A1h
  4364. SeeAlso: INT 08,INT 15/AH=01h"Amstrad",INT 15/AH=83h,INT 15/AH=86h
  4365. SeeAlso: INT 1A/AH=02h,INT 58
  4366. ----------70---------------------------------
  4367. INT 70 - "Stupid" virus - ???
  4368. SeeAlso: INT 6B"virus",INT E0"virus"
  4369. ----------71---------------------------------
  4370. INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS
  4371. Notes:    may be masked by setting bit 1 on I/O port A1h
  4372.     the default BIOS handler invokes INT 0A for compatibility, since the
  4373.       pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
  4374.       AT expansion bus.
  4375.     under DESQview, only the INT 15h vector and BASIC segment address (the
  4376.       word at 0000h:0510h) may be assumed to be valid for the handler's
  4377.       process
  4378. SeeAlso: INT 0A,INT 59
  4379. ----------72---------------------------------
  4380. INT 72 - IRQ10 - RESERVED
  4381. Note:    may be masked by setting bit 2 on I/O port A1h
  4382. SeeAlso: INT 5A
  4383. ----------73---------------------------------
  4384. INT 73 - IRQ11 - RESERVED
  4385. Note:    may be masked by setting bit 3 on I/O port A1h
  4386. SeeAlso: INT 5B
  4387. ----------74---------------------------------
  4388. INT 74 - IRQ12 - POINTING DEVICE (PS)
  4389. Notes:    may be masked by setting bit 4 on I/O port A1h
  4390.     under DESQview, only the INT 15h vector and BASIC segment address (the
  4391.       word at 0000h:0510h) may be assumed to be valid for the handler's
  4392.       process
  4393. SeeAlso: INT 33,INT 5C
  4394. ----------75---------------------------------
  4395. INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
  4396.    redirected to INT 02 by the BIOS, for compatibility with the PC
  4397. Notes:    may be masked by setting bit 5 on I/O port A1h
  4398.     not all clones wire the coprocessor to generate this IRQ; some systems
  4399.       generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
  4400.       (see INT 10"COPROCESSOR")
  4401.     under DESQview, only the INT 15h vector and BASIC segment address (the
  4402.       word at 0000h:0510h) may be assumed to be valid for the handler's
  4403.       process
  4404. SeeAlso: INT 10"COPROCESSOR",INT 5D
  4405. ----------76---------------------------------
  4406. INT 76 - IRQ14 - HARD DISK CONTROLLER (AT and later)
  4407. Note:    may be masked by setting bit 6 on I/O port A1h
  4408. SeeAlso: INT 0E"IRQ6",INT 5E
  4409. ----------77---------------------------------
  4410. INT 77 - IRQ15 - RESERVED (AT,PS)
  4411. Note:    may be masked by setting bit 7 on I/O port A1h
  4412. SeeAlso: INT 5F
  4413. ----------77---------------------------------
  4414. INT 77 - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
  4415. Note:    may be masked by setting bit 7 on I/O port A1h
  4416. SeeAlso: INT 15/AX=4600h,INT 5F
  4417. ----------7800-------------------------------
  4418. INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
  4419.     AH = 00h
  4420.     DX = interface board I/O port
  4421. Return:    CF set on error
  4422.         AL = error code
  4423.         00h illegal command given to SCSI code
  4424.         01h invalid I/O port specified (must be from 100H to 3F8H, and
  4425.             must be on an 8-port boundary)
  4426.         02h invalid DMA channel specified (must be from 1 to 3)
  4427.         03h invalid SCSI board number specified (must be from 0 to 7)
  4428.         04h error from data register test during self-test
  4429.         05h SCSI input signals not all 0 when SCSI RST activated
  4430.         06h SCSI input signals not all 0 before selecting a SCSI device
  4431.         07h BSY signal is active; SCSI bus is busy
  4432.         08h SCSI board not selected, BSY signal did not come on in
  4433.             response to raising SEL
  4434.         09h time-out waiting for status state, signifying end of DMA
  4435.             transfer
  4436. Note:    if this routine is not called, the port is the driver's default
  4437.       (usually 0280h or 0300h)
  4438.     an installation check is performed by TARGA.DEV upon initialization
  4439.       by checking for the string "SCSI" at offset 03h into the interrupt
  4440.       handler
  4441. SeeAlso: AH=01h,AH=02h
  4442. ----------7801-------------------------------
  4443. INT 78 - TARGA.DEV - GET I/O PORT
  4444.     AH = 01h
  4445. Return: DX = current interface board I/O port
  4446. SeeAlso: AH=00h,AH=03h"TARGA"
  4447. ----------7802-------------------------------
  4448. INT 78 - TARGA.DEV - SET DMA CHANNEL
  4449.     AH = 02h
  4450.     AL = interface board DMA channel
  4451. Return: CF set on error
  4452.     AL = error code (see AH=00h)
  4453. Note:    if this routine is not called, the DMA channel is the driver's default
  4454.       (usually 3)
  4455. SeeAlso: AH=00h,AH=03h"TARGA"
  4456. ----------7803-------------------------------
  4457. INT 78 - TARGA.DEV - GET DMA CHANNEL
  4458.     AH = 03h
  4459. Return: AL = current interface board DMA channel
  4460. SeeAlso: AH=01h,AH=02h
  4461. ----------7803-------------------------------
  4462. INT 78 - UofSalford DBOS DOS extender - SWITCH TO PROTECTED MODE
  4463.     AH = 03h
  4464.     ???
  4465. Return: ???
  4466. Note:    DBOS supports functions 00h through 50h
  4467. SeeAlso: AH=1Eh"DBOS",AH=22h"DBOS"
  4468. ----------7804-------------------------------
  4469. INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
  4470.     AH = 04h
  4471.     AL = SCSI device number
  4472. Return: CF set on error
  4473.     AL = error code (see AH=00h)
  4474. Note:    if this routine is not called, the device number used is the driver's
  4475.       default (usually 0)
  4476. SeeAlso: AH=02h,AH=05h
  4477. ----------7805-------------------------------
  4478. INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
  4479.     AH = 05h
  4480. Return: AL = current SCSI device number
  4481. SeeAlso: AH=03h"TARGA",AH=04h
  4482. ----------7806-------------------------------
  4483. INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
  4484.     AH = 06h
  4485.     AL = 00h clear early return mode
  4486.        = 01h set early return mode
  4487. Note:    if early return mode is set then SCSI will return with no errors
  4488.       when the last DMA transfer is started in a call with AH=13h or AH=14h
  4489.     if this routine is not called, early return mode is cleared
  4490. SeeAlso: AH=13h,AH=14h,AH=15h
  4491. ----------7808-------------------------------
  4492. INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
  4493.     AH = 08h
  4494. Return: CF set on error
  4495.     AL = error code (see AH=00h)
  4496. Note:    the SCSI bus is also reset
  4497. SeeAlso: AH=09h
  4498. ----------7809-------------------------------
  4499. INT 78 - TARGA.DEV - RESET SCSI BUS
  4500.     AH = 09h
  4501. Return: AL = error code if carry set (see AH=00h)
  4502. SeeAlso: AH=08h
  4503. ----------7810-------------------------------
  4504. INT 78 - TARGA.DEV - SEND SCSI COMMAND
  4505.     AH = 10h
  4506.     DS:SI -> command bytes
  4507. Return: AH = SCSI status byte
  4508.     CF clear if successful
  4509.         AL = SCSI message byte
  4510.     CF set on error
  4511.         AL = error code (see AH=00h)
  4512. SeeAlso: AH=11h
  4513.  
  4514. Format of SCSI Command:
  4515. Offset    Size    Description
  4516.  00h    BYTE    length of command
  4517.  01h    ???    command bytes
  4518. ----------7811-------------------------------
  4519. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
  4520.     AH = 11h
  4521.     DS:SI -> command bytes
  4522.     ES:BX -> data storage area
  4523.     CX = number of data bytes to transfer
  4524. Return: AH = SCSI status byte
  4525.     CF clear if successful
  4526.         AL = SCSI message byte
  4527.     CF set on error
  4528.         AL = error code (see AH=00h)
  4529. Note:    this command receives data internally one byte at a time
  4530. SeeAlso: AH=10h,AH=13h
  4531.  
  4532. Format of SCSI Command:
  4533. Offset    Size    Description
  4534.  00h    BYTE    length of command
  4535.  01h    ???    command bytes
  4536. ----------7812-------------------------------
  4537. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
  4538.     AH = 12h
  4539.     DS:SI -> command bytes
  4540.     ES:BX -> data storage area
  4541.     CX = number of data bytes to transfer
  4542. Return: AH = SCSI status byte
  4543.     CF clear if successful
  4544.         AL = SCSI message byte
  4545.     CF set on error
  4546.         AL = error code (see AH=00h)
  4547. Note:    this command sends data internally one byte at a time
  4548. SeeAlso: AH=14h
  4549.  
  4550. Format of SCSI Command:
  4551. Offset    Size    Description
  4552.  00h    BYTE    length of command
  4553.  01h    ???    command bytes
  4554. ----------7813-------------------------------
  4555. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
  4556.     AH = 13h
  4557.     DS:SI -> command bytes
  4558.     ES:BX -> data storage area
  4559.     DX:CX = number of data bytes to transfer
  4560. Return: AH = SCSI status byte (if early return mode is clear)
  4561.     CF clear if successful
  4562.         AL = SCSI message byte (if early return mode is clear)
  4563.     CF set on error
  4564.         AL = error code (see AH=00h)
  4565. Note:    this command receives data using DMA
  4566. SeeAlso: AH=11h,AH=12h
  4567.  
  4568. Format of SCSI Command:
  4569. Offset    Size    Description
  4570.  00h    BYTE    length of command
  4571.  01h    ???    command bytes
  4572. ----------7814-------------------------------
  4573. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
  4574.     AH = 14h
  4575.     DS:SI -> command bytes
  4576.     ES:BX -> data storage area
  4577.     DX:CX = number of data bytes to transfer
  4578. Return: AH = SCSI status byte (if early return mode is clear)
  4579.     CF clear if successful
  4580.         AL = SCSI message byte (if early return mode is clear)
  4581.     CF set on error
  4582.         AL = error code (see AH=00h)
  4583. Note:    this command sends data using DMA
  4584. SeeAlso: AH=12h,AH=13h
  4585.  
  4586. Format of SCSI Command:
  4587. Offset    Size    Description
  4588.  00h    BYTE    length of command
  4589.  01h    ???    command bytes
  4590. ----------7815-------------------------------
  4591. INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
  4592.     AH = 15h
  4593. Return: AH = SCSI status byte
  4594.     CF clear if successful
  4595.         AL = SCSI message byte
  4596.     CF set on error
  4597.         AL = error code (see AH=00h)
  4598. Note:    if AH=06h was previously called to set the early return mode, this
  4599.       function finishes a command AH=13h or AH=14h which returned before
  4600.       the last DMA transfer was finished
  4601. SeeAlso: AH=06h,AH=13h,AH=14h
  4602. ----------781E-------------------------------
  4603. INT 78 - UofSalford DBOS DOS extender - SET REAL-MODE MEMORY SIZE
  4604.     AH = 1Eh
  4605.     ???
  4606. Return: ???
  4607. Notes:    specifies how much real-mode memory to leave free when running FTN77
  4608.       programs
  4609.     DBOS supports functions 00h through 50h
  4610. SeeAlso: AH=03h"DBOS",AH=22h"DBOS"
  4611. ----------7822-------------------------------
  4612. INT 78 - UofSalford DBOS DOS extender - UNINSTALL
  4613.     AH = 22h
  4614.     ???
  4615. Return: ???
  4616. Note:    DBOS supports functions 00h through 50h
  4617. SeeAlso: AH=03h"DBOS",AH=1Eh"DBOS"
  4618. ----------79---------------------------------
  4619. INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
  4620. Return: CF set if no keystroke available
  4621.         AX = FFFFh
  4622.     CF clear if key pressed
  4623.         AX = keystroke
  4624. Notes:    if a keystroke is available, it is removed from the keyboard buffer
  4625.       before being returned
  4626.     AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
  4627.       AVATAR command codes just as ANSI.SYS interprets ANSI commands
  4628. SeeAlso: INT 29
  4629. ----------7A---------------------------------
  4630. INT 7A - Topware Network Operating System - ???
  4631.     AL = ???
  4632.     ???
  4633. Return: ???
  4634. ----------7A---------------------------------
  4635. INT 7A - AutoCAD Device Interface
  4636.     ???
  4637. ----------7A---------------------------------
  4638. INT 7A - Novell NetWare - LOW-LEVEL API - Notes
  4639. Note:    this interrupt is used for IPX/SPX access in NetWare versions through
  4640.       2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  4641.       entry point.    For both INT 7A and the FAR entry point, BX contains
  4642.       the function number; IPX is sometimes called internally with BX bit
  4643.       15 set.
  4644. SeeAlso: INT 2F/AX=7A00h,INT 64"Novell"
  4645. ----------7A----BX0000-----------------------
  4646. INT 7A - Novell NetWare Low-Level API (IPX) Driver - OPEN SOCKET
  4647.     BX = 0000h
  4648.     AL = mode
  4649.         00h open until close or terminate
  4650.         FFh open until close
  4651.     DX = socket number (high byte in DL)
  4652.         0000h dynamic allocation
  4653.         else  socket to open
  4654. Return: AL = return code
  4655.         00h success
  4656.         DX = socket number
  4657.         FEh socket table full
  4658.         FFh socket already open
  4659. SeeAlso: BX=0001h
  4660. ----------7A----BX0001-----------------------
  4661. INT 7A - Novell NetWare Low-Level API (IPX) Driver - CLOSE SOCKET
  4662.     BX = 0001h
  4663.     DX = socket (high byte in DL)
  4664. SeeAlso: BX=0000h
  4665. ----------7A----BX0002-----------------------
  4666. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET LOCAL TARGET
  4667.     BX = 0002h
  4668.     ES:SI -> target internetwork address
  4669.     ES:DI -> 6-byte buffer for local target
  4670. Return: AL = return code
  4671.         00h success
  4672.            CX = expected one-way transfer time (clock ticks)
  4673.            ES:DI -> local target
  4674.         FAh unsuccessful
  4675. Note:    The internetwork address consists of a 4-byte network address followed
  4676.       by a 6-byte node address.  The local target is only a 6-byte node
  4677.       address.  If the target is in the same network, the local target is
  4678.       just the node address of target; otherwise, the local target is the
  4679.       node address of the bridge that leads to the target.
  4680. SeeAlso: BX=0009h
  4681. ----------7A----BX0003-----------------------
  4682. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SEND PACKET
  4683.     BX = 0003h
  4684.     ES:SI -> Event Control Block (see below)
  4685. SeeAlso: BX=0004h,BX=000Fh
  4686.  
  4687. Format of Event Control Block:
  4688. Offset    Size    Description
  4689.  00h    DWORD    Link
  4690.  04h    DWORD    -> Event Service Routine (00000000h if none)
  4691.  08h    BYTE    in use flag
  4692.  09h    BYTE    completion code
  4693.  0Ah    WORD    socket (high byte first [big-endian])
  4694.  0Ch  4 BYTES    IPX workspace
  4695.  10h 12 BYTES    driver workspace
  4696.  1Ch  6 BYTES    immediate local node address
  4697.  22h    WORD    fragment count
  4698.  26h    var    fragment descriptors
  4699.         Offset    Size    Description
  4700.          00h    DWORD    -> fragment data
  4701.          04h    WORD    size of fragment in bytes.
  4702. Notes:    ESR is a far procedure that is called when the ECB has been handled.
  4703.       On call, the in use flag is zero if the ECB has been handled,
  4704.       non-zero otherwise. If the flag is zero, the completion code holds
  4705.       the result of the event:
  4706.         00h success
  4707.         F9h event should not be cancelled
  4708.         FCh cancelled
  4709.         FDh malformed packet
  4710.         FEh packet undeliverable
  4711.         FFh physical error
  4712.     the first fragment should start with an IPX header
  4713.     all fragments are concatenated and sent in one piece
  4714.     node address FF FF FF FF FF FF broadcasts to all nodes
  4715.  
  4716. Event Service Routine called with:
  4717.     AL = caller's identity (00h = AES, FFh = IPX)
  4718.     ES:SI -> event control block
  4719.     interrupts disabled
  4720.  
  4721. Format of IPX header:
  4722. Offset    Size    Description
  4723.  00h    WORD    checksum (high byte first [big-endian])
  4724.  02h    WORD    length in bytes (high byte first) of total packet
  4725.  04h    BYTE    transport control
  4726.  05h    BYTE    packet type
  4727.         00h unknown packet type
  4728.         01h routing information packet
  4729.         02h echo packet
  4730.         03h error packet
  4731.         04h packet exchange packet (always use this one)
  4732.         05h SPX packet
  4733.         11h (used internally)
  4734.  06h 10 BYTES    destination internetwork address
  4735.  10h    WORD    destination socket (high byte first)
  4736.  12h 10 BYTES    source internetwork address
  4737.  1Ch    WORD    source socket
  4738. ----------7A----BX0004-----------------------
  4739. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR PACKET
  4740.     BX = 0004h
  4741.     ES:SI -> Event Control Block (see BX=0003h)
  4742. SeeAlso: BX=0003h
  4743. ----------7A----BX0005-----------------------
  4744. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SCHEDULE IPX EVENT
  4745.     BX = 0005h
  4746.     AX = delay time
  4747.     ES:SI -> Event Control Block (see BX=0003h)
  4748. SeeAlso: BX=0006h,BX=0007h
  4749. ----------7A----BX0006-----------------------
  4750. INT 7A - Novell NetWare Low-Level API (IPX) Driver - CANCEL EVENT
  4751.     BX = 0006h
  4752.     ES:SI -> Event Control Block (see BX=0003h)
  4753. Return: AL = return code
  4754.         00h success
  4755.         F9h event in use
  4756.         FFh unsuccessful, event not in use
  4757. SeeAlso: BX=0005h
  4758. ----------7A----BX0007-----------------------
  4759. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SCHEDULE SPECIAL EVENT
  4760.     BX = 0007h
  4761.     AX = delay time
  4762.     ES:SI -> Event Control Block (see BX=0003h)
  4763. SeeAlso: BX=0006h
  4764. ----------7A----BX0008-----------------------
  4765. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET INTERVAL MARKER
  4766.     BX = 0008h
  4767. Return: AX = interval marker in clock ticks
  4768. ----------7A----BX0009-----------------------
  4769. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET INTERNETWORK ADDRESS
  4770.     BX = 0009h
  4771.     ES:SI -> 10-byte buffer
  4772. Return: ES:SI -> own internetwork address
  4773. SeeAlso: BX=0002h,BX=000Bh
  4774. ----------7A----BX000A-----------------------
  4775. INT 7A - Novell NetWare Low-Level API (IPX) Driver - RELINQUISH CONTROL
  4776.     BX = 000Ah
  4777. Note:    this call permits the IPX driver to do some work
  4778. ----------7A----BX000B-----------------------
  4779. INT 7A - Novell NetWare Low-Level API (IPX) Driver - DISCONNECT FROM TARGET
  4780.     BX = 000Bh
  4781.     ES:SI -> internetwork address
  4782. Note:    only use in point-to-point networks
  4783. SeeAlso: BX=0002h,BX=0009h
  4784. ----------7A----BX000C-----------------------
  4785. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4786.     BX = 000Ch
  4787.     ???
  4788. Return: ???
  4789. ----------7A----BX000D-----------------------
  4790. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4791.     BX = 000Dh
  4792.     ???
  4793. Return: ???
  4794. ----------7A----BX000E-----------------------
  4795. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4796.     BX = 000Eh
  4797.     ???
  4798. Return: ???
  4799. ----------7A----BX000F-----------------------
  4800. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL - SEND PACKET
  4801.     BX = 000Fh
  4802.     ES:SI -> Event Control Block (see BX=0003h)
  4803. Note:    similar to function 0003h, but apparently does not allow multiple
  4804.       fragments
  4805. SeeAlso: BX=0003h
  4806. ----------7A----BX0010-----------------------
  4807. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SPX INSTALLATION CHECK
  4808.     BX = 0010h
  4809.     AL = 00h
  4810. Return: AL = FFh if SPX loaded
  4811. SeeAlso: BX=0015h
  4812. ----------7A----BX0011-----------------------
  4813. INT 7A - Novell NetWare Low-Level API (IPX) Driver - ESTABLISH SPX CONNECTION
  4814.     BX = 0011h
  4815.     AL = retry count
  4816.     AH = watchdog flag
  4817.     ES:SI -> Event Control Block (see BX=0003h)
  4818. Return: DX = assigned connection number
  4819. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  4820.       that NetWare can perform its internal packet exchanges
  4821.     The first fragment should start with a SPX header.  Fill in all
  4822.       destination addresses.
  4823. SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h
  4824.  
  4825. Format of SPX header:
  4826. Offset    Size    Description
  4827.  00h    WORD    checksum (high byte first [big-endian])
  4828.  02h    WORD    length in bytes of total packet (high byte first)
  4829.  04h    BYTE    transport control
  4830.  05h    BYTE    packet type
  4831.  06h 10 BYTEs    destination internet address
  4832.  10h    WORD    destination socket (high byte first)
  4833.  12h 10 BYTEs    source internet address
  4834.  1Ch    WORD    source socket (high byte first)
  4835.  1Eh    BYTE    connection control
  4836.  1Fh    BYTE    datastreamtype
  4837.  20h    WORD    source connection ID
  4838.  22h    WORD    destination connection ID
  4839.  24h    WORD    sequence number
  4840.  26h    WORD    acknowledge number
  4841.  28h    WORD    allocation number
  4842. ----------7A----BX0012-----------------------
  4843. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR SPX CONNECTION
  4844.     BX = 0012h
  4845.     AL = retry count
  4846.     AH = watchdog flag
  4847.     ES:SI -> Event Control Block (see BX=0003h)
  4848. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  4849.       that NetWare can perform its internal packet exchanges
  4850. SeeAlso: BX=0011h,BX=0013h,BX=0014h
  4851. ----------7A----BX0013-----------------------
  4852. INT 7A - Novell NetWare Low-Level API (IPX) Driver - TERMINATE SPX CONNECTION
  4853.     BX = 0013h
  4854.     DX = connection ID to terminate
  4855.     ES:SI -> Event Control Block (see BX=0003h)
  4856. SeeAlso: BX=0011h,BX=0012h,BX=0014h
  4857. ----------7A----BX0014-----------------------
  4858. INT 7A - Novell NetWare Low-Level API (IPX) Driver - ABORT SPX CONNECTION
  4859.     BX = 0014h
  4860.     DX = connection ID to terminate
  4861. Note:    this function does not tell the other side that the connection has been
  4862.       terminated
  4863. SeeAlso: BX=0011h,BX=0013h
  4864. ----------7A----BX0015-----------------------
  4865. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET SPX STATUS
  4866.     BX = 0015h
  4867.     DX = connection ID
  4868.     ES:SI -> status buffer (see below)
  4869. Return: AL = return code
  4870.         00h connection still valid
  4871.         ES:SI -> status buffer filled
  4872. SeeAlso: BX=0010h
  4873.  
  4874. Format of status buffer:
  4875. Offset    Size    Description
  4876.  00h    BYTE    status
  4877.  01h    BYTE    flag
  4878.  02h    WORD    source connection (high byte first [big-endian])
  4879.  04h    WORD    destination connection (high byte first)
  4880.  06h    WORD    sequence number (high byte first)
  4881.  08h    WORD    acknowledge number (high byte first)
  4882.  0Ah    WORD    allocation number (high byte first)
  4883.  0Ch    WORD    remote acknowledge number (high byte first)
  4884.  0Eh    WORD    remote allocation number (high byte first)
  4885.  10h    WORD    connection socket (high byte first)
  4886.  12h  6 BYTEs    immediate node address
  4887.  18h 10 BYTEs    destination internet address
  4888.  22h    WORD    retransmit count (high byte first)
  4889.  24h    WORD    estimated roundtrip delay
  4890.  26h    WORD    retransmitted packets
  4891.  28h    WORD    suppressed packets
  4892. ----------7A----BX0016-----------------------
  4893. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SEND SPX PACKET
  4894.     BX = 0016h
  4895.     DX = connection ID
  4896.     ES:SI -> Event Control Block (see BX=0003h)
  4897. Note:    CX may need to be 0001h ???
  4898. SeeAlso: BX=0011h,BX=0017h
  4899. ----------7A----BX0017-----------------------
  4900. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR SPX PACKET
  4901.     BX = 0017h
  4902.     DX = connection ID
  4903.     ES:SI -> Event Control Block (see BX=0003h)
  4904. Note:    CX may need to be 0001h ???
  4905. SeeAlso: BX=0011h,BX=0016h
  4906. ----------7A----BX0018-----------------------
  4907. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4908.     BX = 0018h
  4909.     ???
  4910. Return: ???
  4911. ----------7A----BX0019-----------------------
  4912. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4913.     BX = 0019h
  4914.     ???
  4915. Return: ???
  4916. ----------7A----BX001A-----------------------
  4917. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4918.     BX = 001Ah
  4919.     ???
  4920. Return: ???
  4921. ----------7A----BX001B-----------------------
  4922. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4923.     BX = 001Bh
  4924.     ???
  4925. Return: ???
  4926. ----------7A04-------------------------------
  4927. INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
  4928.     AH = 04h
  4929.     ???
  4930. Return: ???
  4931. SeeAlso: AH=06h
  4932. ----------7A06-------------------------------
  4933. INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
  4934.     AH = 06h
  4935.     ???
  4936. Return: ???
  4937. SeeAlso: AH=04h
  4938. ----------7A09--BX8020-----------------------
  4939. INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
  4940.     AH = 09h
  4941.     BX = 8020h (synchronous request)
  4942.     CX = 0000h
  4943.     DX = ID of session manager (SESSMGR)
  4944.     AL = service
  4945.         01h get session ID
  4946.         02h get session info
  4947.         04h dettach from session
  4948.         05h attach to session
  4949.         06h get list of windows available
  4950.         07h get environment of window
  4951.         08h get 'PIF' (program information file) info
  4952.         0Ah get base window ID
  4953.         0Bh get cursor info
  4954.     ES:DI -> control block
  4955. Return: ???
  4956. ----------7A09--BX8020-----------------------
  4957. INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
  4958.     AH = 09h
  4959.     BX = 8020h (synchronous request)
  4960.     CX = 0000h
  4961.     DX = ID of keyboard manager
  4962.     AL = service
  4963.         01h connect to keyboard
  4964.         02h disconnect from keyboard
  4965.         03h read from keyboard
  4966.         04h send keystroke to session
  4967.         05h disable input
  4968.         06h enable input
  4969.         07h update status code
  4970.     ES:DI -> control block
  4971. Return: ???
  4972. ----------7A09--BX8020-----------------------
  4973. INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
  4974.     AH = 09h
  4975.     BX = 8020h (synchronous request)
  4976.     CX = 00FFh
  4977.     DX = ID of window service controller (WSCTRL)
  4978.     AL = service
  4979.         01h connect to WS control
  4980.         02h disconnect from WS control
  4981.         03h add a window
  4982.         04h change window's position on screen
  4983.         05h change window's size
  4984.         06h change window's color
  4985.         07h change window's position in the presentation space
  4986.         08h hide/unhide toggle
  4987.         09h enlarge/reduce toggle
  4988.         0Ah change screen background color
  4989.         0Bh get window's position on screen
  4990.         0Ch get window's size
  4991.         0Dh get window's color
  4992.         0Eh get window's position in the presentation space
  4993.         0Fh determine whether hidden
  4994.         10h determine whether enlarged
  4995.         11h get background color
  4996.         12h get window names
  4997.         13h delete all windows from profile
  4998.         14h pick active window
  4999.         15h redraw screen
  5000.         16h redraw window
  5001.         17h delete a window from profile
  5002.         18h get active window
  5003.         19h get active screen
  5004.         1Ah get window data
  5005.         1Bh change window data
  5006.         1Ch select active screen
  5007.     ES:DI -> control block
  5008. Return: ???
  5009. ----------7A09--BX8020-----------------------
  5010. INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
  5011.     AH = 09h
  5012.     BX = 8020h
  5013.     CX = 00FFh
  5014.     DX = ID of PCPSM
  5015.     AL = service
  5016.         01h define presentation space
  5017.         02h delete presentation space
  5018.         03h display presentation space
  5019.         04h position cursor in presentation space
  5020.         05h change default presentation space
  5021.     ES:DI -> control block
  5022. Return: ???
  5023. ----------7A09--BX8020-----------------------
  5024. INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
  5025.     AH = 09h
  5026.     BX = 8020h
  5027.     CX = 00FFh
  5028.     DX = ID of 3270EML
  5029.     AL = service
  5030.         01h connect
  5031.         02h disconnect
  5032.     ES:DI -> control block
  5033. Return: ???
  5034. ----------7A09--BX8020-----------------------
  5035. INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
  5036.     AH = 09h
  5037.     BX = 8020h
  5038.     CX = 00FFh
  5039.     DX = ID of OIAM
  5040.     AL = service
  5041.         01h read Operator Information Area
  5042.         02h read OIA subset
  5043.     ES:DI -> control block
  5044. Return: ???
  5045. Note: the OIA is the 25th line on the Host session
  5046. ----------7A09--BX8020-----------------------
  5047. INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
  5048.     AH = 09h
  5049.     BX = 8020h
  5050.     CX = 00FFh
  5051.     DX = ID of XLATE
  5052.     AL = service
  5053.         01h translate from host characters to ASCII and vice versa
  5054.         (determined by control block byte 11)
  5055.     ES:DI -> control block
  5056. Return: ???
  5057. ----------7A09--BX8020-----------------------
  5058. INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
  5059.     AH = 09h
  5060.     BX = 8020h
  5061.     CX = 00FFh
  5062.     DX = ID of copy service
  5063.     AL = service
  5064.         01h copy string from one presentation space to another
  5065.         02h copy block from one presentation space to another
  5066.         03h connect to PC session for copy
  5067.         04h disconnect PC session from copy
  5068.     ES:DI -> control block
  5069. Return: ???
  5070. ----------7A09--BX8020-----------------------
  5071. INT 7A - IBM 3270 Workstation Program API - Multi-DOS
  5072.     AH = 09h
  5073.     BX = 8020h
  5074.     CX = 00FFh
  5075.     ES:DI -> control block
  5076.     DX = ID of INDJQRY  
  5077.         get environment size
  5078.        = ID of INDJASY
  5079.         request DOS functions from workstation
  5080.        = ID of MEMORY
  5081.         AL = function
  5082.             01h allocate memory
  5083.             02h deallocate memory
  5084.             03h modify allocated size
  5085. Return: ???
  5086. ----------7A09-------------------------------
  5087. INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
  5088.     AH = 09h
  5089.     BX = request type (4000h async, 8028h synchronous)
  5090.     CX = 0000h
  5091.     DX = ID of MFIC
  5092.     AL = service
  5093.        01h connect to host
  5094.        02h disconnect from host
  5095.        03h read DFT structured data from host
  5096.        04h write DFT structured data to host
  5097.        05h create a host buffer
  5098.     ES:DI -> control block
  5099. ----------7A13-------------------------------
  5100. INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
  5101.     AH = 13h
  5102.     ???
  5103. Return: ???
  5104. ----------7A81-------------------------------
  5105. INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
  5106.     AH = 81h
  5107.     ES:DI -> 8-char blank-padded gate name
  5108.         "SESSMGR ", "KEYBOARD", "WSCTRL     ", "MFIC    ", "PCPSM     ",
  5109.         "3270EML ", "COPY    ", "XLATE     ", "OIAM    ", "MEMORY     ",
  5110.         "INDJQRY ", or "INDJASY "
  5111. Return: DX = gate ID
  5112. ----------7A83-------------------------------
  5113. INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
  5114.     AH = 83h
  5115.     ???
  5116. Return: ???
  5117. ----------7AFDCB-----------------------------
  5118. INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
  5119.     AX = FDCBh
  5120. Return: DX:AX -> PCS/3270 signature block if loaded (see below)
  5121.  
  5122. Format of signature block:
  5123. Offset    Size    Description
  5124.  04h    WORD    PCS/3270 signature (5741h)
  5125.  06h    WORD    version (0501h = PCS/3270 v1.0)
  5126. ----------7AFE01-----------------------------
  5127. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  5128.     AX = FE01h
  5129.     ???
  5130. Return: ???
  5131. SeeAlso: AX=FE02h
  5132. ----------7AFE02-----------------------------
  5133. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  5134.     AX = FE02h
  5135.     ???
  5136. Return: ???
  5137. SeeAlso: AX=FE01h
  5138. ----------7AFF01-----------------------------
  5139. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  5140.     AX = FF01h
  5141.     ES:DI -> API function handler routine
  5142. Return: CX = 1200h
  5143. SeeAlso: AX=FF02h,AX=FF03h
  5144. ----------7AFF02-----------------------------
  5145. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
  5146.     AX = FF02h
  5147. Return: CX = 1200h
  5148. SeeAlso: AX=FF01h
  5149. ----------7AFF03-----------------------------
  5150. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  5151.     AX = FF03h
  5152.     ES:DI -> send/receive function handler routine
  5153. Return: CX = 1200h
  5154. SeeAlso: AX=FF01h
  5155. ----------7AFF04-----------------------------
  5156. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL ???
  5157.     AX = FF04h
  5158.     ES:DI -> ???
  5159. Return: CX = 1200h
  5160. ----------7B---------------------------------
  5161. INT 7B - Btrieve API
  5162.     DS:DX -> 38-byte parameter record (see below)
  5163. Return: return code field set
  5164. Note:    Btrieve sets low byte of vector to 33h; this serves as the installation
  5165.       check
  5166.  
  5167. Format of Btrieve parameter record:
  5168. Offset    Size    Description
  5169.  00h    DWORD    pointer to data buffer
  5170.  04h    WORD    data buffer length
  5171.  06h    DWORD    pointer to 90-byte record containing positioning info
  5172.         (should be same for all calls for same file)
  5173.  0Ah    DWORD    pointer to 38-byte FCB info buffer
  5174.         (should be same for all calls for same file)
  5175.  0Eh    WORD    function code (see below)
  5176.  10h    DWORD    pointer to file name/key buffer
  5177.  14h    BYTE    key length
  5178.  15h    BYTE    key number
  5179.  16h    DWORD    pointer to status code (see below)
  5180.  1Ah    WORD    interface code (version specific)
  5181.  
  5182. Values for function code:
  5183.  00h open
  5184.  01h close
  5185.  02h insert
  5186.  03h update
  5187.  04h delete
  5188.  05h get_equal
  5189.  06h get_next
  5190.  07h get_prev
  5191.  08h get_greater
  5192.  09h get_gr_eql
  5193.  0Ah get_less
  5194.  0Bh get_less_eq
  5195.  0Ch get_first
  5196.  0Dh get_last
  5197.  0Eh create
  5198.  0Fh stat
  5199.  10h extend
  5200.  11h set_dir: set directory information
  5201.  12h get_dir: get directory information
  5202.  13h begin_trans
  5203.  14h end_trans
  5204.  15h abort_trans
  5205.  16h get_pos: get record position number
  5206.  17h get_direct: get data by sending record position
  5207.  18h step_direct
  5208.  19h stop
  5209.  1Ah version
  5210.  1Bh unlock
  5211.  1Ch reset
  5212.  1Dh set owner
  5213.  1Eh clear owner
  5214.  1Fh create supplemental index
  5215.  20h drop supplemental index
  5216.  21h step first
  5217.  22h step last
  5218.  23h step next
  5219.  31h ???
  5220.  37h ???
  5221.  38h ???
  5222.  39h ???
  5223.  3Ah ???
  5224.  3Bh ???
  5225.  3Ch ???
  5226.  3Dh ???
  5227.  3Eh ???
  5228.  3Fh ???
  5229.  add 100 (64h) for a single-record wait lock (automatically released on next
  5230.         get)
  5231.  add 200 (C8h) for a single-record nowait lock (nowait lock returns error 54h
  5232.         or 55h if record already locked)
  5233.  add 300 (12Ch) for a multiple-record wait lock (not released until unlock
  5234.         called)
  5235.  add 400 (190h) for a multiple-record nowait lock (nowait lock returns error
  5236.         54h or 55h if record already locked)
  5237.  
  5238. Values for status code:
  5239.  00h successful
  5240.  01h invalid operation
  5241.  02h I/O error
  5242.  03h file not open
  5243.  04h key value not found
  5244.  05h duplicate key value
  5245.  06h invalid key number
  5246.  07h different key number
  5247.  08h invalid positioning
  5248.  09h end of file
  5249.  0Ah modifiable key value error
  5250.  0Bh invalid file name
  5251.  0Ch file not found
  5252.  0Dh extended file error
  5253.  0Eh pre-image open error
  5254.  0Fh pre-image I/O error
  5255.  10h expansion error
  5256.  11h close error
  5257.  12h disk full
  5258.  13h unrecoverable error
  5259.  14h record manager inactive
  5260.  15h key buffer too short
  5261.  16h data buffer length overrun
  5262.  17h position block length
  5263.  18h page size error
  5264.  19h create I/O error
  5265.  1Ah number of keys
  5266.  1Bh invalid key position
  5267.  1Ch invalid record length
  5268.  1Dh invalid key length
  5269.  1Eh not a Btrieve file
  5270.  1Fh file already extended
  5271.  20h extended I/O error
  5272.  22h invalid extension name
  5273.  23h directory error
  5274.  24h transaction error
  5275.  25h transaction is active
  5276.  26h transaction control file I/O error
  5277.  27h end/abort transaction error
  5278.  28h transaction max files
  5279.  29h operation not allowed
  5280.  2Ah incomplete accelerated access
  5281.  2Bh invalid record address
  5282.  2Ch null key path
  5283.  2Dh inconsistent key flags
  5284.  2Eh access to file denied
  5285.  2Fh maximum open files
  5286.  30h invalid alternate sequence definition
  5287.  31h key type error
  5288.  32h owner already set
  5289.  33h invalid owner
  5290.  34h error writing cache
  5291.  35h invalid interface
  5292.  36h variable page error
  5293.  37h autoincrement error
  5294.  38h incomplete index
  5295.  39h expanded memory error
  5296.  3Ah compression buffer too short
  5297.  3Bh file already exists
  5298.  50h conflict
  5299.  51h lock error
  5300.  52h lost position
  5301.  53h read outside transaction
  5302.  54h record in use
  5303.  55h file in use
  5304.  56h file table full
  5305.  57h handle table full
  5306.  58h incompatible open mode
  5307.  5Dh incompatible lock type
  5308.  5Eh permission error
  5309. ----------7B---------------------------------
  5310. INT 7B - Eicon Access API (3270/5250 gateways)
  5311. ----------7C---------------------------------
  5312. INT 7C - IBM REXX88PC command language
  5313.     ???
  5314. ----------7D---------------------------------
  5315. INT 7D - [proposed] - ALTERNATE MULTIPLEX INTERRUPT
  5316.     AH = multiplex number
  5317.     AL = function
  5318.         00h usage check
  5319.             Return: AL = FFh if multiplex number in use
  5320.         01h installation check
  5321.             BX,CX,DX = 6-byte program identifier
  5322.         Return: AL = FFh if specified program installed
  5323.             ES:BX -> entry point (for bypassing interrupt chain),
  5324.                 0000h:0000h if all API calls via INT 7D
  5325.             CX = version number (CH = major, CL = minor)
  5326.         other  application-dependent
  5327. Notes:    programs should not use fixed multiplex numbers; rather, a program
  5328.       should scan all multiplex numbers from 00h to FFh, remembering the
  5329.       first unused multiplex in case the program is not yet installed.
  5330.       If not previously installed, it should use that first free multiplex
  5331.       number.
  5332.     before invoking INT 7D, a program must make sure it is valid.  INT 7D
  5333.       is valid if either (1) it points at an IRET instruction or (2) the
  5334.       INT 7D handler is preceded by the ASCII signature "INT7D".  If
  5335.       neither case holds, the vector may be uninitialized and pointing
  5336.       at a random location; it should thus not be called, but may be
  5337.       hooked by the program (without chaining), using multiplex number 00h
  5338.     Please let me know the program identifier you use if you choose to
  5339.       follow this proposal.
  5340. SeeAlso: INT 2F
  5341. ----------7E---------------------------------
  5342. INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
  5343. ----------7F---------------------------------
  5344. INT 7F - IBM XGA - ???
  5345. ----------7F---------------------------------
  5346. INT 7F - Halo88 - API
  5347.     BX = function
  5348.         64h arc
  5349.         65h bar
  5350.         66h box
  5351.         67h circle
  5352.         68h clr
  5353.         69h default hatch style
  5354.         6Ah default line style
  5355.         6Bh delhcur
  5356.         6Ch delln / deltcur
  5357.         6Dh ellipse
  5358.         6Eh fill
  5359.         6Fh flood
  5360.         70h flood2
  5361.         71h init graphics
  5362.         72h init hcur
  5363.         73h init marker
  5364.         74h init tcur
  5365.         75h inqarc
  5366.         76h inqbknd
  5367.         77h inqclr
  5368.         78h inqerr
  5369.         79h inqgcur
  5370.         7Ah inqhcur
  5371.         7Bh inqmarker
  5372.         7Dh inqtcur
  5373.         7Eh inqtext
  5374.         7Fh lnabs
  5375.         80h lnrel
  5376.         81h markerabs
  5377.         82h markerrel
  5378.         83h moveabs
  5379.         84h movehcurabs
  5380.         85h movehcurrel
  5381.         86h moverel
  5382.         87h movetcurabs
  5383.         88h movetcurrel
  5384.         89h movefrom
  5385.         8Ah moveto
  5386.         8Bh pie
  5387.         8Ch polylnabs
  5388.         8Dh polylnrel
  5389.         8Eh ptabs
  5390.         8Fh ptrel
  5391.         91h setasp
  5392.         92h set color
  5393.         93h set font
  5394.         94h set hatch style
  5395.         95h set line style
  5396.         97h settext
  5397.         98h set text color
  5398.         99h btext
  5399.         9Ah setseg
  5400.         9Bh display
  5401.         9Ch setscreen
  5402.         9Eh close graphics
  5403.         9Fh ftinit
  5404.         A0h ftlocate
  5405.         A1h ftext
  5406.         A5h set viewport
  5407.         A6h set window
  5408.         A7h set world
  5409.         AAh ftcolor
  5410.         ACh initlp
  5411.         ADh inqasp
  5412.         AEh inqdev
  5413.         AFh inqdisplay
  5414.         B0h inqft
  5415.         B1h inqftcolor
  5416.         B2h inqinterlace
  5417.         B3h inqlpa
  5418.         B4h inqlpg
  5419.         B5h inqmode
  5420.         B6h inqscreen
  5421.         B7h inqversion
  5422.         B8h roam
  5423.         B9h scroll
  5424.         BAh setieee
  5425.         BBh set interlace
  5426.         BCh shift
  5427.         BDh start graphics
  5428.         BEh vpan
  5429.         CBh gwrite
  5430.         CCh gread
  5431.         CDh setxor
  5432.         CEh rbox
  5433.         CFh rcir
  5434.         D0h rlnabs
  5435.         D1h rlnrel
  5436.         D2h delbox
  5437.         D3h delcir
  5438.         D5h setseg2
  5439.         DCh worldoff
  5440.         DDh mapwtod
  5441.         DEh mapdtow
  5442.         DFh mapwton
  5443.         E0h mapntow
  5444.         E1h mapdton
  5445.         E2h mapntod
  5446.         E3h inqworld
  5447.         E4h inqviewport
  5448.         E5h set line width
  5449.         E6h lnjoint
  5450.         E7h set locator
  5451.         E8h read locator
  5452.         E9h setdev
  5453.         EBh setstext
  5454.         ECh setstclr
  5455.         EDh setstang
  5456.         EEh stext
  5457.         EFh inqstext
  5458.         F0h setdegree
  5459.         F1h inqstsize
  5460.         F2h polyfabs
  5461.         F3h polyfrel
  5462.         F4h inqdrange
  5463.         F5h inqstang
  5464.         F6h orglocator
  5465.         F7h inqlocator
  5466.         F8h inqarea
  5467.         F9h setipal
  5468.         FAh setborder
  5469.         FBh inqcrange
  5470.         FEh setclip
  5471.         FFh fcir
  5472.            100h setcrange
  5473.            101h setdrange
  5474.            102h setlattr
  5475.            103h polycabs
  5476.            104h polycrel
  5477.            108h memcom
  5478.            109h memexp
  5479.            10Ah memmov
  5480.            10Eh movefx
  5481.            10Fh movetx
  5482.            110h inqrgb
  5483.            111h save image
  5484.            112h restore image
  5485.            113h setapal
  5486.            114h setxpal
  5487.            118h inqtsize
  5488.            12Eh gprint
  5489.            130h setprn
  5490.            131h setpattr
  5491.            133h setbattr
  5492.            135h pexpand
  5493.            136h ptnorm
  5494.            137h pfnorm
  5495.            13Bh inqprn
  5496.            13Ch lopen
  5497.            13Dh lclose
  5498.            13Eh lappend
  5499.            13Fh lrecord
  5500.            140h lswitch
  5501.            142h inqfun
  5502.            15Dh lsetup
  5503.            15Eh lrest
  5504.            15Fh lsave
  5505.     additional parameters on stack
  5506. Return: ???
  5507. Notes:    Halo88 is a suite of graphics routines
  5508.     according to Stuart Kemp, the code appears to make no provisions for
  5509.        chaining
  5510. ----------7F---------------------------------
  5511. INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
  5512.     AL = request ID
  5513.         01h "Request"/"RequestDirect"
  5514.         ES:BX -> pRq
  5515.         DX ignored
  5516.         04h "Wait"
  5517.         ES:BX -> ppMsgRet
  5518.         DX = exchange
  5519.         05h "AllocExch"
  5520.         ES:BX -> pExchRet
  5521.         06h "DeAllocExch"
  5522.         DX = exchange
  5523.         07h "Check"
  5524.         ES:BX -> ppMsgRet
  5525.         DX = exchange
  5526.     CX = 4354h ('CT')
  5527. Return: AX = status
  5528.         0000h successful
  5529. ----------7F---------------------------------
  5530. INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX)
  5531. Notes:    the words at C800h:0000h and C800h:0002h will both be 584Eh if this
  5532.       multitasking system is present
  5533.     NTNX allows its API to be placed on a different interrupt than 7Fh at
  5534.       load time.  To determine the actual vector used, open the device
  5535.       "SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
  5536.       INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
  5537.       be the actual interrupt number being used; the other interrupts may
  5538.       be found with INT 7F/AH=09h/CL=03h
  5539. ----------7F---------------------------------
  5540. INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK
  5541. Note:    a program may determine that it is running on an ANSK Slave by checking
  5542.       the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
  5543.       address is RAM, and should not be written.  However, the above check
  5544.       will not work on Slaves with <1MB RAM or those using the SLIM.SYS
  5545.       device driver
  5546. ----------7F---------------------------------
  5547. INT 7F - Telebit ACS SERIAL I/O
  5548.         ES:SI-> parameter block
  5549. Return: CF set on error
  5550.         CF clear on success
  5551. Notes:  the signature "PDGATEWRKSTNIF" appears just prior to the interrupt
  5552.           handler; this serves as the installation check
  5553.  
  5554. Format of Telebit ACS parameter block:
  5555. Offset  Size    Description
  5556.  00h    BYTE    command
  5557.                     3Ch status
  5558.                     3Dh connect
  5559.                     3Eh disconnect
  5560.                     3Fh read
  5561.                     40h data/command write
  5562.                     41h clear receive buffer
  5563.                     42h get configuration
  5564.                     43h get receiver status
  5565.                     44h raw write
  5566.                     45h search servers
  5567.                     46h set transmit buffer size
  5568.  01h    BYTE    gateway number
  5569.  02h    BYTE    reserved
  5570.  03h    BYTE    port
  5571.  04h 17 BYTES   auxiliary buffer
  5572.  15h    BYTE    session
  5573.  16h    WORD    count of bytes passed to API
  5574.  18h    DWORD   buffer pointer passed to/from API
  5575.  1Ch    WORD    count of bytes passed from API
  5576.  1Eh    BYTE    return code (see below)
  5577.  
  5578. Values for return code:
  5579.  00h - success
  5580.  01h - invalid session
  5581.  05h - servername invalid
  5582.  06h - netware fileserver bindery is locked
  5583.  07h communication server not active
  5584.  08h general failure in netware fileserver
  5585.  09h not logged into a fileserver
  5586.  10h connection table full
  5587.  11h no response from communication server
  5588.  12h connection attempt terminated abnormally
  5589.  13h connection refused - no sessions available
  5590.  14h gw_no/port already in use
  5591.  15h invalid connection response
  5592.  16h port invalid
  5593.  17h incorrect version in server response
  5594.  18h gw_no/port combination not configured
  5595.  19h initialization has not been completed
  5596.  20h no more sockets are available
  5597.  21h no active poolname
  5598.  23h FATAL internal interface error
  5599.  24h registration of host workstation failed - name is already in used
  5600.  25h registration of host workstation failed - workstation name table full
  5601.  26h registration of host workstation failed - only one session may be
  5602.      registered for dial-in
  5603.  FFh telebit acs api is busy - retry later
  5604. ----------7F00-------------------------------
  5605. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
  5606.     AH = 00h
  5607.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5608. Return: AL = status
  5609.         00h successful
  5610.         01h invalid function
  5611.         02h semaphore already locked
  5612.         03h unable to lock semaphore
  5613.         04h semaphore space exhausted
  5614.         05h host/target PC did not respond (NTNX)
  5615.     AH = semaphore owner if status=02h
  5616. SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
  5617. ----------7F01-------------------------------
  5618. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
  5619.     AH = 01h
  5620.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5621. Return: AL = status (see AH=00h)
  5622.     AH = semaphore owner if status=02h
  5623. SeeAlso: AH=00h,AH=02h,AH=41h
  5624. ----------7F0104BX0000-----------------------
  5625. INT 7F - HLLAPI (IBM 3270 High-Level Language API)
  5626.     AX = 0104h (HLLAPI gate ID)
  5627.     BX = 0000h
  5628.     DS:SI -> parameter control block (see below)
  5629. Return: parameter control block updated
  5630.  
  5631. Format of parameter control block:
  5632. Offset    Size    Description
  5633.  00h  3 BYTEs    signature = 'PCB'
  5634.  03h    BYTE    function number (see below)
  5635.  04h    WORD    segment of control string
  5636.  06h    WORD    offset of control string
  5637.  08h    WORD    length of control string, unless explicit end-of-str char set
  5638.  0Ah    BYTE    unused
  5639.  0Bh    WORD    return code
  5640.  0Dh    WORD    maximum length of control string
  5641.  
  5642. Values for function number:
  5643.  00h    Query system (Attachmate implementation only)
  5644.  01h    Connect presentation space
  5645.  02h    Disconnect presentation space
  5646.  03h    Send string of keystrokes as if typed from keyboard
  5647.  04h    Wait ~60s, returns status of presentation space
  5648.  05h    Copy current presentation space into a user-defined buffer
  5649.  06h    Search presentation space for first occurrence of a specified string
  5650.  07h    Query cursor location in current presentation space
  5651.  08h    Copy part or all of current presentation space into user buffer
  5652.  09h    Set session parameters; parameters vary by vendor
  5653.  0Ah    Get info on sessions currently connected
  5654.  0Bh    Lock current presentation space
  5655.  0Ch    Unlock previously locked presentation space
  5656.  0Dh    Return copy of operator info area (OIA) of current presentation space
  5657.  0Eh    get attribute byte for given position in the current presentation space
  5658.  0Fh    copy string of characters to the current presentation space
  5659.  10h    workstation control functions
  5660.  11h    storage manager functions, intended primarily for BASIC applications
  5661.  12h    set delay period in half-second intervals
  5662.  14h    get info on level of workstation support used
  5663.  15h    reset session parameters to default values
  5664.  16h    get detailed info on the current session
  5665.  17h    start host notification to application on presentation sp or OIA update
  5666.  18h    check host update when host notification enabled
  5667.  19h    stop host notification
  5668.  1Eh    search field within current presentation space for string
  5669.  1Fh    get first positionof a selected field in the current presentation space
  5670.  20h    get length of specified field
  5671.  21h    copy string into a specified field
  5672.  22h    copy specified field into a user-defined buffer
  5673.  23h    create alternate presentation space (IBM only), don't use with BASIC
  5674.  24h    switch to alternate presentation space (IBM only), not with BASIC
  5675.  25h    display cursor in specified area (IBM only), don't use with BASIC
  5676.  26h    display alternate presentation space (IBM only), don't use with BASIC
  5677.  27h    delete alternate presentation space (IBM only), don't use with BASIC
  5678.  32h    start intercepting keystrokes to allow filtering
  5679.  33h    get keystrokes after turning on interception
  5680.  34h    notify operator when keystroke rejected by filter subroutine
  5681.  35h    stop intercepting keystrokes
  5682.  5Ah    send file
  5683.  5Bh    receive file
  5684.  5Ch    run a program
  5685.  5Dh    execute DOS command
  5686.  63h    change presentation space position to PC display row/col or vice versa
  5687.  FFh    Get info on DCA implementation
  5688.  
  5689. Session Parameters for function 09h:
  5690.  ATTRIB        return attributes in hex
  5691.  NOATTRIB    return attributes as blanks
  5692.  CONPHYS    make physical connection
  5693.  CONLOG        only make logical connection
  5694.  EAB        copy extended attribute bytes along with data 
  5695.  NOEAB        copy data only
  5696.  ESC=n        set escape character to "n" (default '@')
  5697.  EOT=n        set end of string character (default 00h)
  5698.  FPAUSE        full-duration pause
  5699.  IPAUSE        interruptible pause
  5700.  STRLEN        use explicit string lengths
  5701.  STREOT        use terminated strings
  5702.  SRCHALL    search entire presentation space
  5703.  SRCHFROM    search from specified offset
  5704.  SRCHFRWD    search forward from position 1
  5705.  SRCHBKWD    search backward from last position in presentation space
  5706.  TWAIT        wait specified time for keyboard ready
  5707.  LWAIT        wait until keyboard ready
  5708.  NWAIT        no wait
  5709.  TRON        enable tracing
  5710.  TROFF        disable tracing
  5711.  AUTORESET    send reset before sending keys with function 03h
  5712.  NORESET    don't send reset
  5713.  QUIET        don't display messages sent with INT 21/AH=09h
  5714.  NOQUIET    allow messages to be displayed
  5715.  TIMEOUT=n    set timeout in 30-second intervals, 0 = wait until ^Break
  5716.  XLATE        translate extended attribute bytes
  5717.  NOXLATE    don't translate
  5718.  NEWRET        use HLLAPI v3.0 return code conventions
  5719.  OLDRET        use HLLAPI v2.0 return code conventions
  5720. ----------7F0105-----------------------------
  5721. INT 7F - HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
  5722.     AX = 0105h get 8514/A entry points
  5723. Return: CF set on error
  5724.     CF clear if successful
  5725.         CX:DX -> array of FAR pointers to entry points
  5726. Note:    most functions are invoked by pushing the DWORD parameter block pointer
  5727.       and then performing a FAR call via the appropriate vector of the
  5728.       entry point array
  5729.  
  5730. Function numbers: (do FAR call via entry_points+4*function)
  5731.  08h    HOPEN
  5732.  10h    HINT
  5733.  13h    HLDPAL
  5734.  15h    HBBW
  5735.  17h    HBBR
  5736.  18h    HBBCHN
  5737.  1Dh    HQMODE
  5738.  22h    HCLOSE
  5739.  30h    HINIT
  5740.  31h    HSYNC
  5741.  39h    HSPAL
  5742.  3Ah    HRPAL 
  5743. ----------7F02-------------------------------
  5744. INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
  5745.     AH = 02h
  5746.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5747. Return: AL = status
  5748.         00h successful
  5749.         01h invalid function
  5750.         02h semaphore locked by other user
  5751.         AH = semaphore owner
  5752.         03h unable to unlock semaphore
  5753.         05h target PC did not respond
  5754. SeeAlso: AH=00h,AH=01h,AH=42h
  5755. ----------7F03-------------------------------
  5756. INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER
  5757.     AH = 03h
  5758. Return: AL = user number
  5759.     AH = machine number (MW386)
  5760. Note:    this function call is the recommended method for a CPU-bound process to
  5761.       prevent its priority from being lowered
  5762. SeeAlso: AH=04h,AH=05h,AH=A1h
  5763. ----------7F04-------------------------------
  5764. INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS
  5765.     AH = 04h
  5766. Return: AL = total number of users on currrent machine (MW386)
  5767.     AL = number of slaves on system (NTNX)
  5768. SeeAlso: AH=03h
  5769. ----------7F05-------------------------------
  5770. INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL
  5771.     AH = 05h
  5772.     AL = function
  5773.         00h lock system (disable slave services)
  5774.         01h unlock system
  5775.         02h enable spooler
  5776.         03h disable spooler
  5777.         04h enable slave timer update
  5778.         05h disable slave timer update
  5779.         06h enable form feeds
  5780.         07h disable form feeds
  5781. SeeAlso: INT 17/AH=A4h
  5782. ----------7F05-------------------------------
  5783. INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
  5784.     AH = 05h
  5785.     DX:DI -> buffer for user information record (see below)
  5786. Notes:    MW386 provides this function for backward compatibility only, and sets
  5787.       many of the fields to zero because they are meaningless under MW386
  5788.     this function has no effect when called by the host (user 0)
  5789. SeeAlso: AH=03h
  5790.  
  5791. Format of user information record:
  5792. Offset    Size    Description
  5793.  00h    WORD    segment of video RAM
  5794.  02h    WORD    segment of secondary copy of video RAM
  5795.  04h    WORD    offset of screen update flag (see INT 10/AH=8Bh)
  5796.         flag nonzero if update needed
  5797.  06h    WORD    video NMI enable port
  5798.         (not used by MW386, set to 0000h)
  5799.  08h    WORD    video NMI disable port
  5800.         (not used by MW386, set to 0000h)
  5801.  0Ah    BYTE    processor type
  5802.         00h 8088
  5803.         01h V20
  5804.         02h 8086
  5805.         03h V30
  5806.         06h 80386
  5807.  0Bh    WORD    multitasking flag (00h = single tasking, 01h = multitasking)
  5808.         (not used by MW386, set to 0000h)
  5809.  0Dh    WORD    offset of terminal driver
  5810.         (not used by MW386, set to 0000h)
  5811.  0Fh    BYTE    port for console I/O
  5812.         (not used by MW386, set to 0000h)
  5813.  10h    WORD    offset of processor communication busy flag
  5814.         bit 7 set when slave communicating with host
  5815.  12h    WORD    pointer to FAR NX system call
  5816.         (not used by MW386, set to 0000h)
  5817.  14h    WORD    offset of 16-byte user configuration record (see AH=38h)
  5818.  16h    WORD    offset of command/status word
  5819.  18h    WORD    offset of screen valid flag (see INT 10/AH=93h)
  5820.         nonzero if screen must be repainted
  5821.  1Ah    WORD    offset of screen repaint flag
  5822.  1Ch    WORD    pointer to NEAR NX system call
  5823.         (not used by MW386, set to 0000h)
  5824.  1Eh    WORD    offset for intercept flags
  5825.         (not used by MW386, set to 0000h)
  5826.         intercept flag = FFh if MSDOS intercepts should be disabled
  5827.  20h    WORD    offset of terminal lock flag (see INT 10/AH=92h)
  5828.         lock flag = FFh if backgrnd screen updates should be suspended
  5829.  22h 26 BYTEs    reserved
  5830. ----------7F06-------------------------------
  5831. INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO
  5832.     AH = 06h
  5833.     AL = drive number (1=A:, 2=B:, etc)
  5834.     ES:DI -> drive info record (see below)
  5835. Return: AX = status
  5836.         0000h successful
  5837.         ES:DI buffer filled
  5838.         0001h not shared drive
  5839.  
  5840. Format of drive info record:
  5841. Offset    Size    Description
  5842.  00h    WORD    segment of drive IO-REQUEST structure (MSDOS DPB)
  5843.  02h    WORD    segment of allocation map (owner table)
  5844.         one byte per FAT entry, containing user ID owning that entry
  5845.  04h    WORD    segment of master FAT for drive (copy of FAT on disk)
  5846.  06h    WORD    pointer to configuration file
  5847.  08h    WORD    total number of clusters
  5848.  0Ah    WORD    bytes per sector
  5849.  0Ch    WORD    sectors per cluster
  5850.  0Eh    BYTE    FAT type (0Ch = 12-bit, 10h = 16-bit)
  5851. ----------7F06-------------------------------
  5852. INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE
  5853.     AH = 06h
  5854.     DL = drive number (1=A:,2=B:,etc)
  5855.     CX = number of clusters to allocate
  5856. Return: AH = status
  5857.         00h successful
  5858.         CX = number of clusters still free
  5859.         10h invalid shared drive request
  5860.         CL = first and second shared drives
  5861.         11h invalid cluster count (must be 01h-FFh)
  5862. ----------7F07-------------------------------
  5863. INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
  5864.     AH = 07h
  5865. Return: ES:DI -> shared drive list (see below)
  5866. Note:    MW386 considers all fixed disks to be shared drives; only C and D will
  5867.       be returned as shared
  5868.  
  5869. Format of shared drive list:
  5870. Offset    Size    Description
  5871.  00h    BYTE    string length
  5872.  01h    BYTE    number of shared drives
  5873.  02h  N BYTEs    one byte per shared drive
  5874. ----------7F08-------------------------------
  5875. INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS
  5876.     AH = 08h
  5877.     CL = function
  5878.         00h get original interrupt vector
  5879.         01h get Network Executive interrrupt
  5880.     AL = interrupt number
  5881.     DX:SI -> DWORD to hold interrupt vector
  5882. Return: AL = status
  5883.         00h successful
  5884.         01h interrupt vector not used by network executive
  5885.         02h invalid subfunction
  5886. Note:    the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,
  5887.       1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh
  5888. SeeAlso: AH=09h/CL=03h,INT 21/AH=35h
  5889. ----------7F08--CL02-------------------------
  5890. INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT
  5891.     AH = 08h
  5892.     CL = 02h
  5893.     DX = timeout in seconds
  5894. Return: AL = status
  5895.         00h successful
  5896.         02h invalid subfunction
  5897. ----------7F09-------------------------------
  5898. INT 7F - MultiLink Advanced - SET TASK PRIORITY
  5899.     AH = 09h
  5900.     AL = priority (0-7)
  5901. Note:    the installation check consists of ensuring that the interrupt vector
  5902.       is not pointing at segment 0000h, then checking whether the byte
  5903.       at offset 0000h in the interrupt handler's segment is E9h
  5904. ----------7F09-------------------------------
  5905. INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING
  5906.     AH = 09h
  5907.     CL = function
  5908.         00h enable checking of RTNX.MUD file
  5909.         01h disable RTNX.MUD checking
  5910. ----------7F09--CL02-------------------------
  5911. INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE
  5912.     AH = 09h
  5913.     CL = 02h
  5914. Note:    in dedicated mode, the host will only poll for I/O requests from the
  5915.       slave processors, and not provide workstation services
  5916. ----------7F09--CL03-------------------------
  5917. INT 7F - Alloy NTNX,MW386 - GET ALTERNATE INTERRUPT
  5918.     AH = 09h
  5919.     CL = 03h
  5920.     AL = default interrupt number (67h,7Fh,etc)
  5921. Return:    CL = actual interrupt which handles specified interrupt's calls
  5922. SeeAlso: AH=08h
  5923. ----------7F0A--CL00-------------------------
  5924. INT 7F - Alloy NTNX - GET SYSTEM FLAGS
  5925.     AH = 0Ah
  5926.     CL = 00h
  5927.     ES:DI -> buffer for system flags (see below)
  5928. Return: ES:DI buffer filled
  5929. Notes:    on a slave, only the NX_Busy flag is returned
  5930.     all three flags are at fixed positions, so this function only needs to
  5931.       be called once
  5932.     an interrupt handler should only perform DOS or device accesses when
  5933.       all three flags are 00h
  5934.  
  5935. Format of system flags:
  5936. Offset    Size    Description
  5937.  00h    DWORD    pointer to NX_Busy flag (nonzero when communicating with users)
  5938.  04h    DWORD    pointer to device driver busy flag
  5939.  08h    DWORD    pointer to InTimer flag
  5940. ----------7F0B--CL02-------------------------
  5941. INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE
  5942.     AH = 0Bh
  5943.     CL = 02h
  5944.     AL = slave ID number
  5945.     CH = DOS to activate
  5946.         00h graphics DOS
  5947.         01h character DOS
  5948. Return: AL = status
  5949.         00h successful
  5950.         01h nothing done, proper DOS type already loaded
  5951. ----------7F10--CL00-------------------------
  5952. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL
  5953.     AH = 10h
  5954.     CL = 00h
  5955.     AL = channel number
  5956.     DX:DI -> channel buffer
  5957. Return: AL = status
  5958.         00h successful
  5959.         01h busy
  5960.         02h channel range error (not 00h-3Fh)
  5961.         03h invalid subfunction
  5962.         0Dh unable to open
  5963. Note:    may not be invoked from within a hardware interrupt handler
  5964. SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h
  5965. ----------7F10--CL01-------------------------
  5966. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
  5967.     AH = 10h
  5968.     CL = 01h
  5969.     AL = channel number
  5970. Return: AL = status
  5971.         00h successful
  5972.         01h busy
  5973.         02h channel range error (not 00h-3Fh)
  5974.         03h invalid subfunction
  5975.         0Ah channel not open
  5976. Note:    may not be invoked from within a hardware interrupt handler
  5977. SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
  5978. ----------7F10--CL02-------------------------
  5979. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
  5980.     AH = 10h
  5981.     CL = 02h
  5982.     AL = channel number
  5983. Return: AL = status
  5984.         00h successful
  5985.         01h busy
  5986.         02h channel range error (not 00h-3Fh)
  5987.         03h invalid subfunction
  5988.         0Ah channel not open
  5989.         0Ch channel already locked
  5990. Note:    may not be invoked from within a hardware interrupt handler
  5991. SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
  5992. ----------7F10--CL03-------------------------
  5993. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
  5994.     AH = 10h
  5995.     CL = 03h
  5996.     AL = channel number
  5997. Return: AL = status (see AH=10h/CL=02h)
  5998. Notes:    should only be used on channels locked with AH=10h/CL=02h, not on those
  5999.       locked by receipt of a datagram
  6000.     may not be invoked from within a hardware interrupt handler
  6001. SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h
  6002. ----------7F10--CL04-------------------------
  6003. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
  6004.     AH = 10h
  6005.     CL = 04h
  6006.     AL = channel number
  6007. Return: AL = status
  6008.         00h successful
  6009.         01h busy
  6010.         02h channel range error (not 00h-3Fh)
  6011.         03h invalid subfunction
  6012. Notes:    unlocks buffer after received datagram has been processed
  6013.     may not be invoked from within a hardware interrupt handler
  6014. SeeAlso: AH=10h/CL=00h
  6015. ----------7F10--CL05-------------------------
  6016. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
  6017.     AH = 10h
  6018.     CL = 05h
  6019. Return: AL = status
  6020.         00h successful
  6021.         01h busy
  6022.         02h channel range error (not 00h-3Fh)
  6023.         03h invalid subfunction
  6024. Notes:    clears all pending datagrams and clears buffer pointers before closing
  6025.       the channels
  6026.     may not be invoked from within a hardware interrupt handler
  6027. SeeAlso: AH=10h/CL=01h
  6028. ----------7F10--CL06-------------------------
  6029. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
  6030.     AH = 10h
  6031.     CL = 06h
  6032. Return: AL = status
  6033.         00h successful
  6034.         01h busy
  6035.         02h channel range error (not 00h-3Fh)
  6036.         03h invalid subfunction
  6037. Note:    may not be invoked from within a hardware interrupt handler
  6038. SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
  6039. ----------7F10--CL07-------------------------
  6040. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
  6041.     AH = 10h
  6042.     CL = 07h
  6043. Return: AL = status
  6044.         00h successful
  6045.         01h busy
  6046.         02h channel range error (not 00h-3Fh)
  6047.         03h invalid subfunction
  6048. Notes:    unlocks all locked channels which have no pending datagrams
  6049.     may not be invoked from within a hardware interrupt handler
  6050. SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h
  6051. ----------7F10--CL08-------------------------
  6052. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS
  6053.     AH = 10h
  6054.     CL = 08h
  6055.     DX = maximum channel number to lock
  6056. Return: AL = status
  6057.         00h successful
  6058.         01h busy
  6059.         02h channel range error (not 00h-3Fh)
  6060.         03h invalid subfunction
  6061. Notes:    locks channels numbered 00h through the value in DX
  6062.     may not be invoked from within a hardware interrupt handler
  6063. SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h
  6064. ----------7F10--CL09-------------------------
  6065. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS
  6066.     AH = 10h
  6067.     CL = 09h
  6068.     DX = maximum channel number to unlock
  6069. Return: AL = status
  6070.         00h successful
  6071.         01h busy
  6072.         02h channel range error (not 00h-3Fh)
  6073.         03h invalid subfunction
  6074. Notes:    unlocks channels numbered 00h through the value in DX
  6075.     may not be invoked from within a hardware interrupt handler
  6076. SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h
  6077. ----------7F11-------------------------------
  6078. INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
  6079.     AH = 11h
  6080.     DX:SI -> request block (see below)
  6081. Return: AL = status
  6082.         00h successful
  6083.         01h busy
  6084.         02h channel range error (not 00h-3Fh)
  6085.         03h invalid subfunction
  6086.         0Ah packet too large (or <2 bytes if NTNX)
  6087.         0Bh can't send packet to itself
  6088.         0Ch invalid number of destinations
  6089.         0Dh destination channel number out of range
  6090.         0Eh destination user is busy
  6091.         0Fh destination user has locked channel
  6092.         10h channel not open
  6093.         11h no datagram server on destination (NTNX)
  6094. Note:    if wildcard channel FFh used, actual channel number will be filled in
  6095. SeeAlso: AH=12h
  6096.  
  6097. Format of request block:
  6098. Offset    Size    Description
  6099.  00h    DWORD    pointer to packet to send
  6100.  04h    WORD    packet size in bytes (1-4096)
  6101.  06h    BYTE    number of destinations for packet (max 1Fh)
  6102.  07h 31 BYTEs    destination user IDs (FFh = broadcast to all except sender)
  6103.  26h 31 BYTEs    destination channels (FFh = first available channel)
  6104.  45h 31 BYTEs    return destination statuses
  6105. ----------7F12-------------------------------
  6106. INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM
  6107.     AH = 12h
  6108.     AL = channel number being acknowledged
  6109.     DI:DX = 32-bit status to return to sender
  6110. Return: AL = status
  6111.         00h successful
  6112.         01h busy
  6113.         02h channel range error (not 00h-3Fh)
  6114.         03h invalid subfunction
  6115.         0Ah channel not open
  6116.         0Bh no message in channel
  6117.         0Ch destination slave busy--retry (NTNX)
  6118.         0Dh destination user not active
  6119.         0Eh destination slave not active (NTNX)
  6120.         0Fh destination disabled datagram service
  6121. Note:    also unlocks the channel, allowing the next datagram to be received
  6122. SeeAlso: AH=11h,AH=15h/CL=04h
  6123. ----------7F13--CL00-------------------------
  6124. INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS
  6125.     AH = 13h
  6126.     CL = 00h
  6127. Note:    clears all pending datagrams and removes all channels opened in NTNX
  6128.       compatibility mode
  6129. ----------7F14--CL00-------------------------
  6130. INT 7F - Alloy NTNX, MW386 -  SET RECEIVE ISR
  6131.     AH = 14h
  6132.     CL = 00h
  6133.     DX:DI -> application FAR receive service routine (see below)
  6134. Return: AL = status
  6135.         00h successful
  6136.         01h busy
  6137.         02h channel range error (not 00h-3Fh)
  6138.         03h invalid subfunction
  6139. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  6140.  
  6141. Service routine called with:
  6142.     DH = sender ID
  6143.     DL = channel with datagram
  6144.     interrupts disabled
  6145. Return: AL = response code
  6146.         00h leave buffer locked, set channel status, and repeat call later
  6147.         01h release channel buffer
  6148.         02h change buffer pointer to DX:DI
  6149.     AH,CX,DX,DI,SI may be destroyed
  6150. ----------7F14--CL01-------------------------
  6151. INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
  6152.     AH = 14h
  6153.     CL = 01h
  6154.     DX:DI -> application FAR acknowledge service routine (see below)
  6155. Return: AL = status
  6156.         00h successful
  6157.         01h busy
  6158.         02h channel range error (not 00h-3Fh)
  6159.         03h invalid subfunction
  6160. Note:    the service routine will be called as soon as an acknowledgment arrives
  6161. SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15/CL=04h
  6162.  
  6163. Service routine called with:
  6164.     DS:SI -> acknowledge structure (see AH=15h/CL=04h)
  6165. Return: AL = response code
  6166.         00h application busy, network executive should call again later
  6167.         01h acknowledge accepted
  6168.     AH,DX,SI may be destroyed
  6169. ----------7F14--CL02-------------------------
  6170. INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER
  6171.     AH = 14h
  6172.     CL = 02h
  6173.     AL = channel number
  6174.     DX:DI -> receive buffer
  6175. Return: AL = status
  6176.         00h successful
  6177.         01h busy
  6178.         02h channel range error (not 00h-3Fh)
  6179.         03h invalid subfunction
  6180. Note:    may be called from within a receive ISR or when a datagram is pending
  6181. SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
  6182. ----------7F14--CL03-------------------------
  6183. INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR
  6184.     AH = 14h
  6185.     CL = 03h
  6186. Return: DX:DI -> current receive ISR
  6187. SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h
  6188. ----------7F14--CL04-------------------------
  6189. INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR
  6190.     AH = 14h
  6191.     CL = 04h
  6192. Return: DX:DI -> current acknowledge ISR
  6193. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  6194. ----------7F14--CL05-------------------------
  6195. INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
  6196.     AH = 14h
  6197.     CL = 05h
  6198.     DX:DI -> buffer for busy structure (see below)
  6199. Return: DX:DI buffer filled
  6200.  
  6201. Format of busy structure:
  6202. Offset    Size    Description
  6203.  00h    DWORD    pointer to busy flag byte
  6204.  04h    WORD    fixed port address (FF00h)
  6205. ----------7F15--CL00-------------------------
  6206. INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
  6207.     AH = 15h
  6208.     CL = 00h
  6209.     AL = channel number
  6210.     DX:DI -> status structure (see below)
  6211. Return: AL = status
  6212.         00h successful
  6213.         01h busy
  6214.         02h channel range error (not 00h-3Fh)
  6215.         03h invalid subfunction
  6216. SeeAlso: AH=15h/CL=01h
  6217.  
  6218. Format of status structure:
  6219. Offset    Size    Description
  6220.  00h    BYTE    channel status
  6221.         bit 0: channel open
  6222.             1: channel buffer contains received data
  6223.             7: channel locked
  6224.  01h    BYTE    sender ID
  6225. ----------7F15--CL01-------------------------
  6226. INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
  6227.     AH = 15h
  6228.     CL = 01h
  6229.     DX:DI -> full-channel structure
  6230. Return: AL = status
  6231.         00h successful
  6232.         01h busy
  6233.         0Ah no datagrams available
  6234. Note:    MW386 v1.0 returns the lowest channel with a datagram; newer versions
  6235.       and NTNX return the oldest datagram
  6236. SeeAlso: AH=15h/CL=00h
  6237.  
  6238. Format of full-channel structure:
  6239. Offset    Size    Description
  6240.  00h    BYTE    number of channel with oldest datagram
  6241.  01h    BYTE    sender ID
  6242. ----------7F15--CL02-------------------------
  6243. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS
  6244.     AH = 15h
  6245.     CL = 02h
  6246. Return: AH = number of channels available (40h for MW386)
  6247. Note:    the application may always assume at least 32 channels available
  6248. SeeAlso: AH=15h/CL=03h
  6249. ----------7F15--CL03-------------------------
  6250. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE
  6251.     AH = 15h
  6252.     CL = 03h
  6253.     DX:DI -> WORD for return value
  6254. Return: buffer WORD filled with maximum packet size (4096 for MW386)
  6255. SeeAlso: AH=15h/CL=02h
  6256. ----------7F15--CL04-------------------------
  6257. INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
  6258.     AH = 15h
  6259.     CL = 04h
  6260.     DX:DI -> status structure (see below)
  6261. Return: AL = status
  6262.         00h successful
  6263.         DX:DI structure filled
  6264.         01h busy
  6265.         0Ah no acknowledgement has arrived
  6266. SeeAlso: AH=12h,AH=14h/CL=01h
  6267.  
  6268. Format of status structure:
  6269. Offset    Size    Description
  6270.  00h    BYTE    sender ID
  6271.  01h    BYTE    channel number
  6272.  02h  4 BYTEs    receiver status (see AH=12h)
  6273. ----------7F16-------------------------------
  6274. INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
  6275.     AH = 16h
  6276.     DX:SI -> transfer structure (see below)
  6277. Return: AL = status
  6278.         00h successful
  6279.         0Ah source or destination out of range
  6280.         0Bh transfer kernal busy--try again
  6281. Notes:    this call transfers memory contents directly between users; both source
  6282.       and destination user IDs may differ from the caller's ID
  6283.     no segment wrap is allowed
  6284.  
  6285. Format of transfer structure:
  6286. Offset    Size    Description
  6287.  00h    WORD    bytes to transfer
  6288.  02h    BYTE    source ID
  6289.         FEh = caller
  6290.  03h    DWORD    source address
  6291.  07h    BYTE    destination ID
  6292.         FFh = all slaves except caller
  6293.         FEh = caller
  6294.  08h    DWORD    destination address
  6295. ----------7F21-------------------------------
  6296. INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)
  6297.     AH = 21h
  6298.     AL = sender's user ID
  6299.     DS:DX -> control packet (see below)
  6300. Note:    messages or commands are ignored if disabled by the destination user
  6301. SeeAlso: AH=22h
  6302.  
  6303. Format of control packet:
  6304. Offset    Size    Description
  6305.  00h    BYTE    packet type
  6306.         00h message
  6307.         01h NTNX command
  6308.         02h MW386 command
  6309.  01h    BYTE    destination user ID or 'A' for all users
  6310.  02h 62 BYTEs    ASCIZ message (packet type 00h)
  6311.         BIOS keycodes terminated by NUL byte (type 01h) or word (02h)
  6312. Note:    a maximum of 16 keycodes will be processed for NTNX and MW386 commands
  6313. ----------7F22-------------------------------
  6314. INT 7F - Alloy NTNX - GET MESSAGE
  6315.     AH = 22h
  6316. Return: pending messages displayed on user's screen
  6317. SeeAlso: AH=21h
  6318. ----------7F24-------------------------------
  6319. INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS
  6320.     AH = 24h
  6321.     CL = function
  6322.         00h attach
  6323.         01h release
  6324.     CH = drive (0=A:,1=B:,etc)
  6325. Return: AX = status
  6326.         00h successful
  6327.         01h invalid request
  6328.         02h already attached
  6329.         03h not attached
  6330.         04h lock table full
  6331. Note:    only drives on the current machine may be attached
  6332. ----------7F24-------------------------------
  6333. INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
  6334.     AH = 24h
  6335.     CL = function
  6336.         02h attach host
  6337.         03h release host
  6338. Return: AX = status
  6339.         00h successful
  6340.         01h invalid request
  6341.         02h already attached
  6342.         03h not attached
  6343.         04h lock table full
  6344. Note:    the host processor may be attached in order to perform I/O via the host
  6345. ----------7F25--CL00-------------------------
  6346. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION
  6347.     AH = 25h
  6348.     CL = 00h        
  6349. Return: AH = version suffix letter
  6350.     CH = major version number
  6351.     CL = minor version number
  6352. SeeAlso: AH=25h/CL=01h
  6353. ----------7F25--CL01-------------------------
  6354. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
  6355.     AH = 25h
  6356.     CL = 01h
  6357. Return: CL = type
  6358.         00h RTNX
  6359.         01h ATNX
  6360.         02h NTNX
  6361.         03h BTNX
  6362.         04h MW386
  6363.         05h ANSK
  6364. SeeAlso: AH=25h/CL=00h
  6365. ----------7F26--CL00-------------------------
  6366. INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
  6367.     AH = 26h
  6368.     CL = 00h
  6369. Return: AX = file mode bits
  6370.         bit 0: directory protection enabled
  6371.         1: extended open enabled
  6372.         2: flush on every disk write
  6373.         3: flush on every disk write in locked interval
  6374.         4: flush on reads from simultaneously opened file
  6375. Note:    MW386 does not support file modes, and always returns AX=001Fh
  6376. SeeAlso: AH=26h,AH=26h/CL=06h
  6377. ----------7F26-------------------------------
  6378. INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL
  6379.     AH = 26h
  6380.     CL = check type to set/reset
  6381.         01h directory protection
  6382.         02h extended open
  6383.         03h flush on every disk write
  6384.         04h flush on disk write if any lock set during write
  6385.         05h flush on all reads if file written
  6386.     AL = new state (00h off, 01h on)
  6387. SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h
  6388. ----------7F26--CL06-------------------------
  6389. INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE
  6390.     AH = 26h
  6391.     CL = 06h
  6392. Note:    cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h
  6393. SeeAlso: AH=26h/CL=00h
  6394. ----------7F30-------------------------------
  6395. INT 7F - Alloy MW386 - GET PORT INFORMATION
  6396.     AH = 30h
  6397.     CX = MW386 port number
  6398. Return: AL = FFh if port not found
  6399.        else     driver unit number
  6400.            BL = port mode
  6401.            BH = port type
  6402.            02h remote
  6403.            DH = owner's machine ID
  6404.            DL = owner's user ID
  6405. SeeAlso: INT 17/AH=8Bh
  6406. ----------7F31-------------------------------
  6407. INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
  6408.     AH = 31h
  6409.     ???
  6410. Return: ???
  6411. ----------7F37-------------------------------
  6412. INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
  6413.     AH = 37h
  6414. Return: ES:AX -> semaphore table
  6415. ----------7F37-------------------------------
  6416. INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL
  6417.     AH = 37h
  6418.     DS:DX -> ASCIZ string to display
  6419. Note:    if the string is empty, a terminal update will be forced
  6420. ----------7F38-------------------------------
  6421. INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER
  6422.     AH = 38h
  6423.     AL = new terminal driver number
  6424.         FFh dummy driver
  6425.         FEh current driver
  6426.         FDh load new driver
  6427.         DS:SI -> new driver
  6428. SeeAlso: AH=39h
  6429. ----------7F39-------------------------------
  6430. INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
  6431.     AH = 39h
  6432.     AL = new terminal driver number
  6433.     DL = user number (FFh = caller)
  6434.     DH = machine number if DL <> FFh
  6435. Return: CF set if invalid user number
  6436.     CF clear if successful
  6437. Notes:    only available to supervisors
  6438.     the new driver number will not take effect until the user is rebooted
  6439. SeeAlso: AH=38h
  6440. ----------7F3A-------------------------------
  6441. INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS
  6442.     AH = 3Ah
  6443.     DL = user number (FFh = caller)
  6444.     DH = machine number
  6445. Return: CF clear if successful
  6446.         AH = terminal driver number
  6447.         AL = baud rate (00h = 38400, 01h = 19200, etc)
  6448.         CL = parity (00h none, 01h even, 02h odd)
  6449.         CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  6450.     CF set if invalid user number
  6451. SeeAlso: AH=3Bh
  6452. ----------7F3B-------------------------------
  6453. INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS
  6454.     AH = 3Bh
  6455.     AL = baud rate (00h = 38400, 01h = 19200, etc)
  6456.     CL = parity (00h none, 01h even, 02h odd)
  6457.     CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  6458.     DL = user number (FFh = caller)
  6459.     DH = machine number for user
  6460. Return: CF set if invalid user number
  6461. Notes:    only available to supervisors
  6462.     the new parameters will take effect immediately if the user's terminal
  6463.       has not been started, else AH=3Dh must be called to post the changes
  6464. SeeAlso: AH=3Ah,AH=3Dh
  6465. ----------7F3C-------------------------------
  6466. INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT
  6467.     AH = 3Ch
  6468.     AL = new state
  6469.          00h disabled, 01h enabled
  6470.     DL = user number (FFh = caller)
  6471.     DH = machine number for user
  6472. Return: CF set if invalid user number
  6473. Note:    only available to supervisors
  6474. SeeAlso: AH=3Dh
  6475. ----------7F3D-------------------------------
  6476. INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES
  6477.     AH = 3Dh
  6478. Note:    should be called whenever a program changes the terminal type or its
  6479.       parameters
  6480. SeeAlso: AH=3Bh
  6481. ----------7F41-------------------------------
  6482. INT 7F - Alloy NTNX - LOCK FILE FOR USER
  6483.     AH = 41h
  6484.     AL = user ID
  6485.     DS:DX -> ASCIZ filename
  6486. Return: AL = status
  6487.         00h successful
  6488.         01h invalid function
  6489.         02h already locked
  6490.         03h unable to lock
  6491.         04h lock table full
  6492. Note:    requests exclusive read/write access to file
  6493. SeeAlso: AH=00h,,AH=41h"MW386",AH=42h"NTNX"
  6494. ----------7F41-------------------------------
  6495. INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
  6496.     AH = 41h
  6497.     AL = user ID
  6498.     DS:DX -> ASCIZ semaphore name
  6499. Return: AL = status
  6500.         00h successful
  6501.         01h invalid function
  6502.         02h semaphore already locked
  6503.         03h unable to lock semaphore
  6504.         04h semaphore space exhausted
  6505. SeeAlso: AH=00h,AH=42h"MW386"
  6506. ----------7F42-------------------------------
  6507. INT 7F - Alloy NTNX - UNLOCK FILE FOR USER
  6508.     AH = 42h
  6509.     AL = user ID
  6510.     DS:DX -> ASCIZ filename
  6511. Return: AL = status
  6512.         00h successful
  6513.         01h invalid function
  6514.         02h already locked
  6515.         03h unable to lock
  6516.         04h lock table full
  6517. SeeAlso: AH=00h,AH=41h"NTNX",AH=42h"MW386"
  6518. ----------7F42-------------------------------
  6519. INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER
  6520.     AH = 42h
  6521.     AL = user ID
  6522.     DS:DX -> ASCIZ semaphore name
  6523. Return: AL = status
  6524.         00h successful
  6525.         01h invalid function
  6526.         03h unable to unlock semaphore
  6527. SeeAlso: AH=02h,AH=41h"MW386",AH=42h"NTNX"
  6528. ----------7F4E-------------------------------
  6529. INT 7F - Alloy MW386 v2+ - SET ERROR MODE
  6530.     AH = 4Eh
  6531.     AL = error mode flags
  6532.         bit 0: display critical disk errors
  6533.         1: display sharing errors
  6534.     DX = 4E58h ("NX")
  6535. Return: AL = status
  6536.         00h successful
  6537. SeeAlso: AH=4Fh
  6538. ----------7F4F-------------------------------
  6539. INT 7F - Alloy MW386 v2+ - SET FCB MODE
  6540.     AH = 4Fh
  6541.     AL = FCB mode
  6542.         02h read/write compatibility
  6543.         42h read/write shared
  6544.     DX = 4E58h ("NX")
  6545. Return: AL = status
  6546.         00h successful
  6547. ----------7F81-------------------------------
  6548. INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
  6549.     AH = 81h
  6550.     AL = user ID
  6551.     DS:DX -> ASCIZ device name
  6552. SeeAlso: AH=82h
  6553. ----------7F82-------------------------------
  6554. INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
  6555.     AH = 82h
  6556.     AL = user ID
  6557.     DS:DX -> ASCIZ device name
  6558. SeeAlso: AH=81h
  6559. ----------7FA0-------------------------------
  6560. INT 7F - Alloy MW386 - GET USER NAME
  6561.     AH = A0h
  6562.     DL = user number (FFh = caller)
  6563.     DH = machine number for user
  6564.     ES:DI -> 17-byte buffer for ASCIZ user name
  6565. Return: CF set if invalid user number
  6566. SeeAlso: AH=03h,AH=A1h
  6567. ----------7FA1-------------------------------
  6568. INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER
  6569.     AH = A1h
  6570. Return: AL = process number
  6571.     DL = user number
  6572.     DH = machine number
  6573. SeeAlso: AH=03h,AH=A0h,AH=A2h
  6574. ----------7FA2-------------------------------
  6575. INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL
  6576.     AH = A2h
  6577.     DL = user number (FFh = caller)
  6578.     DH = machine number for user
  6579. Return: CF clear if successful
  6580.         AL = privilege level
  6581.         00h supervisor
  6582.         01h high
  6583.         02h medium
  6584.         03h low
  6585.     CF set if invalid user number
  6586. SeeAlso: AH=A1h,AH=A3h
  6587. ----------7FA3-------------------------------
  6588. INT 7F - Alloy MW386 - GET USER LOGIN STATE
  6589.     AH = A3h
  6590.     DL = user number
  6591.     DH = machine number for user
  6592. Return: CF clear if successful
  6593.         AL = login state
  6594.         00h never logged in
  6595.         01h currently logged out
  6596.         03h currently logged in
  6597.     CF set if invalid user number or user not active
  6598. SeeAlso: AH=A2h
  6599. ----------7FA4-------------------------------
  6600. INT 7F - Alloy MW386 - VERIFY USER PASSWORD
  6601.     AH = A4h
  6602.     DS:DX -> ASCIZ password (null-padded to 16 bytes)
  6603. Return: AL = 00h if accepted
  6604.        else     invalid password
  6605. ----------7FA5-------------------------------
  6606. INT 7F - Alloy MW386 - GET/SET USER STATUS
  6607.     AH = A5h
  6608.     AL = function
  6609.         00h get status
  6610.         Return: BX = user flags
  6611.                 bit 5: allow messages
  6612.             CL = scan code for task manager hotkey
  6613.             CH = scan code for spooler hotkey
  6614.             DL = scan code for task swapper hotkey
  6615.             DH = modifier key status
  6616.         01h set status
  6617.         BX = user flags (see above)
  6618.         CL = scan code for task manager hotkey
  6619.         CH = scan code for spooler hotkey
  6620.         DL = scan code for task swapper hotkey
  6621.         DH = modifier key status
  6622.     DI = machine number and user number
  6623. Return: CF set if invalid user number
  6624. Note:    must have supervisor privilege to set another user's status
  6625. ----------7FB0-------------------------------
  6626. INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER
  6627.     AH = B0h
  6628.     AL = user number
  6629.     DS = code segment
  6630. Note:    MW386 ignores AL and DS; it releases all semaphores locked using INT 67
  6631.       or INT 7F locking functions
  6632. SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h
  6633. ----------7FB1-------------------------------
  6634. INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
  6635.     AH = B1h
  6636.     AL = (bits 7-5) 000
  6637.          (bits 4-0) user ID
  6638. Note:    MW386 ignores AL; it releases all semaphores locked using INT 67 or
  6639.       INT 7F locking functions
  6640. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
  6641. ----------7FB2-------------------------------
  6642. INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
  6643.     AH = B2h
  6644.     AL = (bits 7-5) 001
  6645.          (bits 4-0) user ID
  6646. SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
  6647. ----------7FB3-------------------------------
  6648. INT 7F - Alloy NTNX - RELEASE FILES FOR USER
  6649.     AH = B3h
  6650.     AL = (bits 7-5) 010
  6651.          (bits 4-0) user ID
  6652. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
  6653. ----------7FB4-------------------------------
  6654. INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
  6655.     AH = B4h
  6656.     AL = user ID
  6657. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
  6658. ----------7FC3-------------------------------
  6659. INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT
  6660.     AH = C3h
  6661.     AL = byte to write
  6662. Return: CF clear if successful
  6663.     CF set on error
  6664. SeeAlso: AH=C6h
  6665. ----------7FC5-------------------------------
  6666. INT 7F - Alloy MW386 - CHANGE CONSOLE MODE
  6667.     AH = C5h
  6668.     AL = new console mode
  6669.         00h keyboard indirect
  6670.         01h keyboard direct
  6671.         02h data handshake enforced
  6672.         03h no data handshake
  6673. Return: CF clear if successful
  6674.         AL = prior console mode
  6675.     CF set on error (caller is not remote user)
  6676. Note:    modes 2 and 3 may be used for input through the console port; no video
  6677.       output should be performed in these modes
  6678. ----------7FC6-------------------------------
  6679. INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT
  6680.     AH = C6h
  6681.     AL = byte to write
  6682. Return: CF clear if successful
  6683.     CF set on error (caller is not remote user)
  6684. Note:    any terminal driver data translation will be bypassed
  6685. SeeAlso: AH=C3h,AH=C7h
  6686. ----------7FC7-------------------------------
  6687. INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE
  6688.     AH = C7h
  6689. Return: CF clear if successful
  6690.         AL = byte read
  6691.     CF set on error (no data available or caller is not remote user)
  6692. Note:    used to read data after placing console in mode 2 or 3 (see AH=C5h)
  6693. SeeAlso: AH=C5h,AH=C6h,AH=C8h
  6694. ----------7FC8-------------------------------
  6695. INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER
  6696.     AH = C8h
  6697.     AL = maximum bytes to read
  6698.     ES:DI -> buffer for console data
  6699. Return: CF clear if successful
  6700.         CX = number of bytes read
  6701.     CF set on error (caller is not remote user)
  6702. SeeAlso: AH=C7h
  6703. ----------7FCF-------------------------------
  6704. INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
  6705.     AH = CFh
  6706.     DS:DX -> ASCIZ string containing user number to be reset
  6707. SeeAlso: AH=D6h
  6708. ----------7FD6-------------------------------
  6709. INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
  6710.     AH = D6h
  6711.     DS:DX -> reset packet (see below)
  6712. Return: never if succesful
  6713. Note:    all users will be shut down immediately if successful
  6714. SeeAlso: AH=CFh
  6715.  
  6716. Format of reset packet:
  6717. Offset    Size    Description
  6718.  00h    DWORD    reset code (60606060h)
  6719.  04h 16 BYTEs    ASCIZ supervisor password padded with nulls
  6720. ----------7FD7-------------------------------
  6721. INT 7F - Alloy MW386 - POST EVENT
  6722.     AH = D7h
  6723.     AL = user number (if local event)
  6724.     DX = event number
  6725. ----------7FD8-------------------------------
  6726. INT 7F - Alloy MW386 - FLUSH DISK BUFFERS
  6727.     AH = D8h
  6728. Return: CF set on error
  6729. Note:    forces all disk buffers to be written out immediately
  6730. SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h
  6731. ----------7FDB-------------------------------
  6732. INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE
  6733.     AH = DBh
  6734. Return: AL = drive from which MW386 was started (2=C:,3=D:,etc)
  6735. ----------7FE0-------------------------------
  6736. INT 7F - Alloy MW386 - CREATE DOS TASK
  6737.     AH = E0h
  6738.     AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  6739.     DS:DX -> ASCIZ task name (max 16 bytes)
  6740. Return: CF clear if successful
  6741.         AL = task create ID
  6742.     CF set on error
  6743. Note:    only foreground DOS tasks can use this function
  6744. SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h
  6745. ----------7FE1-------------------------------
  6746. INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID
  6747.     AH = E1h
  6748.     AL = create ID (from AH=E0h)
  6749. Return: AL = DOS process number
  6750.     CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  6751. Note:    this function should not be called immediately after creating a new
  6752.       DOS task, since the new task is being initialized by a concurrent
  6753.       process
  6754. SeeAlso: AH=E0h,AH=E2h
  6755. ----------7FE2-------------------------------
  6756. INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK
  6757.     AH = E2h
  6758.     AL = DOS process number (from AH=E1h)
  6759. Return: CF set on error (invalid process number or caller not foreground task)
  6760. Notes:    specified task becomes the foreground task and current task is placed
  6761.       in the background
  6762.     may only be called by a foreground task
  6763. SeeAlso: AH=E0h,AH=E1h
  6764. ----------7FE3-------------------------------
  6765. INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
  6766.     AH = E3h
  6767. ---v1.x---
  6768.     AL = user number
  6769. ---v2+---
  6770.     BH = user number
  6771.     BL = task number
  6772. ---
  6773.     DS:DX -> ASCIZ task name
  6774. Return: CF set on error (invalid process number)
  6775. SeeAlso: AH=E0h,AH=E4h,AH=E5h
  6776. ----------7FE4-------------------------------
  6777. INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
  6778.     AH = E4h
  6779. ---v1.x---
  6780.     AL = user number
  6781. ---v2+---
  6782.     BH = user number
  6783.     BL = task number
  6784. ---
  6785.     ES:DI -> buffer for task name
  6786. Return: CF clear if successful
  6787.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  6788.         DX = task flags
  6789.         bit 7: MSDOS process
  6790.         ES:DI buffer filled
  6791.     CF set on error (invalid process number)
  6792. SeeAlso: AH=E3h,AH=E5h
  6793. ----------7FE5-------------------------------
  6794. INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME
  6795.     AH = E5h
  6796.     DS:DX -> ASCIZ task name
  6797.     BH = user number
  6798. Return: CF clear if successful
  6799.         AL = DOS process number
  6800.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  6801.     CF set on error (no match for name)
  6802. SeeAlso: AH=E3h,AH=E4h
  6803. ----------7FE6-------------------------------
  6804. INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS
  6805.     AH = E6h
  6806. Return: AX = number of processes available to current user
  6807. SeeAlso: AH=E0h
  6808. ----------7FE7-------------------------------
  6809. INT 7F - Alloy MW386 - REMOVE DOS TASK
  6810.     AH = E7h
  6811.     AL = DOS process number
  6812. Return: CF set on error (invalid process number or first process)
  6813. Note:    can only be called by a foreground task
  6814. SeeAlso: AH=E0h
  6815. ----------7FE8-------------------------------
  6816. INT 7F - Alloy MW386 - DOS TASK DELAY
  6817.     AH = E8h
  6818.     CX = delay time in milliseconds
  6819. Note:    a delay of 0 may be used to surrender the current time slice
  6820. SeeAlso: INT 15/AX=1000h,INT 21/AH=EEh"DoubleDOS",INT 2F/AX=1680h
  6821. ----------7FF0-------------------------------
  6822. INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP
  6823.     AH = F0h
  6824.     AL = group number
  6825.     DS:DX -> ASCIZ directory name
  6826. Return: CF clear if successful
  6827.         AX = status
  6828.         0002h directory not found
  6829.         0003h directory not found
  6830.         0005h directory in use, cannot be restricted
  6831.         02xxh restricted to group xxh
  6832.     CF set on error
  6833. Note:    the restriction on the directory may be removed by calling this
  6834.       function with group 0, then using AH=F1h to assign the directory to
  6835.       group 0
  6836. SeeAlso: AH=F1h,AH=F2h,AH=F3h
  6837. ----------7FF1-------------------------------
  6838. INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP
  6839.     AH = F1h
  6840.     AL = group number
  6841.     DS:DX -> ASCIZ directory name
  6842. Notes:    performs permanent assignment to a group; no immediate action is taken
  6843.       unless the directory has been restricted with AH=F0h
  6844.     may be used to restrict a nonexistent directory
  6845. SeeAlso: AH=F0h
  6846. ----------7FF2-------------------------------
  6847. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY
  6848.     AH = F2h
  6849.     CX = entry number
  6850.     ES:DI -> 64-byte buffer
  6851. Return: CF clear if successful
  6852.         buffer filled with 63-byte directory info and 1-byte group number
  6853.     CF set on error (invalid entry)
  6854. SeeAlso: AH=F0h,AH=F3h
  6855. ----------7FF3-------------------------------
  6856. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP
  6857.     AH = F3h
  6858.     AL = group number
  6859.     CX = entry number
  6860.     ES:DI -> 64-byte buffer
  6861. Return: CF clear if successful
  6862.         CX = next entry number
  6863.         buffer filled with 63-byte directory info and 1-byte group number
  6864.     CF set on error (no more matching entries)
  6865. Note:    like AH=F2h, but only returns directories belonging to the specified
  6866.       group
  6867. SeeAlso: AH=F2h
  6868. ----------7FF8-------------------------------
  6869. INT 7F - Alloy MW386 - ASSIGN USER TO GROUP
  6870.     AH = F8h
  6871.     AL = group number
  6872.     DL = user number
  6873.     DH = machine number (currently 00h)
  6874. Return: CF clear if successful
  6875.     CF set on error (user already in maximum number of groups)
  6876. Note:    each user is allowed eight group assignments
  6877. SeeAlso: AH=F9h,AH=FAh
  6878. ----------7FF9-------------------------------
  6879. INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
  6880.     AH = F9h
  6881.     AL = group number
  6882.     DL = user number
  6883.     DH = machine number (currently 00h)
  6884. Return: CF set if failed
  6885. SeeAlso: AH=F8h,AH=FAh
  6886. ----------7FFA-------------------------------
  6887. INT 7F - Alloy MW386 - GET USER GROUP LIST
  6888.     AH = FAh
  6889.     DL = user number
  6890.     DH = machine number (currently 00h)
  6891.     ES:DI -> 16-byte buffer for group list
  6892. Return: CX = number of groups
  6893.     ES:DI buffer filled with group numbers
  6894. SeeAlso: AH=F8h,AH=F9h
  6895. ----------7FFB-------------------------------
  6896. INT 7F - Alloy MW386 - ASSIGN GROUP NAME
  6897.     AH = FBh
  6898.     CL = group number
  6899.     ES:DI -> ASCIZ group name (max 17 bytes)
  6900. SeeAlso: AH=FCh
  6901. ----------7FFC-------------------------------
  6902. INT 7F - Alloy MW386 - GET GROUP NAME
  6903.     AH = FCh
  6904.     CL = group number
  6905.     ES:DI -> 17-byte buffer for ASCIZ name
  6906. Return: ES:DI buffer filled
  6907. Note:    if the group has not been named, "(unnamed)" is returned
  6908. SeeAlso: AH=FBh
  6909. ----------80---------------------------------
  6910. INT 80 - Q-PRO4 - ???
  6911. ----------80---------------------------------
  6912. INT 80 - reserved for BASIC
  6913. ----------80----BX0000-----------------------
  6914. INT 80 - SoundBlaster SBFM driver - GET VERSION
  6915.     BX = 0000h
  6916. Return: ???
  6917. Note:    SBFM installs at a free interrupt in the range 80h through BFh
  6918. SeeAlso: BX=0008h
  6919. ----------80----BX0001-----------------------
  6920. INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
  6921.     BX = 0001h
  6922.     DX:AX -> music status byte
  6923. SeeAlso: BX=0000h,BX=0002h,BX=0003h
  6924. ----------80----BX0002-----------------------
  6925. INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
  6926.     BX = 0002h
  6927.     CX = number of instruments
  6928.     DX:AX -> instrument table
  6929. SeeAlso: BX=0000h,BX=0001h,BX=0005h
  6930. ----------80----BX0003-----------------------
  6931. INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
  6932.     BX = 0003h
  6933.     AX = clock rate divisor (1193180 / desired frequency in Hertz)
  6934.         FFFFh to restore to 18.2 Hz
  6935. SeeAlso: BX=0000h,BX=0001h,BX=0004h
  6936. ----------80----BX0004-----------------------
  6937. INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
  6938.     BX = 0004h
  6939.     AX = driver clock rate divisor (1193180 / frequency in Hertz)
  6940. Note:    default frequency is 96 Hz
  6941. SeeAlso: BX=0000h,BX=0003h
  6942. ----------80----BX0005-----------------------
  6943. INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
  6944.     BX = 0005h
  6945.     AX = semi-tone offset
  6946. SeeAlso: BX=0000h,BX=0002h,BX=0006h
  6947. ----------80----BX0006-----------------------
  6948. INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
  6949.     BX = 0006h
  6950.     DX:AX -> music block
  6951. Return: AX = status
  6952.         0000h successful
  6953.         0001h music already active
  6954. SeeAlso: BX=0000h,BX=0007h,BX=000Ah
  6955. ----------80----BX0007-----------------------
  6956. INT 80 - SoundBlaster SBFM driver - STOP MUSIC
  6957.     BX = 0007h
  6958. Return: AX = status
  6959.         0000h successful
  6960.         0001h music not active
  6961. SeeAlso: BX=0000h,BX=0006h,BX=0009h
  6962. ----------80----BX0008-----------------------
  6963. INT 80 - SoundBlaster SBFM driver - RESET DRIVER
  6964.     BX = 0008h
  6965. Return: AX = status
  6966.         0000h successful
  6967.         0001h music is active
  6968. SeeAlso: BX=0000h
  6969. ----------80----BX0009-----------------------
  6970. INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
  6971.     BX = 0009h
  6972. Return: AX = status
  6973.         0000h successful
  6974.         0001h no music active
  6975. SeeAlso: BX=0000h,BX=0007h,BX=000Ah
  6976. ----------80----BX000A-----------------------
  6977. INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
  6978.     BX = 000Ah
  6979. Return: AX = status
  6980.         0000h successful
  6981.         0001h no music paused
  6982. SeeAlso: BX=0000h,BX=0006h,BX=0009h
  6983. ----------80----BX000B-----------------------
  6984. INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
  6985.     BX = 000Bh
  6986.     DX:AX -> trap routine
  6987. SeeAlso: BX=0000h
  6988. ----------8001-------------------------------
  6989. INT 80 - QPC Software PKTINT.COM - INITIALIZE
  6990.     AH = 01h
  6991. Return: AX = 0000h
  6992.     CX = FFFFh
  6993.     DX = FFFFh
  6994. Notes:    this interrupt is the WinQVTNet protected mode interface to Windows 3.0
  6995.     all buffer pointers are reset back to 0
  6996. ----------8002-------------------------------
  6997. INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
  6998.     AH = 02h
  6999.     BX = extra bytes to allocate per packet
  7000. Return: AX = segment address of 10K buffer (for receives???)
  7001.     BX = segment address of 2K buffer (for sends???)
  7002. SeeAlso: AH=05h
  7003. ----------8003-------------------------------
  7004. INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
  7005.     AH = 03h
  7006. Return: CX:DX -> receive call address
  7007. Note:    the returned address can be used in the packet driver calls since it
  7008.       will be a valid address in all DOS boxes
  7009. SeeAlso: AH=06h
  7010. ----------8004-------------------------------
  7011. INT 80 - QPC Software PKTINT.COM - ENABLE???
  7012.     AH = 04h
  7013.     BX = ???
  7014. Return: ???
  7015. ----------8005-------------------------------
  7016. INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
  7017.     AH = 05h
  7018. Return: AX = amount of buffer currently in use
  7019.     BX = current offset in buffer
  7020.     CX = number of times receive has been called
  7021. SeeAlso: AH=02h
  7022. ----------8006-------------------------------
  7023. INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
  7024.     AH = 06h
  7025. Return: BX = next packet offset
  7026.     CX = number of bytes still buffered
  7027.     DX = size of packet released back into buffer pool
  7028. SeeAlso: AH=03h
  7029. ----------81---------------------------------
  7030. INT 81 - reserved for BASIC
  7031. ----------81---------------------------------
  7032. INT 81 - IBM TOKEN RING ADAPTER - ???
  7033. ----------82---------------------------------
  7034. INT 82 - reserved for BASIC
  7035. ----------82---------------------------------
  7036. INT 82 - IBM TOKEN RING ADAPTER - ???
  7037.     AH = function
  7038.         00h display message???
  7039.         DS:BX -> string
  7040.     ???
  7041. Return: ???
  7042. ----------83---------------------------------
  7043. INT 83 - reserved for BASIC
  7044. ----------84---------------------------------
  7045. INT 84 - reserved for BASIC
  7046. ----------85---------------------------------
  7047. INT 85 - reserved for BASIC
  7048. ----------86---------------------------------
  7049. INT 86 - NetBIOS - ORIGINAL INT 18
  7050. Note:    some implementations of NetBIOS reportedly relocate INT 18 here
  7051. SeeAlso: INT 18
  7052. ----------86---------------------------------
  7053. INT 86 - used by IBM ROM BASIC while in interpreter
  7054. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7055.     BASIC.COM/BASICA.COM do not restore vector on termination
  7056. ----------86---------------------------------
  7057. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  7058. ----------87---------------------------------
  7059. INT 87 - used by IBM ROM BASIC while in interpreter
  7060. Notes:    called by ROM BASIC
  7061.     BASIC.COM/BASICA.COM do not restore vector on termination
  7062. ----------87---------------------------------
  7063. INT 87 - APL*PLUS/PC - ????
  7064. ----------88---------------------------------
  7065. INT 88 - used by IBM ROM BASIC while in interpreter
  7066. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7067.     BASIC.COM/BASICA.COM do not restore vector on termination
  7068. ----------88----AL00-------------------------
  7069. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  7070.     AL = 00h
  7071.     BX = STPTR of the variable to be assigned
  7072.     ES:SI -> model of type, rank, and shape (see below)
  7073. Return: ES:DI -> first data byte of object
  7074.     DX:CX = number of elements in the object
  7075. SeeAlso: INT C8"APL"
  7076.  
  7077. Format of shape model:
  7078. Offset    Size    Description
  7079.  00h    BYTE    type
  7080.         01h character (2-byte dimension sizes)
  7081.         02h integer (2-byte dimension sizes)
  7082.         08h floating point (2-byte dimension sizes)
  7083.         11h character (4-byte dimension sizes)
  7084.         12h integer (4-byte dimension sizes)
  7085.         18h floating point (4-byte dimension sizes)
  7086.  01h    BYTE    rank
  7087.  02h    WORD/DWORD first dimension of shape
  7088.  N    WORD/DWORD second dimension of shape
  7089.     ...
  7090. ----------88----AL01-------------------------
  7091. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  7092.     AL = 01h
  7093.     AH = rank
  7094.     BX = STPTR of the variable to be assigned
  7095.     CX = first dimension (if any)
  7096.     DX = second dimension (if any)
  7097. Return: ES:DI -> object
  7098.     CX = number of elements in the object
  7099. Note:    each dimension must be 32767 or smaller
  7100. SeeAlso: AL=02h,AL=08h,INT C8"APL"
  7101. ----------88----AL02-------------------------
  7102. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  7103.     AL = 02h
  7104.     AH = rank
  7105.     BX = STPTR of the variable to be assigned
  7106.     CX = first dimension (if any)
  7107.     DX = second dimension (if any)
  7108. Return: ES:DI -> object
  7109.     CX = number of elements in the object
  7110. Note:    each dimension must be 32767 or smaller
  7111. SeeAlso: AL=01h,AL=08h,INT C8"APL"
  7112. ----------88----AL08-------------------------
  7113. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  7114.     AL = 08h
  7115.     AH = rank
  7116.     BX = STPTR of the variable to be assigned
  7117.     CX = first dimension (if any)
  7118.     DX = second dimension (if any)
  7119. Return: ES:DI -> object
  7120.     CX = number of elements in the object
  7121. Note:    each dimension must be 32767 or smaller
  7122. SeeAlso: AL=01h,AL=02h,INT C8"APL"
  7123. ----------88----ALF5-------------------------
  7124. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  7125.     AL = F5h
  7126.     BX = STPTR of object
  7127. SeeAlso: INT C8"APL"
  7128. ----------88----ALF6-------------------------
  7129. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  7130.     AL = F6h
  7131.     BX = STPTR of object
  7132. SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
  7133. ----------88----ALF7-------------------------
  7134. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  7135.     AL = F7h
  7136.     BX = STPTR of object
  7137. SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
  7138. ----------88----ALF8-------------------------
  7139. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  7140.     AL = F8h
  7141.     BX = STPTR of object
  7142. Return:     BX = 0000h eligible
  7143.           0001h not eligible
  7144. SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
  7145. ----------88----ALF9-------------------------
  7146. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  7147.     AL = F9h
  7148.     ES:SI -> name
  7149.     CX = length of name
  7150. Return: CF set if name ill-formed or already in use
  7151.         BX = STPTR if already in symbol table
  7152.     CF clear if name is available for use
  7153.         BX = 0000h
  7154. Note:    does not force the name into the workspace
  7155. SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
  7156. ----------88----ALFC-------------------------
  7157. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  7158.     AL = FCh
  7159.     BX = amount of memory needed (paragraphs)
  7160. Return: CF clear if memory available
  7161.     CF set if a workspace compaction is required
  7162. SeeAlso: AL=FDh,INT C8"APL"
  7163. ----------88----ALFD-------------------------
  7164. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  7165.     AL = FDh
  7166. Return: BX = number of paragraphs available in workspace
  7167. SeeAlso: AL=FCh,INT C8"APL"
  7168. ----------88----ALFE-------------------------
  7169. INT 88 - APL*PLUS/PC - CREATE NAME
  7170.     AL = FEh
  7171.     ES:SI -> name
  7172.     CX = length of name
  7173. Return: BX = STPTR of name
  7174.     DX = interpreter's data segment
  7175. SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
  7176. ----------88----ALFF-------------------------
  7177. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  7178.     AL = FFh
  7179.     ES:SI -> name
  7180.     CX = length of name
  7181. Return: CF set if name ill-formed or already in use
  7182.         BX = STPTR if already in symbol table
  7183.     CF clear if name is available for use
  7184.         BX = 0000h
  7185. Note:    forces the name into the workspace and makes it immune from outswapping
  7186. SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
  7187. ----------89---------------------------------
  7188. INT 89 - used by IBM ROM BASIC while in interpreter
  7189. Notes:    called by ROM BASIC
  7190.     BASIC.COM/BASICA.COM do not restore vector on termination
  7191. ----------8A---------------------------------
  7192. INT 8A - used by IBM ROM BASIC while in interpreter
  7193. Notes:    called by ROM BASIC
  7194.     BASIC.COM/BASICA.COM do not restore vector on termination
  7195. ----------8A---------------------------------
  7196. INT 8A - APL*PLUS/PC - PRINT SCREEN
  7197. Note:    same as INT 05
  7198. SeeAlso: INT 05,INT CA"APL"
  7199. ----------8B---------------------------------
  7200. INT 8B - used by IBM ROM BASIC while in interpreter
  7201. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7202.     BASIC.COM/BASICA.COM do not restore vector on termination
  7203. ----------8B---------------------------------
  7204. INT 8B - APL*PLUS/PC - BEEP
  7205. Note:    same as printing a ^G via INT 21/AH=02h
  7206. SeeAlso: INT 21/AH=02h,INT CB"APL"
  7207. ----------8C---------------------------------
  7208. INT 8C - used by IBM ROM BASIC while in interpreter
  7209. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7210.     BASIC.COM/BASICA.COM do not restore vector on termination
  7211. ----------8C---------------------------------
  7212. INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
  7213.     AX = flag
  7214.         0000h do not save display attributes
  7215.         0001h save attributes
  7216. SeeAlso: INT CC"APL"
  7217. ----------8D---------------------------------
  7218. INT 8D - used by IBM ROM BASIC while in interpreter
  7219. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7220.     BASIC.COM/BASICA.COM do not restore vector on termination
  7221. ----------8E---------------------------------
  7222. INT 8E - used by IBM ROM BASIC while in interpreter
  7223. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7224.     BASIC.COM/BASICA.COM do not restore vector on termination
  7225. ----------8F---------------------------------
  7226. INT 8F - used by IBM ROM BASIC while in interpreter
  7227. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7228.     BASIC.COM/BASICA.COM do not restore vector on termination
  7229. ----------90---------------------------------
  7230. INT 90 - used by IBM ROM BASIC while in interpreter
  7231. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7232.     BASIC.COM/BASICA.COM do not restore vector on termination
  7233. ----------90---------------------------------
  7234. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  7235. ----------91---------------------------------
  7236. INT 91 - used by IBM ROM BASIC while in interpreter
  7237. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7238.     BASIC.COM/BASICA.COM do not restore vector on termination
  7239. ----------91---------------------------------
  7240. INT 91 - IBM TOKEN RING ADAPTER - ???
  7241. ----------92---------------------------------
  7242. INT 92 - used by IBM ROM BASIC while in interpreter
  7243. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7244.     BASIC.COM/BASICA.COM do not restore vector on termination
  7245. ----------92---------------------------------
  7246. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  7247.     BX:DX -> control block
  7248. ----------93---------------------------------
  7249. INT 93 - used by IBM ROM BASIC while in interpreter
  7250. Notes:    called by ROM BASIC
  7251.     BASIC.COM/BASICA.COM do not restore vector on termination
  7252. ----------93---------------------------------
  7253. INT 93 - IBM TOKEN RING ADAPTER - ???
  7254. ----------94---------------------------------
  7255. INT 94 - used by IBM ROM BASIC while in interpreter
  7256. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7257.     BASIC.COM/BASICA.COM do not restore vector on termination
  7258. ----------95---------------------------------
  7259. INT 95 - used by IBM ROM BASIC while in interpreter
  7260. Notes:    called by ROM BASIC
  7261.     BASIC.COM/BASICA.COM do not restore vector on termination
  7262. ----------95---------------------------------
  7263. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  7264. Note:    use only when the R= option is invoked on entering APL
  7265. ----------96---------------------------------
  7266. INT 96 - used by IBM ROM BASIC while in interpreter
  7267. Notes:    called by ROM BASIC
  7268.     BASIC.COM/BASICA.COM do not restore vector on termination
  7269. ----------97---------------------------------
  7270. INT 97 - used by IBM ROM BASIC while in interpreter
  7271. Notes:    called by ROM BASIC
  7272.     BASIC.COM/BASICA.COM do not restore vector on termination
  7273. ----------98---------------------------------
  7274. INT 98 - used by IBM ROM BASIC while in interpreter
  7275. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7276.     BASIC.COM/BASICA.COM do not restore vector on termination
  7277. ----------99---------------------------------
  7278. INT 99 - used by IBM ROM BASIC while in interpreter
  7279. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7280.     BASIC.COM/BASICA.COM do not restore vector on termination
  7281. ----------9A---------------------------------
  7282. INT 9A - used by IBM ROM BASIC while in interpreter
  7283. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7284.     BASIC.COM/BASICA.COM do not restore vector on termination
  7285. ----------9B---------------------------------
  7286. INT 9B - used by IBM ROM BASIC while in interpreter
  7287. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7288.     BASIC.COM/BASICA.COM do not restore vector on termination
  7289. ----------9C---------------------------------
  7290. INT 9C - used by IBM ROM BASIC while in interpreter
  7291. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7292.     BASIC.COM/BASICA.COM do not restore vector on termination
  7293. ----------9D---------------------------------
  7294. INT 9D - used by IBM ROM BASIC while in interpreter
  7295. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7296.     BASIC.COM/BASICA.COM do not restore vector on termination
  7297. ----------9E---------------------------------
  7298. INT 9E - used by IBM ROM BASIC while in interpreter
  7299. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7300.     BASIC.COM/BASICA.COM do not restore vector on termination
  7301. ----------9F---------------------------------
  7302. INT 9F - used by IBM ROM BASIC while in interpreter
  7303. Notes:    called by ROM BASIC
  7304.     BASIC.COM/BASICA.COM do not restore vector on termination
  7305. ----------A0---------------------------------
  7306. INT A0 - used by IBM ROM BASIC while in interpreter
  7307. Notes:    called by ROM BASIC
  7308.     BASIC.COM/BASICA.COM do not restore vector on termination
  7309. ----------A0---------------------------------
  7310. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  7311. SeeAlso: INT 59
  7312. ----------A1---------------------------------
  7313. INT A1 - used by IBM ROM BASIC while in interpreter
  7314. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7315.     BASIC.COM/BASICA.COM do not restore vector on termination
  7316. ----------A2---------------------------------
  7317. INT A2 - used by IBM ROM BASIC while in interpreter
  7318. Notes:    called by ROM BASIC
  7319.     BASIC.COM/BASICA.COM do not restore vector on termination
  7320. ----------A3---------------------------------
  7321. INT A3 - used by IBM ROM BASIC while in interpreter
  7322. Notes:    called by ROM BASIC
  7323.     BASIC.COM/BASICA.COM do not restore vector on termination
  7324. ----------A4---------------------------------
  7325. INT A4 - used by IBM ROM BASIC while in interpreter
  7326. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7327.     BASIC.COM/BASICA.COM do not restore vector on termination
  7328. ----------A4---------------------------------
  7329. INT A4 - Right Hand Man API
  7330.     function number in AH
  7331. Note: Right-Hand Man is a TSR desk-top utility, and only hooks this interrupt
  7332.     while popped up
  7333. ----------A5---------------------------------
  7334. INT A5 - used by IBM ROM BASIC while in interpreter
  7335. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7336.     BASIC.COM/BASICA.COM do not restore vector on termination
  7337. ----------A6---------------------------------
  7338. INT A6 - used by IBM ROM BASIC while in interpreter
  7339. Notes:    called by ROM BASIC
  7340.     BASIC.COM/BASICA.COM do not restore vector on termination
  7341. ----------A7---------------------------------
  7342. INT A7 - used by IBM ROM BASIC while in interpreter
  7343. Notes:    called by ROM BASIC
  7344.     BASIC.COM/BASICA.COM do not restore vector on termination
  7345. ----------A8---------------------------------
  7346. INT A8 - used by IBM ROM BASIC while in interpreter
  7347. Notes:    called by ROM BASIC
  7348.     BASIC.COM/BASICA.COM do not restore vector on termination
  7349. ----------A9---------------------------------
  7350. INT A9 - used by IBM ROM BASIC while in interpreter
  7351. Notes:    called by ROM BASIC
  7352.     BASIC.COM/BASICA.COM do not restore vector on termination
  7353. ----------AA---------------------------------
  7354. INT AA - used by IBM ROM BASIC while in interpreter
  7355. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7356.     BASIC.COM/BASICA.COM do not restore vector on termination
  7357. ----------AB---------------------------------
  7358. INT AB - used by IBM ROM BASIC while in interpreter
  7359. Notes:    called by ROM BASIC
  7360.     BASIC.COM/BASICA.COM do not restore vector on termination
  7361. ----------AC---------------------------------
  7362. INT AC - used by IBM ROM BASIC while in interpreter
  7363. Notes:    called by ROM BASIC
  7364.     BASIC.COM/BASICA.COM do not restore vector on termination
  7365. ----------AD---------------------------------
  7366. INT AD - used by IBM ROM BASIC while in interpreter
  7367. Notes:    called by ROM BASIC
  7368.     BASIC.COM/BASICA.COM do not restore vector on termination
  7369. ----------AE---------------------------------
  7370. INT AE - used by IBM ROM BASIC while in interpreter
  7371. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7372.     BASIC.COM/BASICA.COM do not restore vector on termination
  7373. ----------AF---------------------------------
  7374. INT AF - used by IBM ROM BASIC while in interpreter
  7375. Notes:    called by ROM BASIC
  7376.     BASIC.COM/BASICA.COM do not restore vector on termination
  7377. ----------B0---------------------------------
  7378. INT B0 - used by IBM ROM BASIC while in interpreter
  7379. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7380.     BASIC.COM/BASICA.COM do not restore vector on termination
  7381. ----------B1---------------------------------
  7382. INT B1 - used by IBM ROM BASIC while in interpreter
  7383. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7384.     BASIC.COM/BASICA.COM do not restore vector on termination
  7385. ----------B2---------------------------------
  7386. INT B2 - used by IBM ROM BASIC while in interpreter
  7387. Notes:    called by ROM BASIC
  7388.     BASIC.COM/BASICA.COM do not restore vector on termination
  7389. ----------B3---------------------------------
  7390. INT B3 - used by IBM ROM BASIC while in interpreter
  7391. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7392.     BASIC.COM/BASICA.COM do not restore vector on termination
  7393. ----------B370-------------------------------
  7394. INT B3 - ZIPKEY - GET VERSION
  7395.     AH = 70h
  7396. Return: AH = major version
  7397.     AL = minor version
  7398.     CL = number of states and territories in current database
  7399.     DH = year of current database - 1900
  7400.     DL = month of current database's file date
  7401. Return: AX destroyed
  7402. Notes:    if installed, the string "ZIPKEY" is present at offset 75h in the
  7403.       interrupt handler's segment, and the byte at 7Bh contains the API
  7404.       version number (00h for v1.x, 01h for v2.0)
  7405.     ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  7406. ----------B371-------------------------------
  7407. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  7408.     AH = 71h
  7409.     BX = abbreviation, in either case (first letter in BL)
  7410. Return: CF set on error
  7411.         AL = FFh
  7412.     CF clear if successful
  7413.         AL = ZIPKEY state code
  7414. SeeAlso: AH=72h
  7415. ----------B372-------------------------------
  7416. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  7417.     AH = 72h
  7418.     BL = ZIPKEY state code
  7419. Return: CF set on error
  7420.         AX destroyed
  7421.     CF clear if successful
  7422.         AX = abbreviation, in upper case
  7423. SeeAlso: AH=71h,AH=73h
  7424. ----------B373-------------------------------
  7425. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  7426.     AH = 73h
  7427.     BL = ZIPKEY state code
  7428.     ES:DI -> buffer for name
  7429. Return: CF set on error
  7430.         AX destroyed
  7431.     CF clear if successful
  7432.         ES:DI points one byte beyond end of name
  7433. SeeAlso: AH=72h
  7434. ----------B374-------------------------------
  7435. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  7436.     AH = 74h
  7437.     DX = zipcode region (0-999)
  7438.     CH = last two digits of zipcode (0-99)
  7439.     ES:DI -> buffer
  7440. Return: CF set on error
  7441.         AX destroyed
  7442.     CF clear if successful
  7443.         ES:DI points one byte beyond end of digit string
  7444. ----------B375-------------------------------
  7445. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  7446.     AH = 75h
  7447.     DX = zipcode region (0-999)
  7448.     CH = last two digits of zipcode (0-99)
  7449. Return: CF set on error (zipcode not found)
  7450.         AL = suggested state code, FFh if none
  7451.     CF clear if successful
  7452.         AL = ZIPKEY state code
  7453.         BX = area code (v2.0+)
  7454. SeeAlso: AH=76h,AH=79h
  7455. ----------B376-------------------------------
  7456. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  7457.     AH = 76h
  7458.     DX = zipcode region (0-999)
  7459.     CH = last two digits of zipcode (0-99)
  7460.     ES:DI -> buffer for name
  7461. Return: CF set on error
  7462.         AL = suggested state code, FFh if none
  7463.         ES:DI buffer filled with suggested city name
  7464.     CF clear if successful
  7465.         AL = ZIPKEY state code
  7466.         BX = area code (v2.0+)
  7467.         ES:DI points one byte beyond end of name
  7468. SeeAlso: AH=75h,AH=78h
  7469. ----------B377-------------------------------
  7470. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  7471.     AH = 77h
  7472.     DX = zipcode region (0-999)
  7473.     CH = last two digits of zipcode (0-99)
  7474.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  7475. Return: CF set on error
  7476.         AX destroyed
  7477.     CF clear if successful    
  7478.         zipcode specification as defined by the BX keystroke is placed in
  7479.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  7480.           by pressing the key specified by BX
  7481. ----------B378-------------------------------
  7482. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  7483.     AH = 78h
  7484.     BL = ZIPKEY state code
  7485.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  7486. Return: BH = number of matching entries (set to 51 if more than 50)
  7487.     DX = zipcode region of first match (0-999)
  7488.     CL = last two digits of first zipcode in the range (0-99)
  7489.     CH = last two digits of last zipcode in the range (0-99)
  7490.     AX destroyed
  7491. SeeAlso: AH=79h,AH=7Ah
  7492. ----------B379-------------------------------
  7493. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  7494.     AH = 79h
  7495.     BL = ZIPKEY state code of first state to search
  7496.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  7497. Return:    AL = ZIPKEY state code of first matching state
  7498.     BH = number of matching entries (set to 51 if more than 50)
  7499.     DX = zipcode region of first match (0-999)
  7500.     CL = last two digits of first zipcode in first range (0-99)
  7501.     CH = last two digits of last zipcode in first range (0-99)
  7502. Note:    to find all matching cities, repeat search with BL set to one more than
  7503.       the returned AL
  7504. SeeAlso: AH=78h,AH=7Ah
  7505. ----------B37A-------------------------------
  7506. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  7507.     AH = 7Ah
  7508.     BL = case number (0 to one less than value returned in BH by lookup)
  7509. Return: AL = ZIPKEY state code
  7510.     DX = zipcode region (0-999)
  7511.     CL = last two digits of first zipcode in the range (0-99)
  7512.     CH = last two digits of last zipcode in the range (0-99)
  7513. SeeAlso: AH=78h,AH=79h
  7514. ----------B37B-------------------------------
  7515. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  7516.     AH = 7Bh
  7517. Return: BL = maximum number of characters for a city name
  7518.     BH = ZIPKEY state code for last city-name search
  7519.         FFh if none
  7520.     CX:DX = internal code identifying last city search
  7521.     AX destroyed
  7522. SeeAlso: AH=7Ch
  7523. ----------B37C-------------------------------
  7524. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  7525.     AH = 7Ch
  7526.     BL = maximum number of characters for a city name
  7527.     BH = ZIPKEY state code for last city-name search
  7528.         FFh if none
  7529.     CX:DX = internal code returned by AH=7Bh
  7530. Return: CF set on error
  7531.     CF clear if successful
  7532.     AX destroyed
  7533. SeeAlso: AH=7Bh
  7534. ----------B37D-------------------------------
  7535. INT B3 - ZIPKEY - REQUEST POP UP
  7536.     AH = 7Dh
  7537.     BL = index number to simulate pressing a hotkey
  7538.         FFh for immediate popup with no playback on return
  7539. Return: CF set on error
  7540.         AL = FDh already busy with another request
  7541.            = FEh illegal function
  7542.     CF clear if successful
  7543.         AX destroyed
  7544.         window popped up and was closed by the user
  7545. ----------B37E-------------------------------
  7546. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  7547.     AH = 7Eh
  7548.     DX = zipcode region (0-999)
  7549.     ES:DI -> buffer for name
  7550. Return: CF set on error
  7551.         AL = FFh region does not exist
  7552.     CF clear if successful
  7553.         AL = ZIPKEY state code
  7554.         ES:DI points one byte beyond end of name
  7555. ----------B37F-------------------------------
  7556. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  7557.     AH = 7Fh
  7558.     BL = function
  7559.         00h turn off hotkeys
  7560.         01h turn on hotkeys
  7561.         02h return hotkey status
  7562.         03h toggle hotkey status
  7563. Return: AL = hotkey status
  7564.         00h off
  7565.         01h on
  7566. ----------B380-------------------------------
  7567. INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
  7568.     AH = 80h
  7569.     BX = telephone area code (decimal)
  7570. Return: CF clear if successful
  7571.         AL = ZIPKEY state code
  7572.         DX = first ZIP region for state (03E8h if Canada)
  7573.         CX = number of ZIP regions in state
  7574.     CF set on error
  7575.         AL = FFh
  7576.         DX = 03E9h
  7577. ----------B4---------------------------------
  7578. INT B4 - used by IBM ROM BASIC while in interpreter
  7579. Notes:    called by ROM BASIC
  7580.     BASIC.COM/BASICA.COM do not restore vector on termination
  7581. ----------B5---------------------------------
  7582. INT B5 - used by IBM ROM BASIC while in interpreter
  7583. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7584.     BASIC.COM/BASICA.COM do not restore vector on termination
  7585. ----------B6---------------------------------
  7586. INT B6 - used by IBM ROM BASIC while in interpreter
  7587. Notes:    called by ROM BASIC
  7588.     BASIC.COM/BASICA.COM do not restore vector on termination
  7589. ----------B7---------------------------------
  7590. INT B7 - used by IBM ROM BASIC while in interpreter
  7591. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7592.     BASIC.COM/BASICA.COM do not restore vector on termination
  7593. ----------B8---------------------------------
  7594. INT B8 - used by IBM ROM BASIC while in interpreter
  7595. Notes:    called by ROM BASIC
  7596.     BASIC.COM/BASICA.COM do not restore vector on termination
  7597. ----------B9---------------------------------
  7598. INT B9 - used by IBM ROM BASIC while in interpreter
  7599. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7600.     BASIC.COM/BASICA.COM do not restore vector on termination
  7601. ----------BA---------------------------------
  7602. INT BA - used by IBM ROM BASIC while in interpreter
  7603. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7604.     BASIC.COM/BASICA.COM do not restore vector on termination
  7605. ----------BB---------------------------------
  7606. INT BB - used by IBM ROM BASIC while in interpreter
  7607. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7608.     BASIC.COM/BASICA.COM do not restore vector on termination
  7609. ----------BC---------------------------------
  7610. INT BC - used by IBM ROM BASIC while in interpreter
  7611. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7612.     BASIC.COM/BASICA.COM do not restore vector on termination
  7613. ----------BD---------------------------------
  7614. INT BD - used by IBM ROM BASIC while in interpreter
  7615. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7616.     BASIC.COM/BASICA.COM do not restore vector on termination
  7617. ----------BE---------------------------------
  7618. INT BE - used by IBM ROM BASIC while in interpreter
  7619. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7620.     BASIC.COM/BASICA.COM do not restore vector on termination
  7621. ----------BF---------------------------------
  7622. INT BF - used by IBM ROM BASIC while in interpreter
  7623. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7624.     BASIC.COM/BASICA.COM do not restore vector on termination
  7625. ----------C0---------------------------------
  7626. INT C0 - used by IBM ROM BASIC while in interpreter
  7627. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7628.     BASIC.COM/BASICA.COM do not restore vector on termination
  7629. ----------C1---------------------------------
  7630. INT C1 - used by IBM ROM BASIC while in interpreter
  7631. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7632.     BASIC.COM/BASICA.COM do not restore vector on termination
  7633. ----------C2---------------------------------
  7634. INT C2 - used by IBM ROM BASIC while in interpreter
  7635. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7636.     BASIC.COM/BASICA.COM do not restore vector on termination
  7637. ----------C3---------------------------------
  7638. INT C3 - used by IBM ROM BASIC while in interpreter
  7639. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7640.     BASIC.COM/BASICA.COM do not restore vector on termination
  7641. ----------C4---------------------------------
  7642. INT C4 - used by IBM ROM BASIC while in interpreter
  7643. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7644.     BASIC.COM/BASICA.COM do not restore vector on termination
  7645. ----------C5---------------------------------
  7646. INT C5 - used by IBM ROM BASIC while in interpreter
  7647. Notes:    called by ROM BASIC
  7648.     BASIC.COM/BASICA.COM do not restore vector on termination
  7649. ----------C6---------------------------------
  7650. INT C6 - used by IBM ROM BASIC while in interpreter
  7651. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7652.     BASIC.COM/BASICA.COM do not restore vector on termination
  7653. ----------C6---------------------------------
  7654. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  7655. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7656.       the older interrupts
  7657. ----------C7---------------------------------
  7658. INT C7 - used by IBM ROM BASIC while in interpreter
  7659. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7660.     BASIC.COM/BASICA.COM do not restore vector on termination
  7661. ----------C7---------------------------------
  7662. INT C7 - APL*PLUS/PC - ???
  7663. ----------C8---------------------------------
  7664. INT C8 - used by IBM ROM BASIC while in interpreter
  7665. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7666.     BASIC.COM/BASICA.COM do not restore vector on termination
  7667. ----------C8---------------------------------
  7668. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  7669. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7670.       the older interrupts
  7671. SeeAlso: INT 88"APL"
  7672. ----------C9---------------------------------
  7673. INT C9 - used by IBM ROM BASIC while in interpreter
  7674. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7675.     BASIC.COM/BASICA.COM do not restore vector on termination
  7676. ----------C9---------------------------------
  7677. INT C9 - APL*PLUS/PC - ???
  7678. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7679.       the older interrupts
  7680. ----------CA---------------------------------
  7681. INT CA - used by IBM ROM BASIC while in interpreter
  7682. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7683.     BASIC.COM/BASICA.COM do not restore vector on termination
  7684. ----------CA---------------------------------
  7685. INT CA - APL*PLUS/PC - PRINT SCREEN
  7686. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7687.       the older interrupts
  7688. SeeAlso: INT 8A"APL"
  7689. ----------CB---------------------------------
  7690. INT CB - used by IBM ROM BASIC while in interpreter
  7691. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7692.     BASIC.COM/BASICA.COM do not restore vector on termination
  7693. ----------CB---------------------------------
  7694. INT CB - APL*PLUS/PC - BEEP
  7695. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7696.       the older interrupts
  7697.     same as printing a ^G via INT 21/AH=02h
  7698. SeeAlso: INT 8B"APL"
  7699. ----------CC---------------------------------
  7700. INT CC - used by IBM ROM BASIC while in interpreter
  7701. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7702.     BASIC.COM/BASICA.COM do not restore vector on termination
  7703. ----------CC---------------------------------
  7704. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  7705.     AX = flag
  7706.         0000h do not save display attributes
  7707.         0001h save attributes
  7708. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7709.       the older interrupts
  7710. SeeAlso: INT 8C"APL"
  7711. ----------CD---------------------------------
  7712. INT CD - used by IBM ROM BASIC while in interpreter
  7713. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7714.     BASIC.COM/BASICA.COM do not restore vector on termination
  7715. ----------CD---------------------------------
  7716. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7717. ----------CE---------------------------------
  7718. INT CE - used by IBM ROM BASIC while in interpreter
  7719. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7720.     BASIC.COM/BASICA.COM do not restore vector on termination
  7721. ----------CE---------------------------------
  7722. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7723. ----------CF---------------------------------
  7724. INT CF - used by IBM ROM BASIC while in interpreter
  7725. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7726.     BASIC.COM/BASICA.COM do not restore vector on termination
  7727. ----------CF---------------------------------
  7728. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  7729. ----------D0---------------------------------
  7730. INT D0 - used by IBM ROM BASIC while in interpreter
  7731. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7732.     BASIC.COM/BASICA.COM do not restore vector on termination
  7733. ----------D0---------------------------------
  7734. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7735. ----------D1---------------------------------
  7736. INT D1 - used by IBM ROM BASIC while in interpreter
  7737. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7738.     BASIC.COM/BASICA.COM do not restore vector on termination
  7739. ----------D1---------------------------------
  7740. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7741. ----------D2---------------------------------
  7742. INT D2 - used by IBM ROM BASIC while in interpreter
  7743. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7744.     BASIC.COM/BASICA.COM do not restore vector on termination
  7745. ----------D2---------------------------------
  7746. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7747. ----------D3---------------------------------
  7748. INT D3 - used by IBM ROM BASIC while in interpreter
  7749. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7750.     BASIC.COM/BASICA.COM do not restore vector on termination
  7751. ----------D3---------------------------------
  7752. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7753. ----------D4---------------------------------
  7754. INT D4 - used by IBM ROM BASIC while in interpreter
  7755. Notes:    called by ROM BASIC
  7756.     BASIC.COM/BASICA.COM do not restore vector on termination
  7757. ----------D4---------------------------------
  7758. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7759. ----------D4---------------------------------
  7760. INT D4 - PC-MOS/386 - API
  7761. ----------D5---------------------------------
  7762. INT D5 - used by IBM ROM BASIC while in interpreter
  7763. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7764.     BASIC.COM/BASICA.COM do not restore vector on termination
  7765. ----------D5---------------------------------
  7766. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7767. ----------D6---------------------------------
  7768. INT D6 - used by IBM ROM BASIC while in interpreter
  7769. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7770.     BASIC.COM/BASICA.COM do not restore vector on termination
  7771. ----------D6---------------------------------
  7772. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7773. ----------D7---------------------------------
  7774. INT D7 - used by IBM ROM BASIC while in interpreter
  7775. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7776.     BASIC.COM/BASICA.COM do not restore vector on termination
  7777. ----------D7---------------------------------
  7778. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7779. ----------D8---------------------------------
  7780. INT D8 - used by IBM ROM BASIC while in interpreter
  7781. Notes:    called by ROM BASIC
  7782.     BASIC.COM/BASICA.COM do not restore vector on termination
  7783. ----------D8---------------------------------
  7784. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7785. ----------D9---------------------------------
  7786. INT D9 - used by IBM ROM BASIC while in interpreter
  7787. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7788.     BASIC.COM/BASICA.COM do not restore vector on termination
  7789. ----------D9---------------------------------
  7790. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7791. ----------DA---------------------------------
  7792. INT DA - used by IBM ROM BASIC while in interpreter
  7793. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7794.     BASIC.COM/BASICA.COM do not restore vector on termination
  7795. ----------DA---------------------------------
  7796. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7797. ----------DB---------------------------------
  7798. INT DB - used by IBM ROM BASIC while in interpreter
  7799. Notes:    called by ROM BASIC
  7800.     BASIC.COM/BASICA.COM do not restore vector on termination
  7801. ----------DB---------------------------------
  7802. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7803. ----------DC---------------------------------
  7804. INT DC - PC/370 v4.1- - API
  7805. SeeAlso: INT 60"PC/370"
  7806. ----------DC---------------------------------
  7807. INT DC - used by IBM ROM BASIC while in interpreter
  7808. Notes:    called by ROM BASIC
  7809.     BASIC.COM/BASICA.COM do not restore vector on termination
  7810. ----------DC---------------------------------
  7811. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7812. ----------DD---------------------------------
  7813. INT DD - used by IBM ROM BASIC while in interpreter
  7814. Notes:    called by ROM BASIC
  7815.     BASIC.COM/BASICA.COM do not restore vector on termination
  7816. ----------DD---------------------------------
  7817. INT DD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7818. ----------DE---------------------------------
  7819. INT DE - used by IBM ROM BASIC while in interpreter
  7820. Notes:    called by ROM BASIC
  7821.     BASIC.COM/BASICA.COM do not restore vector on termination
  7822. ----------DE---------------------------------
  7823. INT DE - APL*PLUS/PC - ???
  7824. Note:    appears to be the same as INT 16
  7825. ----------DF---------------------------------
  7826. INT DF - Victor 9000 - SuperBIOS
  7827. ----------DF---------------------------------
  7828. INT DF - used by IBM ROM BASIC while in interpreter
  7829. Notes:    called by ROM BASIC
  7830.     BASIC.COM/BASICA.COM do not restore vector on termination
  7831. ----------DF---------------------------------
  7832. INT DF - APL*PLUS/PC - SAME AS INT 10
  7833. SeeAlso: INT 10
  7834. ----------E0---------------------------------
  7835. INT E0 - CP/M-86 function calls
  7836. ----------E0---------------------------------
  7837. INT E0 - used by IBM ROM BASIC while in interpreter
  7838. Notes:    called by ROM BASIC
  7839.     BASIC.COM/BASICA.COM do not restore vector on termination
  7840. ----------E0---------------------------------
  7841. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  7842. ----------E0---------------------------------
  7843. INT E0 - "Micro-128" virus - ???
  7844. SeeAlso: INT 70"virus"
  7845. ----------E1---------------------------------
  7846. INT E1 - used by IBM ROM BASIC while in interpreter
  7847. Notes:    called by ROM BASIC
  7848.     BASIC.COM/BASICA.COM do not restore vector on termination
  7849. ----------E1---------------------------------
  7850. INT E1 - PC Cluster Disk Server Information
  7851. SeeAlso: INT E2
  7852. ----------E2---------------------------------
  7853. INT E2 - used by IBM ROM BASIC while in interpreter
  7854. Notes:    called by ROM BASIC
  7855.     BASIC.COM/BASICA.COM do not restore vector on termination
  7856. ----------E2---------------------------------
  7857. INT E2 - PC Cluster Program
  7858. ----------E3---------------------------------
  7859. INT E3 - used by IBM ROM BASIC while in interpreter
  7860. Notes:    called by ROM BASIC
  7861.     BASIC.COM/BASICA.COM do not restore vector on termination
  7862. ----------E40005-----------------------------
  7863. INT E4 - Logitech Modula v2.0 - MonitorEntry
  7864.     AX = 0005h
  7865.     BX = priority
  7866. SeeAlso: AX=0006h
  7867. ----------E40006-----------------------------
  7868. INT E4 - Logitech Modula v2.0 - MonitorExit
  7869.     AX = 0006h
  7870. SeeAlso: AX=0005h
  7871. ----------E4---------------------------------
  7872. INT E4 - used by IBM ROM BASIC while in interpreter
  7873. Notes:    called by ROM BASIC
  7874.     BASIC.COM/BASICA.COM do not restore vector on termination
  7875. ----------E5---------------------------------
  7876. INT E5 - used by IBM ROM BASIC while in interpreter
  7877. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7878.     BASIC.COM/BASICA.COM do not restore vector on termination
  7879. ----------E6---------------------------------
  7880. INT E6 - used by IBM ROM BASIC while in interpreter
  7881. Notes:    called by ROM BASIC
  7882.     BASIC.COM/BASICA.COM do not restore vector on termination
  7883. ----------E7---------------------------------
  7884. INT E7 - used by IBM ROM BASIC while in interpreter
  7885. Notes:    called by ROM BASIC
  7886.     BASIC.COM/BASICA.COM do not restore vector on termination
  7887. ----------E8---------------------------------
  7888. INT E8 - used by IBM ROM BASIC while in interpreter
  7889. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7890.     BASIC.COM/BASICA.COM do not restore vector on termination
  7891. ----------E9---------------------------------
  7892. INT E9 - used by IBM ROM BASIC while in interpreter
  7893. Notes:    called by ROM BASIC
  7894.     BASIC.COM/BASICA.COM do not restore vector on termination
  7895. ----------EA---------------------------------
  7896. INT EA - used by IBM ROM BASIC while in interpreter
  7897. Notes:    called by ROM BASIC
  7898.     BASIC.COM/BASICA.COM do not restore vector on termination
  7899. ----------EB---------------------------------
  7900. INT EB - used by IBM ROM BASIC while in interpreter
  7901. Notes:    called by ROM BASIC
  7902.     BASIC.COM/BASICA.COM do not restore vector on termination
  7903. ----------EC---------------------------------
  7904. INT EC - used by IBM ROM BASIC while in interpreter
  7905. Notes:    called by ROM BASIC
  7906.     BASIC.COM/BASICA.COM do not restore vector on termination
  7907. ----------EC---------------------------------
  7908. INT EC - used by Alloy NTNX
  7909. ----------EC---------------------------------
  7910. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  7911.     AX = function number (0000h to 0140h)
  7912.     STACK:    DWORD address to return to
  7913.         any arguments required by function
  7914. Return: STACK:    return address popped, but otherwise unchanged
  7915. Notes:    this is the interface from applications to the runtime system by Exact
  7916.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  7917.       it can provide DLL-style capabilities under MSDOS.
  7918.     the interrupt handler removes the return address and flags placed on
  7919.       the stack by the INT EC, then jumps to the appropriate function
  7920. ----------ED---------------------------------
  7921. INT ED - used by IBM ROM BASIC while in interpreter
  7922. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7923.     BASIC.COM/BASICA.COM do not restore vector on termination
  7924. ----------EE---------------------------------
  7925. INT EE - used by IBM ROM BASIC while in interpreter
  7926. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7927.     BASIC.COM/BASICA.COM do not restore vector on termination
  7928. ----------EF---------------------------------
  7929. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  7930. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  7931. SeeAlso: INT F0"BASIC"
  7932. ----------EF----CX0473-----------------------
  7933. INT EF - GEM - INTERFACE
  7934.     CX = 0473h
  7935.     DS:DX -> GEM parameter block
  7936. ----------F0---------------------------------
  7937. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  7938. Note:    BASICA.COM does not restore vector on termination
  7939. SeeAlso: INT EF"BASIC"
  7940. ----------F1---------------------------------
  7941. INT F1 - reserved for user interrupt
  7942. ----------F1---------------------------------
  7943. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  7944.     DS:BX -> '$'-terminated text string
  7945. Note:    SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  7946. ----------F1---------------------------------
  7947. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  7948. ----------F2---------------------------------
  7949. INT F2 - reserved for user interrupt
  7950. ----------F2---------------------------------
  7951. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  7952. ----------F3---------------------------------
  7953. INT F3 - reserved for user interrupt
  7954. ----------F4---------------------------------
  7955. INT F4 - reserved for user interrupt
  7956. ----------F4---------------------------------
  7957. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  7958. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
  7959. ----------F5---------------------------------
  7960. INT F5 - reserved for user interrupt
  7961. ----------F5---------------------------------
  7962. INT F5 - DoubleDOS - ???
  7963. ----------F6---------------------------------
  7964. INT F6 - reserved for user interrupt
  7965. ----------F6---------------------------------
  7966. INT F6 - DoubleDOS - ???
  7967. ----------F7---------------------------------
  7968. INT F7 - reserved for user interrupt
  7969. ----------F7---------------------------------
  7970. INT F7 - DoubleDOS - ???
  7971. ----------F8---------------------------------
  7972. INT F8 - 10 ms INTERVAL TIMER (TANDY???)
  7973. ----------F8---------------------------------
  7974. INT F8 - DoubleDOS - ???
  7975. ----------F9---------------------------------
  7976. INT F9 - reserved for user interrupt
  7977. ----------F9---------------------------------
  7978. INT F9 - DoubleDOS - ???
  7979. ----------FA---------------------------------
  7980. INT FA - USART READY (RS-232C) (TANDY???)
  7981. ----------FA---------------------------------
  7982. INT FA - DoubleDOS - TURN OFF TIMESHARING
  7983. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  7984. ----------FB---------------------------------
  7985. INT FB - USART Rx READY (keyboard) (TANDY???)
  7986. ----------FB---------------------------------
  7987. INT FB - DoubleDOS - TURN ON TIMESHARING
  7988. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  7989. ----------FC---------------------------------
  7990. INT FC - reserved for user interrupt
  7991. ----------FC---------------------------------
  7992. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  7993. Return: ES = segment of display buffer
  7994. Note:    the display buffer may be moved if multitasking is enabled
  7995. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  7996. ----------FD---------------------------------
  7997. INT FD - reserved for user interrupt
  7998. ----------FD---------------------------------
  7999. INT FD - DoubleDOS - ???
  8000. ----------FE---------------------------------
  8001. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  8002. ----------FE---------------------------------
  8003. INT FE - DoubleDOS - GIVE UP TIME
  8004.     AL = number of 55ms time slices to give away
  8005. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  8006. ----------FF---------------------------------
  8007. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  8008. ----------FF---------------------------------
  8009. INT FF - Z100 - WARM BOOT
  8010. ---------------------------------------------
  8011. Please redistribute the following files unmodified as a group, in a pair of
  8012. archives named INTER27A and INTER27B (preferably the original authenticated
  8013. PKZIP archives):
  8014.     INTERRUP.1ST    the read-me file, containing credits, availability info
  8015.     INTERRUP.A    INT 00 through INT 14
  8016.     INTERRUP.B    INT 15 through INT 1F
  8017.     INTERRUP.C    INT 20 through INT 2E
  8018.     INTERRUP.D    INT 2F through INT 5F
  8019.     INTERRUP.E    INT 60 through INT FF
  8020.     INTERRUP.PRI    a brief introduction to interrupts
  8021.     INTPRINT.COM    a simple formatter that also generates a list summary
  8022.     INTPRINT.DOC    instructions for INTPRINT
  8023.     INTPRINT.C    source code for INTPRINT
  8024.     MEMORY.LST    format of the BIOS data area
  8025.     INT2QH.*    program to convert list into QuickHelp database
  8026.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  8027. This compilation is Copyright (c) 1989, 1990, 1991 Ralf Brown
  8028. ---------------------------------------------
  8029. ARPA: ralf@cs.cmu.edu
  8030. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  8031. BIT:  ralf%cs.cmu.edu@cmuccvma
  8032. FIDO: Ralf Brown 1:129/26.1
  8033.     or post a message to me in the DR_DEBUG echo
  8034. CIS:  >INTERNET:ralf@cs.cmu.edu
  8035.