home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / maj / 4266 / interrup.j < prev    next >
Text File  |  1994-06-05  |  358KB  |  9,420 lines

  1. Interrupt List, part 10 of 11
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------*-61---------------------------------
  4. INT 61 - reserved for user interrupt
  5. --------b-61---------------------------------
  6. INT 61 - Atari Portfolio - EXTENDED BIOS
  7. Desc:    provides subfunctions such as turning off the machine, accessing
  8.       internal variables, and mapping memory cards
  9. SeeAlso: INT 60"Atari"
  10. --------b-61---------------------------------
  11. INT 61 - HP 95LX System Manager - LOAD DS
  12. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  13. --------r-61---------------------------------
  14. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  15. SeeAlso: INT 60"JPI"
  16. --------d-61---------------------------------
  17. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  18. Desc:    this vector stores the second four bytes of the parameter table for
  19.       hard disk 0
  20. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  21. --------I-61---------------------------------
  22. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  23.     BX:DX -> control block
  24. SeeAlso: INT 67"Sangoma"
  25. --------v-61---------------------------------
  26. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  27. Note:    the virus copies the original INT 21h vector into INT 61h
  28. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  29. --------N-61---------------------------------
  30. INT 61 - TCPOpen kernel - API
  31.     ES:BX -> request packet (see #1742)
  32. Program: TCPOpen is a TCP/IP protocol stack by Lanera
  33. Range:    INT 60 to INT 7F, selected by configuration file
  34. Note:    there does not appear to be an installation check, though function
  35.       FFFFh can be used to verify that the software is indeed functioning
  36.  
  37. Format of TCPOpen request packet:
  38. Offset    Size    Description    (Table 1742)
  39.  00h  8 BYTEs    ???
  40.  08h    WORD    function number (0000h-001Ah or FFF9h-FFFFh)
  41.  0Ah    WORD    ???
  42.  0Ch  2 BYTEs    ???
  43.  0Eh    WORD    (return) return code
  44.  10h  2 BYTEs    ???
  45.  12h    WORD    ???
  46.  14h    WORD    (return) 0001h if requested function complete
  47.  16h    WORD    (return) ???
  48.  18h  6 BYTEs    ???
  49.  1Eh    DWORD    -> ???
  50.  22h    WORD    ??? or 0000h
  51.  24h    WORD    (return) ???
  52.  
  53. (Table 1743)
  54. Call TCPOpen Function FFFFh: installation verification
  55. Return: offset 10h = BEEFh
  56.     offset 14h = 0001h
  57.     offset 24h = ???
  58. Index:    installation check;TCPOpen kernel
  59. --------N-61---------------------------------
  60. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  61.     AH = system call number (see also entries below)
  62.         01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
  63.         02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
  64. Return: CF clear if successful
  65.     CF set on error
  66.         AL = basic error (see #1744)
  67.         AH = suberror number (see #1745,#1746)
  68. Range:    INT 20h to INT E0h, selected by configuration
  69. Notes:    the installation check consists of testing for the signature "TCPTSR"
  70.       three bytes beyond the start of the interrupt handler
  71. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  72.       greater than 54h in AH may crash the system.    Other kernels may have
  73.       this bug as well.
  74. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  75. Index:    installation check;PC/TCP
  76.  
  77. (Table 1744)
  78. Values for PC/TCP error code:
  79.  00h "NET_NOERR" successful
  80.  01h "NET_ERR_INUSE" protocol or socket already in use
  81.  02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
  82.  03h "NET_ERR_NOMEM" out of memory
  83.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  84.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  85.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  86.  07h "NET_ERR_NOHOST" no host bound to specified connection
  87.  08h "NET_ERR_CANTOPEN" unable to open file
  88.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  89.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see subcodes below)
  90.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  91.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  92.  0Dh "NET_ERR_TIMEOUT" operation timed out
  93.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  94.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  95.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  96.     Subcodes: 0= no error, 1 = Host unreachable
  97.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  98.             is zero
  99.  12h "NET_ERR_BADARG" invalid argument
  100.  13h "NET_ERR_EOF" foreign host closed its end of connection
  101.  14h "NET_ERR_RESET" connection has been reset
  102.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  103.             with no data available
  104.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  105.  17h "NET_ERR_NODESC" could not allocate network descriptor
  106.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  107.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  108.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  109.  1Bh kernel busy, try again later
  110.  1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
  111.     (see subcodes below)
  112. ---v2.1+---
  113.  1Dh "NET_ERR_TERMINATING" internal kernel fatal error
  114.  1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
  115.  1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
  116.  20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
  117.  21h "NET_ERR_EMM" expanded memory error
  118.  22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
  119.  23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
  120.  24h "NET_ERR_NOQIOS" ran out of resources; try again later
  121.  25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
  122.  
  123. (Table 1745)
  124. Values for subcodes of PC/TCP error 0Ah "NET_ERR_HOST_UNREACHABLE":
  125.  00h    no error
  126.  01h    host unreachable
  127.  02h    ARP failed
  128.  03h    hardware failure
  129.  04h    link failure
  130.  05h    no route
  131.  06h    gateway down
  132.  
  133. (Table 1746)
  134. Values for subcodes of PC/TCP error 1Ch "NET_ERR_ICMPMESG":
  135.  07h    unrecognised
  136.  08h    can't fragment
  137.  09h    srcr_fail
  138.  0Ah    source quench
  139.  0Bh    time exceeded
  140.  0Ch    parameter problem
  141.  0Dh    admin_prohib. see also code 0Ah
  142. --------N-6100-------------------------------
  143. INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
  144.     AH = 00h
  145.     DS:SI -> 216-byte buffer for network debugging information (see #1747)
  146. Return: CF clear
  147.     AX = 0000h
  148.     buffer filled
  149. Notes:    this call is not documented by FTP, Inc. for any version
  150.     most of the information returned by this call is available via the
  151.       documented get_kernel_info or net_info commands.
  152.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  153. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  154.  
  155. Format of network debugging information:
  156. Offset    Size    Description    (Table 1747)
  157.  00h    DWORD    number of interrupts
  158.  04h    DWORD    receive buffer low-water mark
  159.  08h    DWORD    transmit buffer low-water mark
  160.  0Ch    DWORD    number of packets received
  161.  10h    DWORD    number of packets transmitted
  162.  14h    DWORD    total receive errors
  163.  18h    DWORD    total transmit errors
  164.  1Ch  4 BYTEs    ???
  165.  20h    DWORD    receive resets
  166.  24h    DWORD    transmit resets
  167.  28h    DWORD    number of "runts" received
  168.  2Ch    DWORD    number of alignment errors on received packets
  169.  30h    DWORD    number of CRC errors on received packets
  170.  34h    DWORD    number of parity errors on received packets
  171.  38h    DWORD    number of receive overflow errors
  172.  3Ch    DWORD    number of oversized packets received
  173.  40h    DWORD    number of packets lost due to lack of buffers
  174.  44h    DWORD    receive timeouts
  175.  48h 32 BYTEs    ???
  176.  68h    DWORD    number of transmit collisions
  177.  6Ch    DWORD    number of transmit timeouts
  178.  70h    DWORD    number of transmit underflows
  179.  74h    DWORD    number of lost "crs" on transmit
  180.  78h    DWORD    number of times heartbeat failed on transmit
  181.  7Ch 24 BYTEs    ???
  182.  94h    WORD    free packet buffers
  183.  96h    WORD    total packet buffers
  184.  98h    WORD    minimum number of packet buffers free since kernel started
  185.  9Ah 24 BYTEs    ???
  186.  B2h    DWORD    pointer to TCP connection list???
  187.  B6h    DWORD    pointer to IP routing table???
  188.  BAh 30 BYTEs    ???
  189. --------V-610000-----------------------------
  190. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
  191.     AX = 0000h
  192.     BX = zoom factor (0-7)
  193. Desc:    zooms the display based on the given zoom factor
  194. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  195.       obtained by calling INT 16/AH=FFh
  196.     not all vendors include the Tseng TSR which supports these functions
  197. SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  198. SeeAlso: INT 16/AH=FFh"OPTIMA"
  199. --------N-610001SF0001-----------------------
  200. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  201.     AX = 0001h subfn 0001h
  202.     DS:DX -> communications control block (function 0001h)
  203. Return: AX = status (0000h-0002h,0098h,009Eh-00A2h) (see #1748)
  204. Range:    INT 60h to INT 66h
  205. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  206.       the four bytes immediately preceding the interrupt handler
  207. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
  208.  
  209. (Table 1748)
  210. Values for VINES status:
  211.  0000h    successful
  212.  0001h    service not installed
  213.  0002h    invalid service ID
  214.  0098h    resource already in use
  215.  0003h-000Ah reserved for BANV interface errors
  216.  0097h    invalid socket identifier
  217.  009Bh    destination node unreachable
  218.  009Ch    message overflow
  219.  009Dh    destination socket nonexistent
  220.  009Eh    address family does not exist
  221.  009Fh    socket type does not exist
  222.  00A0h    protocol does not exist
  223.  00A1h    no more sockets available
  224.  00A2h    no more buffer space available
  225.  00A3h    timeout
  226.  00A5h    resource not available
  227.  00A6h    internal communication failure
  228.  00B1h    resource disconnect
  229.  
  230. Format of VINES control block to open socket:
  231. Offset    Size    Description    (Table 1749)
  232.  00h    WORD    0001h
  233.  02h    WORD    pointer to argument block
  234.  04h    WORD    error return code
  235.  06h  4 BYTEs    reserved
  236.  
  237. Format of VINES argument block for opening socket:
  238. Offset    Size    Description    (Table 1750)
  239.  00h    WORD    pointer to 2-byte buffer for socket identifier
  240.  02h    WORD    address family
  241.         0003h Banyan
  242.  04h    WORD    socket type
  243.         in address family 0003h
  244.             0001h IPC socket
  245.             0002h SPP socket
  246.  06h    WORD    protocol number
  247.         FFFFh default
  248.  08h    WORD    pointer to 16-byte buffer for socket address
  249.  0Ah    WORD    local port number
  250.         0000h if service should assign transient port number
  251.         0001h to 01FFh well-known port number (assigned by Banyan)
  252.  
  253. Format of IPC port:
  254. Offset    Size    Description    (Table 1751)
  255.  00h    WORD    address family (always 0003h for Banyan ports)
  256.  04h  4 BYTEs    network number (server's serial number)
  257.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  258.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  259.  0Ah    BYTE    hop count
  260.  0Bh  5 BYTEs    filler
  261. --------N-610001SF0002-----------------------
  262. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  263.     AX = 0001h subfn 0002h
  264.     DS:DX -> communications control block (function 0002h) (see #1752)
  265. Return: AX = status (0000h-0002h,0097h,009Bh-009Dh,00A2h,00A3h,00B1h)
  266.         (see #1748)
  267. Range:    INT 60h to INT 66h
  268. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  269.       the four bytes immediately preceding the interrupt handler
  270. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
  271.  
  272. Format of VINES control block for subfunction 0002h:
  273. Offset    Size    Description    (Table 1752)
  274.  00h    WORD    0002h
  275.  02h    WORD    pointer to argument block (see #1753)
  276.  04h    WORD    error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
  277.         (see #1748)
  278.  06h  4 BYTEs    reserved
  279.  
  280. Format of VINES argument block for subfunction 0002h:
  281. Offset    Size    Description    (Table 1753)
  282.  00h    WORD    routine metric
  283.  02h    WORD    error return code
  284.  04h    WORD    socket identifier
  285.  06h    WORD    pointer to send buffer (see #1755)
  286.  08h    WORD    length of send buffer
  287.  0Ah    WORD    message request flags (see #1754)
  288.  0Ch 16 BYTEs    socket address (see #1756)
  289.  1Ch    WORD    timeout value in multiples of 200ms
  290.  1Eh    WORD    connection identifier
  291.  20h    WORD    type of request
  292.         0001h send message
  293.         0002h establish a virtual connection
  294.         0003h terminate a virtual connection
  295.  
  296. Bitfields for message request flags:
  297. Bit(s)    Description    (Table 1754)
  298.  0    async request
  299.  1    reliable message
  300.  2    flush receive buffer on overflow
  301.  3    end of user message received
  302.  4    vectored request (if set, send buffer contains buffer descriptors)
  303.  5    connection-specific receive
  304.  6    change to connection-specific receive mode
  305.  
  306. Format of buffer descriptor:
  307. Offset    Size    Description    (Table 1755)
  308.  00h    WORD    data segment
  309.  02h    WORD    buffer pointer
  310.  04h    WORD    buffer length
  311.  06h    WORD    character count
  312.  
  313. Format of VINES socket address for unreliable datagrams:
  314. Offset    Size    Description    (Table 1756)
  315.  00h    WORD    0003h      address family
  316.  02h    DWORD    FFFFFFFFh network number
  317.  06h    WORD    FFFFh      subnet number
  318.  08h    WORD          local port number
  319.  0Ah    BYTE    00h-0Fh      hop count
  320.  0Bh  5 BYTEs    0000h      filler
  321. --------N-610001SF0003-----------------------
  322. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  323.     AX = 0001h subfn 0003h
  324.     DS:DX -> communications control block (function 0003h) (see #1757)
  325. Return: AX = status (00-0Ah,97h,A2h,A3h) (see #1748)
  326. Range:    INT 60h to INT 66h
  327. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  328.       the four bytes immediately preceding the interrupt handler
  329. SeeAlso: AX=0001h/SF=0002h
  330.  
  331. Format of VINES control block for subfunction 0003h:
  332. Offset    Size    Description    (Table 1757)
  333.  00h    WORD    0003h
  334.  02h    WORD    pointer to argument block (see #1758)
  335.  04h    WORD    error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
  336.         (see #1748)
  337.  06h  4 BYTEs    reserved
  338.  
  339. Format of VINES argument block for subfunction 0003h:
  340. Offset    Size    Description    (Table 1758)
  341.  00h    WORD    character count
  342.  02h    WORD    error return code
  343.  04h    WORD    socket identifier
  344.  06h    WORD    pointer to receive buffer
  345.  08h    WORD    length of receive buffer
  346.  0Ah    WORD    message request flags (see #1754)
  347.  0Ch 16 BYTEs    socket address
  348.  1Ch    WORD    timeout value in multiples of 200ms
  349.  1Eh    WORD    connection identifier
  350.  20h    WORD    type of response
  351.         0001h message received
  352.         0002h virtual connection established
  353.         0003h virtual connection terminated
  354.  
  355. Format of buffer descriptor:
  356. Offset    Size    Description    (Table 1759)
  357.  00h    WORD    data segment
  358.  02h    WORD    buffer pointer
  359.  04h    WORD    buffer length
  360.  06h    WORD    character count
  361. --------N-610001SF0004-----------------------
  362. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  363.     AX = 0001h subfn 0004h
  364.     DS:DX -> communications control block (function 0004h)
  365. Return: AX = status (0000h-000Ah,0097h) (see #1748)
  366. Range:    INT 60h to INT 66h
  367. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  368.       the four bytes immediately preceding the interrupt handler
  369. SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
  370.  
  371. Format of VINES control block to close socket:
  372. Offset    Size    Description    (Table 1760)
  373.  00h    WORD    0004h
  374.  02h    WORD    pointer to argument block (see #1761)
  375.  04h    WORD    error return code (see #1748)
  376.  06h  4 BYTEs    reserved
  377.  
  378. Format of VINES argument block for closing socket:
  379. Offset    Size    Description    (Table 1761)
  380.  00h    WORD    socket identifier
  381. --------N-610001SF0005-----------------------
  382. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  383.     AX = 0001h subfn 0005h
  384.     DS:DX -> communications control block (see #1763)
  385. Return: AX = status (0000h-000Ah,00A2h,00A3h) (see #1762)
  386. Range:    INT 60h to INT 66h
  387. Notes:    The Banyan interrupt handler is identified by the string "BANV" in
  388.       the four bytes immediately preceding the interrupt handler
  389.     returns results for all asynchronous operations invoked from the
  390.       data segment used for this call
  391. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
  392.  
  393. (Table 1762)
  394. Values for VINES function status:
  395.  0000h    successful
  396.  0001h    service not installed
  397.  0002h    invalid service ID
  398.  0003h-000Ah reserved for BANV interface errors
  399.  00A2h    no more buffer space available
  400.  00A3h    timeout event
  401.  
  402. Format of VINES control block for subfunction 0005h:
  403. Offset    Size    Description    (Table 1763)
  404.  00h    WORD    0005h
  405.  02h    WORD    pointer to argument block (see #1764)
  406.  04h    WORD    error return code
  407.  06h  4 BYTEs    reserved
  408.  
  409. Format of VINES argument block for subfunction 0005h:
  410. Offset    Size    Description    (Table 1764)
  411.  00h    WORD    pointer to WORD event pointer
  412.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  413. --------N-610001SF0008-----------------------
  414. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  415.     AX = 0001h subfn 0008h
  416.     DS:DX -> communications control block (function 0008h)
  417. Return: AX = status
  418.         0000h  successful
  419.         00A2h  no more buffer space available
  420. Range:    INT 60h to INT 66h
  421. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  422.       the four bytes immediately preceding the interrupt handler
  423. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
  424.  
  425. Format of VINES control block for subfunction 0006h:
  426. Offset    Size    Description    (Table 1765)
  427.  00h    WORD    0008h
  428.  02h    WORD    process type
  429.         0001h transient process
  430.         0002h resident process
  431.  04h    WORD    error return code
  432.  06h  4 BYTEs    reserved
  433. --------N-610001SF000B-----------------------
  434. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  435.     AX = 0001h subfn 000Bh
  436.     DS:DX -> communications control block (function 000Bh) (see #1766)
  437. Return: AX = status (00h-0Ah,A2h) (see #1762)
  438. Range:    INT 60h to INT 66h
  439. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  440.       the four bytes immediately preceding the interrupt handler
  441. SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
  442.  
  443. Format of VINES control block for subfunction 000Bh:
  444. Offset    Size    Description    (Table 1766)
  445.  00h    WORD    000Bh
  446.  02h    WORD    pointer to argument block (see #1767)
  447.  04h    WORD    error return code (see #1748)
  448.  06h  2 BYTEs    reserved
  449.  08h    WORD    user CS register
  450.  
  451. Format of VINES argument block for subfunction 000Bh:
  452. Offset    Size    Description    (Table 1767)
  453.  00h    WORD    pointer to user interrupt function (see #1768)
  454.  02h    WORD    pointer to user stack
  455.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  456.  
  457. (Table 1768)
  458. Values FAR user function is invoked with:
  459.     SS = DS = ES = segment of control block
  460.     STACK:    DWORD    return address
  461.         WORD    argument pointer (sosend or sorec argument block)
  462.         WORD    error return code
  463.             0000h argument pointer is valid
  464.             00A3h timeout
  465. --------V-610001-----------------------------
  466. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
  467.     AX = 0001h
  468.     BX = X coordinate to center
  469.     CX = Y coordinate to center
  470. Desc:    Positions the zoom window such that the specified window-relative
  471.       coordinates appear as close as possible to the center of the
  472.       display.  Useful for scrolling and panning.
  473. Range:    unknown
  474. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  475.       obtained by calling INT 16/AH=FFh
  476.     not all vendors include the Tseng TSR which supports these functions
  477. SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  478. SeeAlso: INT 16/AH=FFh"OPTIMA"
  479. --------I-610002-----------------------------
  480. INT 61 - Banyan VINES - 3270 INTERFACE
  481.     AX = 0002h
  482.     BH = function number (see #1769)
  483.     DS:CX -> argument block (except BH=00h,1Ah)
  484. Return: AX = status (see #1770)
  485. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  486.       which is loaded first.  The other interface will use AX=000Ah
  487.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  488.       or 3270/BSC resident driver, which must be reloaded by the user
  489.  
  490. (Table 1769)
  491. Values for VINES 3270 interface function number:
  492.  00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  493.  02h "pi2bsc"     (3270/BSC only)
  494.  03h "pi2get"    get information stored in 3270 resident driver
  495.  04h "pi2put"    store information in 3270 resident driver
  496.  05h "pi2gcur"   get current screen position
  497.  07h "pi2sdat"   send data keystroke
  498.  08h "pi2scom"   send command keystroke
  499.  0Ah "pi2field"  get field info for arbitrary screen positions
  500.  0Fh "pi2stat"   get logical unit/device status
  501.  12h "pi2nlus"   determine logical unit/device assignment
  502.  13h "pi2gate"   specifies comm port address to gateway service
  503.  14h "pi2attach" attach a logical unit/device
  504.  15h "pi2sdev"   save logical unit/device info in resident driver
  505.         (not supported in >3.0)
  506.  16h "pi2gdev"   get device information (not supported in >3.0)
  507.  17h "pi2luinfo" get info about specific logical unit/device
  508.  18h "pi2gerr"   get finer error detail
  509.  19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  510.  1Ah "pi2shut"   release memory-resident module
  511.  1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  512.  1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  513.  
  514. (Table 1770)
  515. Values for VINES 3270 status:
  516.  0000h    successful
  517.  000Bh    invalid parameter or data does not fit data area
  518.  000Ch    another code path currently active in resident driver
  519.  000Dh    operation currently not allowed
  520.  0032h    encountered connection disconnect error
  521.  0033h    encountered "sosend" completion error
  522.  0034h    encountered "sosend" communication error
  523.  0035h    attach request refused.    extended error info via "pi2gerr":
  524.     01h resource unavailable
  525.     02h invalid type
  526.     03h version mismatch
  527.     04h invalid logical unit number
  528.     05h error during ARL processing
  529.     06h no access for user
  530.  0071h    encountered "sosock" error
  531.  0072h    encountered unrecognizable error
  532.  0073h    encountered "sowait" error (extended info via "pi2gerr")
  533.  0074h    encountered invalid type-of-request on "sowait"
  534.  0075h    encountered "sorec" error (extended info via "pi2gerr")
  535.  0076h    encountered "sorec" completion error (ext info via "pi2gerr")
  536.  0077h    encountered connection request
  537.  0078h    encountered unrecognizable data
  538.  0079h    encountered unknown connection ID (ext info via "pi2gerr")
  539.  
  540. Format of argument block for BH=03h,04h:
  541. Offset    Size    Description    (Table 1771)
  542.  00h    WORD    size of data area (max 256)
  543.  02h  N BYTEs    data area
  544.  
  545. Format of argument block for BH=05h:
  546. Offset    Size    Description    (Table 1772)
  547.  00h    WORD    logical unit/device number
  548.  02h    WORD    pointer to WORD buffer for cursor index
  549.  04h    WORD    pointer to BYTE buffer for current field attribute
  550.  
  551. Format of argument block for BH=07h:
  552. Offset    Size    Description    (Table 1773)
  553.  00h    WORD    logical unit/device number
  554.  02h    WORD    ASCII data byte
  555.  04h    WORD    pointer to WORD count of characters which will need updating
  556.  
  557. Format of argument block for BH=08h:
  558. Offset    Size    Description    (Table 1774)
  559.  00h    WORD    logical unit/device number
  560.  02h    WORD    3270 keystroke (see #1775)
  561.  
  562. (Table 1775)
  563. Values for 3270 keystroke:
  564.  0000h    Enter
  565.  0001h    Clear
  566.  0002h    PA1
  567.  0003h    PA2
  568.  0004h    PA3
  569.  0005h    PF1
  570.  ...
  571.  001Ch    PF24
  572.  001Dh    CSELECT (cursor select)
  573.  001Eh    Insert
  574.  001Fh    Delete
  575.  0020h    EOField
  576.  0021h    EINPUT (erase input)
  577.  0022h    Reset
  578.  0023h    Attention
  579.  0024h    SysReq
  580.  0025h    Duplicate
  581.  0026h    Fieldmark
  582.  0027h    Home
  583.  0028h    NextLine
  584.  0029h    Tab
  585.  002Ah    BackTab
  586.  002Bh    cursor up
  587.  002Ch    cursor down
  588.  002Dh    cursor right
  589.  002Eh    cursor left
  590.  002Fh    double cursor right
  591.  0030h    double cursor left
  592.  0031h    PRINT
  593.  0032h    CANCEL
  594.  0033h    Backspace    
  595.  
  596. Format of argument block for BH=0Ah:
  597. Offset    Size    Description    (Table 1776)
  598.  00h    WORD    logical unit/device number
  599.  02h    WORD    screen index
  600.  04h    WORD    pointer to WORD buffer for field length
  601.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  602.  
  603. Format of argument block for BH=0Fh:
  604. Offset    Size    Description    (Table 1777)
  605.  00h    WORD    logical unit/device number
  606.  02h    WORD    clear mask (clear these bits of status after returning status)
  607.  04h    WORD    pointer to WORD buffer for device status (see #1778)
  608.  
  609. Bitfields for device status:
  610. Bit(s)    Description    (Table 1778)
  611.  10    status modified
  612.  9    buffer modified
  613.  8    set cursor
  614.  5    sound alarm
  615.  1-0    size of print line for printer logical units
  616.     00  unformatted line
  617.     01  40-character line
  618.     10  64-character line
  619.     11  80-character line
  620.  
  621. Format of argument block for BH=12h:
  622. Offset    Size    Description    (Table 1779)
  623.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  624.  02h    WORD    pointer to WORD buffer for version number
  625.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  626.  
  627. Format of argument block for BH=13h:
  628. Offset    Size    Description    (Table 1780)
  629.  00h 16 BYTEs    communications port address (see #1751)
  630.  
  631. Format of argument block for BH=14h:
  632. Offset    Size    Description    (Table 1781)
  633.  00h    WORD    logical unit/device number
  634.         0000h attach any free device of the specified type
  635.  02h    WORD    logical unit/device type
  636.         (3270/SNA) 01h, 02h, or 03h
  637.         (3270/BSC) 02h display
  638.         (3270/BSC) 03h printer
  639.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  640.  
  641. Format of argument block for BH=16h:
  642. Offset    Size    Description    (Table 1782)
  643.  00h    WORD    pointer to 18-byte buffer for device block (see #1787)
  644.         first WORD must be set to desired logical unit/device number
  645.  
  646. Format of argument block for BH=17h:
  647. Offset    Size    Description    (Table 1783)
  648.  00h    WORD    logical unit/device number
  649.  02h    WORD    pointer to information block in caller's DS (see #1788)
  650.  
  651. Format of argument block for BH=18h:
  652. Offset    Size    Description    (Table 1784)
  653.  00h    WORD    pointer to WORD buffer for major error code
  654.  02h    WORD    pointer to WORD buffer for minor error code
  655.  
  656. Format of argument block for BH=19h:
  657. Offset    Size    Description    (Table 1785)
  658.  00h    WORD    logical unit/device number
  659.  
  660. Format of argument block for BH=1Ch,1Dh:
  661. Offset    Size    Description    (Table 1786)
  662.  00h    WORD    pointer to profile block in caller's DS (see #1791)
  663.  
  664. Format of device block, argument block for BH=15h:
  665. Offset    Size    Description    (Table 1787)
  666.  00h    WORD    logical unit/device number
  667.  02h    WORD    logical unit/device type
  668.  04h    WORD    display model number
  669.  06h    WORD    numeric checking
  670.  08h    WORD    status line
  671.  0Ah    BYTE    unprotected normal field attribute
  672.  0Bh    BYTE    unprotected intensified field attribute
  673.  0Ch    BYTE    protected normal field attribute
  674.  0Dh    BYTE    protected intensified field attribute
  675.  0Eh    WORD    reserved
  676.  10h    WORD    printer port number
  677.  
  678. Format of information block:
  679. Offset    Size    Description    (Table 1788)
  680.  00h    WORD    device model number
  681.  02h    DWORD    screen buffer pointer
  682.  06h    DWORD    status line pointer (see #1789)
  683.  0Ah    DWORD    reserved
  684.  
  685. Format of status line:
  686. Offset    Size    Description    (Table 1789)
  687.  00h    BYTE    comm line status
  688.         00h inactive
  689.         01h active
  690.  01h    BYTE    activation level
  691.         01h physical unit activated
  692.         02h logical unit also activated
  693.         03h session is bound
  694.  02h    BYTE    data traffic state
  695.         00h inactive
  696.         01h active
  697.  03h    BYTE    screen ownership
  698.         00h SLU->PLU session owns screen
  699.         01h SLU->SSCP session owns screen
  700.  04h    BYTE    keyboard status (see #1790)
  701.  05h    BYTE    insert mode
  702.         01h if in insert mode
  703.  06h    BYTE    numeric
  704.         01h if current screen buffer is numeric only
  705.  07h    BYTE    printer status
  706.         00h printer not assigned
  707.         01h printer is inactive
  708.         02h printer error
  709.         03h currently printing
  710.         04h printer is busy
  711.         05h printer is very busy
  712.  08h    BYTE    printer assignment
  713.  09h    BYTE    maximum size of network name
  714.  0Ah  N BYTEs    ASCIZ network name
  715.     BYTE    maximum size of message window
  716.       M BYTEs    null-terminated message window
  717.     BYTE    code set
  718.         00h EBCDIC
  719.         01h ASCII
  720.       M BYTEs    extended attributes
  721.         01h extended attributes are in effect (stored at screen+1920)
  722.             each extended attribute specifies
  723.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  724.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  725.                   100=green,101=turquoise,110=yellow,111=white
  726.     BYTE    extended color
  727.         01h other than base color is in effect
  728.  
  729. (Table 1790)
  730. Values for keyboard status:
  731.  00h    UNLOCK - ready to accept data
  732.  01h    TIME - aid was struck
  733.  02h    SYSTEM - received response no restore
  734.  03h    FUNCTION - unavailable keyboard function
  735.  04h    INPUT - not currently used
  736.  05h    ENDFIELD - field filled in insert mode
  737.  06h    PROTECTED - attempt to enter in protected field
  738.  07h    NUMERIC - attempt to enter in numeric field
  739.  08h    PROGRAM - error in outbound data stream
  740.  
  741. Format of profile block:
  742. Offset    Size    Description    (Table 1791)
  743.  00h 64 BYTEs    gateway service name
  744.  40h 16 BYTEs    gateway comm port address
  745.  50h    WORD    primary logical unit number
  746.  52h    WORD    secondary logical unit type
  747.  54h    WORD    secondary logical unit number
  748.  56h    WORD    printer assignment
  749.  58h 50 BYTEs    keyboard definitions filename
  750. --------V-610002-----------------------------
  751. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
  752.     AX = 0002h
  753. Desc:    switches off zoom and returns window to its original state
  754. Range:    unknown
  755. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  756.       obtained by calling INT 16/AH=FFh
  757.     not all vendors include the Tseng TSR which supports these functions
  758. SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  759. --------N-610003SF00-------------------------
  760. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
  761.     AX = 0003h subfn 00h
  762.     DS:BX -> argument block (see #1793)
  763. Return: AX = status (see #1792)
  764. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
  765.  
  766. (Table 1792)
  767. Values for VINES function status:
  768.  0000h    successful
  769.  000Bh    invalid session ID
  770.  000Ch    session not active
  771.  000Dh    invalid request type
  772.  000Eh    invalid parameters
  773.  000Fh    out of heap space
  774.  0010h    timeout on send
  775.  0011h    Banyan communications error
  776.  0012h    session not waiting for host
  777.  0013h    session is active
  778.  0014h    duplicate suspend session request
  779.  0015h    no session suspended
  780.  0016h    ring data buffer full
  781.  0017h    printer error encountered
  782.  0018h    Banyan communications error
  783.  0019h    unable to make connection
  784.  001Ah    no ring buffer specified at startup
  785.  001Bh    service is down
  786.  001Ch    invalid service name
  787.  001Dh    service is closed
  788.  001Eh    invalid connection name
  789.  001Fh    max session limit reached for service
  790.  0020h    access rights list for connection/dialout does not include this user
  791.  0021h    service not responding
  792.  0022h    missing telephone number
  793.  
  794. Format of VINES argument block:
  795. Offset    Size    Description    (Table 1793)
  796.  00h    BYTE    session ID (00h)
  797.  01h    BYTE    00h (func "initialize user buffer pointer information area")
  798.  02h    WORD    -> user buffer ptr info area in caller's current DS (see #1794)
  799.  
  800. Format of user buffer ptr info area:
  801. Offset    Size    Description    (Table 1794)
  802.  00h    WORD    flags
  803.         0000h don't read interface's data buffer
  804.         0001h read data buffer
  805.  02h    DWORD    pointer to ring buffer
  806.  06h    WORD    length of ring buffer
  807.  08h    WORD    ring buffer offset to last byte read by caller
  808.  0Ah    DWORD    pointer to WORD containing offset of last byte
  809.           in ring buffer filled
  810.  0Eh    DWORD    pointer to screen buffer
  811.  12h    DWORD    pointer to field containing cursor position
  812.  16h    DWORD    pointer to terminal status area (see #1795)
  813.  
  814. Format of VINES terminal status area:
  815. Offset    Size    Description    (Table 1795)
  816.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  817.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  818.  02h    BYTE    current keypad mode (VT100,VT52 only)
  819.         4Eh ("N") numeric mode
  820.         41h ("A") application mode
  821.  03h  4 BYTEs    current state of LEDs (VT100 only)
  822.         00h off
  823.         01h on
  824.  07h    WORD    line error count
  825.  09h    WORD    primary error code (see #1796)
  826.  0Bh    WORD    secondary error code
  827.  
  828. (Table 1796)
  829. Values for VINES primary error code:
  830.  0000h    no error
  831.  0001h    unable to make connection
  832.  0002h    communications error, restart session
  833.  0003h    async terminal emulation service unavailable
  834.  0004h    lost carrier
  835.  0005h    all matching lines busy
  836.  0006h    no lines defined for connection name
  837.  0007h    no dial lines available on server
  838.  0008h    no matching dial lines available
  839.  0009h    out of heap space
  840.  000Ah    service error encountered
  841.  000Bh    timed out waiting to connect
  842.  000Ch    communications error
  843.  000Dh    communications error
  844.  000Eh    host wants file transferred to/from PC
  845.  000Fh    host software changed session parameter
  846.  0010h    host software changed tap settings
  847.  0011h    host software changed LED indicator
  848.  0012h    host software changed display background (secondary error code 00h for
  849.       white on black, 01h for black on white)
  850.  0013h    host software changed display option (secondary error code 00h for off,
  851.       01h for on)
  852.  0014h    communications error
  853.  0015h    communications error
  854.  0016h    unable to make connection
  855.  0017h    unable to make connection
  856. --------N-610003SF01-------------------------
  857. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
  858.     AX = 0003h subfn 01h
  859.     DS:BX -> argument block (see #1797)
  860. Return: AX = status (see #1792)
  861. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
  862.  
  863. Format of VINES argument block for Function 0003h subfunction 01h:
  864. Offset    Size    Description    (Table 1797)
  865.  00h    BYTE    session ID (00h)
  866.  01h    BYTE    01h (function "send to host")
  867.  02h    BYTE    type
  868.         00h ASCII byte
  869.         01h ASCII string
  870.         02h terminal function code
  871.         03h up arrow
  872.         04h down arrow
  873.         05h left arrow
  874.         06h right arrow
  875.         07h break
  876.  03h  N BYTEs    type-specific info (see #1798)
  877.  
  878. Format of type-specific info:
  879. Offset    Size    Description    (Table 1798)
  880. ---ASCII byte---
  881.  03h    BYTE    byte to send to host
  882. ---ASCII string---
  883.  03h    WORD    length of string
  884.  05h    WORD    pointer to string
  885. ---terminal function code (VT52/VT100)---
  886.  03h    BYTE    function code
  887.         00h keypad 0
  888.         01h keypad 1
  889.         ...
  890.         09h keypad 9
  891.         0Ah keypad -
  892.         0Bh keypad ,
  893.         0Ch keypad .
  894.         0Dh keypad ENTER
  895.         0Eh PF1
  896.         0Fh PF2
  897.         10h PF3
  898.         11h PF4
  899. ---terminal function code (IBM3101)---
  900.  03h    BYTE    function code
  901.         00h PF1
  902.         ...
  903.         07h PF8
  904.         08h Home
  905. --------N-610003SF02-------------------------
  906. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
  907.     AX = 0003h subfn 02h
  908.     DS:BX -> argument block (see #1799)
  909. Return: AX = status (see #1792)
  910. SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
  911.  
  912. Format of VINES argument block for Function 0003h subfunction 02h:
  913. Offset    Size    Description    (Table 1799)
  914.  00h    BYTE    session ID (00h)
  915.  01h    BYTE    02h (function "control monitor")
  916.  02h    BYTE    display flag
  917.         00h don't display data received from host
  918.         01h display data
  919. --------N-610003SF03-------------------------
  920. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
  921.     AX = 0003h subfn 03h
  922.     DS:BX -> argument block (see #1800)
  923. Return: AX = status (see #1792)
  924. Desc:    this function permits the caller to freeze/unfreeze the display and
  925.       the ring buffer
  926. SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
  927.  
  928. Format of VINES argument block for Function 0003h subfunction 03h:
  929. Offset    Size    Description    (Table 1800)
  930.  00h    BYTE    session ID (00h)
  931.  01h    BYTE    03h (function "flow control data")
  932.  02h    BYTE    flow control flag
  933.         00h allow characters to be put into display or ring buffer
  934.         01h don't place any more characters into display or ring buffer
  935. --------N-610003SF04-------------------------
  936. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
  937.     AX = 0003h subfn 04h
  938.     DS:BX -> argument block (see #1801)
  939. Return: AX = status (see #1792)
  940. SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
  941.  
  942. Format of VINES argument block for ending active session:
  943. Offset    Size    Description    (Table 1801)
  944.  00h    BYTE    session ID (00h)
  945.  01h    BYTE    04h (function "end active session")
  946. --------N-610003SF05-------------------------
  947. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
  948.     AX = 0003h subfn 05h
  949.     DS:BX -> argument block (see #1802)
  950. Return: AX = status (see #1792)
  951. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
  952.  
  953. Format of VINES argument block for setting session parameters:
  954. Offset    Size    Description    (Table 1802)
  955.  00h    BYTE    session ID (00h)
  956.  01h    BYTE    05h (function "set session parameter")
  957.  02h    BYTE    parameter number (see #1803)
  958.  03h    BYTE    new parameter value
  959.  
  960. (Table 1803)
  961. Values for parameter number:
  962.  00h    line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  963.           05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
  964.  01h    parity (00h=none, 01h=odd, 02h=even)
  965.  02h    duplex (00h=full, 01h=half)
  966.  03h    character size (00h=7 bits, 01h=8 bits)
  967.  04h    stop bits (00h=1, 01h=2)
  968.  05h    XON/XOFF flow control (00h=no, 01h=yes)
  969.  07h    intercharacter delay in tenths of a second
  970.  08h    interline delay in tenths of a second
  971.  09h    auto linefeed (00h=no, 01h=yes)
  972.  0Ah    filter control characters (00h=no, 01h=yes)
  973.  0Bh    terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  974.  0Ch    auto wrap (00h=no, 01h=yes)
  975.  0Dh    cursor shape (00h=underscore, 01h=block)
  976.  0Eh    character set (00h=UK, 01h=US ASCII)
  977.  0Fh    printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  978. --------N-610003SF06-------------------------
  979. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
  980.     AX = 0003h subfn 06h
  981.     DS:BX -> argument block (see #1804)
  982. Return: AX = status (see #1792)
  983. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
  984.  
  985. Format of VINES argument block for getting session parameters:
  986. Offset    Size    Description    (Table 1804)
  987.  00h    BYTE    session ID (00h)
  988.  01h    BYTE    06h (function "get session parameter")
  989.  02h    BYTE    parameter number (see #1803)
  990.  03h    BYTE    (return) current parameter value
  991. --------N-610003SF07-------------------------
  992. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
  993.     AX = 0003h subfn 07h
  994.     DS:BX -> argument block (see #1805)
  995. Return: AX = status (see #1792)
  996. SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
  997.  
  998. Format of VINES argument block for setting tab settings:
  999. Offset    Size    Description    (Table 1805)
  1000.  00h    BYTE    session ID (00h)
  1001.  01h    BYTE    07h (function "set tab settings")
  1002.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1003.           each byte = 00h if no tab, 01h if tab at that position
  1004. --------N-610003SF08-------------------------
  1005. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
  1006.     AX = 0003h subfn 08h
  1007.     DS:BX -> argument block (see #1806)
  1008. Return: AX = status (see #1792)
  1009. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
  1010.  
  1011. Format of VINES argument block for getting tab settings:
  1012. Offset    Size    Description    (Table 1806)
  1013.  00h    BYTE    session ID (00h)
  1014.  01h    BYTE    08h (function "get tab settings")
  1015.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1016.         each byte set to 00h if no tab, 01h if tab at that position
  1017. --------N-610003SF09-------------------------
  1018. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
  1019.     AX = 0003h subfn 09h
  1020.     DS:BX -> argument block (see #1807)
  1021. Return: AX = status (see #1792)
  1022. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
  1023.  
  1024. Format of VINES argument block for Function 0003h subfunction 09h:
  1025. Offset    Size    Description    (Table 1807)
  1026.  00h    BYTE    session ID (00h)
  1027.  01h    BYTE    09h (function "refresh emulation screen")
  1028. --------N-610003SF0A-------------------------
  1029. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
  1030.     AX = 0003h subfn 0Ah
  1031.     DS:BX -> argument block (see #1808)
  1032. Return: AX = status (see #1792)
  1033. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
  1034.  
  1035. Format of VINES argument block:
  1036. Offset    Size    Description    (Table 1808)
  1037.  00h    BYTE    session ID (00h)
  1038.  01h    BYTE    0Ah (function "suspend session temporarily")
  1039.  02h    WORD    size of session information to be saved
  1040.  04h    WORD    pointer to buffer in caller's DS
  1041. --------N-610003SF0B-------------------------
  1042. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
  1043.     AX = 0003h subfn 0Bh
  1044.     DS:BX -> argument block (see #1809)
  1045. Return: AX = status (see #1792)
  1046. SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
  1047.  
  1048. Format of VINES argument block:
  1049. Offset    Size    Description    (Table 1809)
  1050.  00h    BYTE    session ID (00h)
  1051.  01h    BYTE    0Bh (function "restore previously suspended session")
  1052.  02h    WORD    size of buffer into which session info is restored
  1053.  04h    WORD    pointer to buffer in caller's DS
  1054. --------N-610003SF0C-------------------------
  1055. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
  1056.     AX = 0003h subfn 0Ch
  1057.     DS:BX -> argument block (see #1810)
  1058. Return: AX = status (see #1792)
  1059. SeeAlso: AX=0003h/SF=00h
  1060.  
  1061. Format of VINES argument block:
  1062. Offset    Size    Description    (Table 1810)
  1063.  00h    BYTE    session ID (00h)
  1064.  01h    BYTE    0Ch (function "set state of scroll lock checking")
  1065.  02h    BYTE    check_scroll_lock flag
  1066.         00h off
  1067.         01h on (display of host data stopped while ScrollLock on)
  1068. --------N-610003SF0D-------------------------
  1069. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
  1070.     AX = 0003h subfn 0Dh
  1071.     DS:BX -> argument block (see #1811)
  1072. Return: AX = status (see #1792)
  1073. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
  1074.  
  1075. Format of VINES argument block:
  1076. Offset    Size    Description    (Table 1811)
  1077.  00h    BYTE    session ID (00h)
  1078.  01h    BYTE    0Dh (function "exit emulation")
  1079. --------N-610003SF0E-------------------------
  1080. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
  1081.     AX = 0003h subfn 0Eh
  1082.     DS:BX -> argument block (see #1812)
  1083. Return: AX = status (see #1792)
  1084. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
  1085.  
  1086. Format of VINES argument block:
  1087. Offset    Size    Description    (Table 1812)
  1088.  00h    BYTE    session ID (00h)
  1089.  01h    BYTE    0Eh (function "interrupt on character from host")
  1090.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1091.  06h    DWORD    stack pointer to use when call is made
  1092. --------N-610003SF0F-------------------------
  1093. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
  1094.     AX = 0003h subfn 0Fh
  1095.     DS:BX -> argument block (see #1813)
  1096. Return: AX = status (see #1792)
  1097. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
  1098.  
  1099. Format of VINES argument block:
  1100. Offset    Size    Description    (Table 1813)
  1101.  00h    BYTE    session ID (00h)
  1102.  01h    BYTE    0Fh (function "start a session")
  1103.  02h    WORD    pointer to information area in caller's current DS (see #1814)
  1104.  
  1105. Format of VINES information area:
  1106. Offset    Size    Description    (Table 1814)
  1107.  00h    WORD    length of service name
  1108.  02h    WORD    pointer to service name in caller's DS
  1109.  04h    BYTE    type of connection (00h=connection name, 01h=dialout)
  1110.  05h    WORD    length of connection name/telephone number
  1111.  07h    WORD    pointer to connection name/telephone number
  1112. --------N-610003SF10-------------------------
  1113. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
  1114.     AX = 0003h subfn 10h
  1115.     DS:BX -> argument block (see #1815)
  1116. Return: AX = status (see #1792)
  1117. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
  1118.  
  1119. Format of VINES argument block:
  1120. Offset    Size    Description    (Table 1815)
  1121.  00h    BYTE    session ID (00h)
  1122.  01h    BYTE    10h (function "start/stop printing of data received from host)
  1123.  02h    WORD    print capture flag (00h=off, 01h=on)
  1124. --------N-610003SF11-------------------------
  1125. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
  1126.     AX = 0003h subfn 11h
  1127.     DS:BX -> argument block (see #1816)
  1128. Return: AX = status (see #1792)
  1129. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  1130.  
  1131. Format of VINES argument block:
  1132. Offset    Size    Description    (Table 1816)
  1133.  00h    BYTE    session ID (00h)
  1134.  01h    BYTE    11h (function "get file transfer parameters")
  1135.  02h    WORD    pointer to info area in caller's current DS (see #1817)
  1136.  
  1137. Format of VINES info area:
  1138. Offset    Size    Description    (Table 1817)
  1139.  00h    BYTE    protocol flag (00h none, 01h Kermit)
  1140.  01h    BYTE    direction flag (00h send, 01h receive)
  1141.  02h    BYTE    length of null-terminated PC filename
  1142.  03h    DWORD    pointer to null-terminated PC filename
  1143.  07h    BYTE    length of null-terminated host filename
  1144.  08h    DWORD    pointer to null-terminated host filename
  1145. --------N-610003SF12-------------------------
  1146. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
  1147.     AX = 0003h subfn 12h
  1148.     DS:BX -> argument block (see #1818)
  1149. Return: AX = status (see #1792)
  1150. SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
  1151.  
  1152. Format of VINES argument block:
  1153. Offset    Size    Description    (Table 1818)
  1154.  00h    BYTE    session ID (00h)
  1155.  01h    BYTE    12h (function "get connection information")
  1156.  02h    WORD    offset of buffer for connection information (see #1819)
  1157.  
  1158. Format of VINES connection information:
  1159. Offset    Size    Description    (Table 1819)
  1160.  00h    WORD    length of service name (returned)
  1161.  02h    WORD    pointer to 64-byte buffer for service name
  1162.  04h    BYTE    type of connection
  1163.         00h connection name
  1164.         01h dialout
  1165.  05h    WORD    length of connection name/telephone number
  1166.  07h    WORD    pointer to 64-byte buffer for name/telno
  1167.  09h    BYTE    server line number being used (returned)
  1168. --------N-610003SF13-------------------------
  1169. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
  1170.     AX = 0003h subfn 13h
  1171.     DS:BX -> argument block (see #1820)
  1172. Return: AX = status (see #1792)
  1173. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
  1174.  
  1175. Format of VINES argument block:
  1176. Offset    Size    Description    (Table 1820)
  1177.  00h    BYTE    session ID (00h)
  1178.  01h    BYTE    13h (function "start/stop tracing data traffic in session")
  1179.  02h    BYTE    trace flag (00h=off, 01h=on)
  1180. --------N-610003SF14-------------------------
  1181. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
  1182.     AX = 0003h subfn 14h
  1183.     DS:BX -> argument block (see #1821)
  1184. Return: AX = status (see #1792)
  1185. SeeAlso: AX=0003h/SF=0Eh
  1186.  
  1187. Format of VINES argument block:
  1188. Offset    Size    Description    (Table 1821)
  1189.  00h    BYTE    session ID (00h)
  1190.  01h    BYTE    14h (function "interrupt on message from host")
  1191.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1192.  06h    DWORD    stack pointer to use when call is made
  1193. --------N-610003SF15-------------------------
  1194. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
  1195.     AX = 0003h subfn 15h
  1196.     DS:BX -> argument block (see #1822)
  1197. Return: AX = status (see #1792)
  1198. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  1199.  
  1200. Format of VINES argument block:
  1201. Offset    Size    Description    (Table 1822)
  1202.  00h    BYTE    session ID (00h)
  1203.  01h    BYTE    15h (function "reset error")
  1204. --------V-610003-----------------------------
  1205. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
  1206.     AX = 0003h
  1207. Return: AX = zoom factor
  1208. Desc:    returns the current zoom factor
  1209. Range:    unknown
  1210. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  1211.       obtained by calling INT 16/AH=FFh
  1212.     not all vendors include the Tseng TSR which supports these functions
  1213. SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1214. --------N-610004SF0008-----------------------
  1215. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  1216.     AX = 0004h subfn 0008h
  1217.     DS:DX -> request block (see #1823)
  1218. Return: AX = status
  1219.         0000h server ID returned in request block
  1220.         000Fh invalid drive
  1221.         0015h drive not ready
  1222.  
  1223. Format of VINES request block for getting server serial number:
  1224. Offset    Size    Description    (Table 1823)
  1225.  00h    WORD    0008h
  1226.  02h    WORD    drive number (0=default, 1=A, ...)
  1227.  04h  6 BYTEs    buffer for server ID
  1228. --------V-610004-----------------------------
  1229. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
  1230.     AX = 0004h
  1231. Range:    unknown
  1232. Notes:    Specify Mode is enabled by hot key (seeAlso below), and allows
  1233.       panning and zooming via the numeric keypad.
  1234.     INT 61 is the default interrupt; the actual interrupt number can be
  1235.       obtained by calling INT 16/AH=FFh
  1236.     not all vendors include the Tseng TSR which supports these functions
  1237. SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1238. --------N-610005-----------------------------
  1239. INT 61 - Banyan VINES - PRINTER CONTROL
  1240.     AX = 0005h
  1241.     DS:DX -> request block (see #1824)
  1242. Return: AX = status
  1243.         0000h successful
  1244.         0001h network software not installed or incompatible
  1245. SeeAlso: INT 2F/AX=D702h
  1246.  
  1247. Format of VINES request block for printer control:
  1248. Offset    Size    Description    (Table 1824)
  1249.  00h    WORD    function
  1250.         0201h "endspool" all data for a print job has been sent
  1251.         0205h "getactive" get currently active printer port
  1252.  02h    WORD    number of active port (1-3)
  1253.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  1254.  06h    WORD    0000h
  1255. --------V-610005-----------------------------
  1256. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  1257.     AX = 0005h
  1258.     BX:CX -> buffer for window parameters (see #1825)
  1259. Range:    unknown
  1260. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  1261.       obtained by calling INT 16/AH=FFh
  1262.     not all vendors include the Tseng TSR which supports these functions
  1263. SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
  1264. SeeAlso: INT 16/AH=FFh"OPTIMA"
  1265.  
  1266. Format of Optima 1024 window parameters:
  1267. Offset    Size    Description    (Table 1825)
  1268.  00h    WORD    X start of zoom window
  1269.  02h    WORD    Y start of zoom window
  1270.  04h    WORD    X end of zoom window
  1271.  06h    WORD    Y end of zoom window
  1272.  08h    WORD    current zoom factor
  1273.  0Ah    WORD    zoom offset start X
  1274.  0Ch    WORD    zoom offset start Y
  1275. --------V-610006-----------------------------
  1276. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
  1277.     AX = 0006h
  1278.     BX:CX -> zoom window description (see #1826)
  1279. Range:    unknown
  1280. Notes:    width of zoom window must be a multiple of the pixel replication (zoom)
  1281.       factor
  1282.     INT 61 is the default interrupt; the actual interrupt number can be
  1283.       obtained by calling INT 16/AH=FFh
  1284.     not all vendors include the Tseng TSR which supports these functions
  1285. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
  1286. SeeAlso: INT 16/AH=FFh"OPTIMA"
  1287.  
  1288. Format of Optima 1024 zoom window description:
  1289. Offset    Size    Description    (Table 1826)
  1290.  00h    WORD    X start of zoom window
  1291.  02h    WORD    Y start of zoom window
  1292.  04h    WORD    X end of zoom window
  1293.  06h    WORD    Y end of zoom window
  1294. --------V-610007-----------------------------
  1295. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
  1296.     AX = 0007h
  1297. Return: AX = current state (0000h/0001h)
  1298. Desc:    returns the current toggle state of the application (END) key in
  1299.       specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
  1300.       calls INT 61/AX=0001h every time the crosshair cursor moves.
  1301. Notes:    In specify mode, the END key has been reserved for applications.
  1302.     INT 61 is the default interrupt; the actual interrupt number can be
  1303.       obtained by calling INT 16/AH=FFh
  1304.     not all vendors include the Tseng TSR which supports these functions
  1305. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
  1306. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A/AX=0001h"AutoCAD"
  1307. --------N-610007BX0002-----------------------
  1308. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  1309.     AX = 0007h
  1310.     BX = 0002h
  1311.     DS:DX -> StreetTalk service name
  1312.     DS:DI -> port record block (see #1828)
  1313. Return: AX = status (see #1827)
  1314. SeeAlso: AX=0007h/BX=0004h
  1315.  
  1316. (Table 1827)
  1317. Values for VINES function status:
  1318.  0000h    successful
  1319.  0001h    PC network software not installed or incompatible
  1320.  03E9h    incorrect name syntax
  1321.  03EAh    organization name too long
  1322.  03EBh    group name too long
  1323.  03ECh    item name too long
  1324.  03EDh    StreetTalk name too long
  1325.  03F3h    organization not found
  1326.  03F4h    group not found
  1327.  03F5h    StreetTalk name not found
  1328.  03F8h    not a StreetTalk name
  1329.  0409h    modify access denied
  1330.  040Dh    appropriate StreetTalk name unavailable
  1331.  
  1332. Format of VINES port record block:
  1333. Offset    Size    Description    (Table 1828)
  1334.  00h    WORD    number of 17-byte elements
  1335.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  1336.         (see #1751 for port format)
  1337. --------N-610007BX0004-----------------------
  1338. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  1339.     AX = 0007h
  1340.     BX = 0004h
  1341.     DS:DX -> StreetTalk name of service
  1342.     DS:DI -> port record block (see #1829)
  1343. Return: AX = status (see #1827)
  1344. SeeAlso: AX=0007h/BX=0002h
  1345.  
  1346. Format of VINES port record block:
  1347. Offset    Size    Description    (Table 1829)
  1348.  00h    WORD    number of 17-byte elements
  1349.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  1350.         (see #1751 for port format)
  1351. --------N-610007BX0005-----------------------
  1352. INT 61 - Banyan VINES - GET USER NAME
  1353.     AX = 0007h
  1354.     BX = 0005h
  1355.     DS:DX -> 64-byte buffer for user's StreetTalk name
  1356. Return: AX = status
  1357.         0000h successful
  1358.         0001h network software not installed or incompatible
  1359. Note:    if no user logged in, first byte of returned name will be 00h
  1360. SeeAlso: AX=0007h/BX=0007h
  1361. --------N-610007BX0006-----------------------
  1362. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  1363.     AX = 0007h
  1364.     BX = 0006h
  1365.     SI = error code (>100)
  1366.     DS:DX -> 80-byte buffer for error text
  1367. Return: AX = status
  1368.         0000h successful
  1369.         0001h network software not installed or incompatible
  1370. --------N-610007BX0007-----------------------
  1371. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1372.     AX = 0007h
  1373.     BX = 0007h
  1374.     DS:DX -> NiceName block (see #1830)
  1375. Return: AX = status (see #1827)
  1376. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
  1377.  
  1378. Format of VINES NiceName block:
  1379. Offset    Size    Description    (Table 1830)
  1380.  00h    WORD    type of name
  1381.         0064h (100) organization
  1382.         00C8h (200) group
  1383.         012Ch (300) item
  1384.  02h    WORD    pointer to ASCIZ input name
  1385.  04h    WORD    pointer to 64-byte buffer for output name
  1386. --------N-610007BX0008-----------------------
  1387. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  1388.     AX = 0007h
  1389.     BX = 0008h
  1390.     DS:DX -> enumerate block (see #1831)
  1391. Return: AX = status
  1392.         0000h successful
  1393.         0411h all matching names have been returned
  1394.         0412h some groups unavailable, all available matches returned
  1395. Note:    each program using this call should continue until a nonzero status
  1396.       is returned; otherwise, some resources will not be freed for several
  1397.       hours
  1398. SeeAlso: AX=0007h/BX=0007h
  1399.  
  1400. Format of VINES enumerate block:
  1401. Offset    Size    Description    (Table 1831)
  1402.  00h    WORD    return code
  1403.  02h    WORD    pointer to pattern string
  1404.  04h    WORD    enumerate type
  1405.         0064h (100) organization
  1406.         00C8h (200) group
  1407.         012Ch (300) item
  1408.  06h    WORD    enumerate class
  1409.         0000h unspecified (return all matching items)
  1410.         0001h user names
  1411.         0002h service names
  1412.         0003h list names
  1413.         0004h nicknames
  1414.  08h    WORD    pointer to category criteria block (see #1832) or 0
  1415.  0Ah    WORD    pointer to array of 64-byte returned names
  1416.  0Ch    WORD    number of names returned
  1417.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  1418.           call)
  1419.  
  1420. Format of category criteria block:
  1421. Offset    Size    Description    (Table 1832)
  1422.  00h    WORD    exclude flag
  1423.         0000h return only items with the specified categories
  1424.         0001h return all items except those with the given categories
  1425.  02h    WORD    number of categories
  1426.  04h    WORD    category 1 value
  1427.  06h    WORD    category 2 value
  1428.         ...
  1429.  
  1430. (Table 1833)
  1431. Values for common VINES service categories:
  1432.  0002h    file service
  1433.  0003h    print service
  1434.  0004h    mail service
  1435.  0005h    StreetTalk
  1436.  0006h    time service
  1437.  0008h    semaphore service
  1438.  0009h    3270/SNA service
  1439.  000Ah    asynchronous terminal emulation service
  1440.  000Ch    NETBIOS service
  1441.  000Dh    PC-based service
  1442. --------V-610008-----------------------------
  1443. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
  1444.     AX = 0008h
  1445.     BX = X start of zoom offset
  1446.     CX = Y start of zoom offset
  1447. Desc:    specifies the first byte of video memory to appear in the zoom window
  1448. Range:    unknown
  1449. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  1450.       obtained by calling INT 16/AH=FFh
  1451.     not all vendors include the Tseng TSR which supports these functions
  1452. SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1453. --------N-610008BX0002-----------------------
  1454. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  1455.     AX = 0008h
  1456.     BX = 0002h
  1457.     CX = message display flags (see #1834)
  1458.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  1459. Return: AX = status
  1460.         0000h successful
  1461.         000Bh message display function currently busy
  1462.         000Ch message queue full
  1463. Note:    queues up to three messages to be displayed on the bottom line
  1464. SeeAlso: AX=0008h/BX=0003h
  1465.  
  1466. Bitfields for VINES message display flags:
  1467. Bit(s)    Description    (Table 1834)
  1468.  0    message will remain on screen until user presses ^X
  1469.  1    ring bell after displaying message
  1470.  2    blink
  1471. --------N-610008BX0003-----------------------
  1472. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  1473.     AX = 0008h
  1474.     BX = 0003h
  1475.     DS:DX -> request block (see #1835)
  1476. Return: AX = status
  1477.         0000h successful
  1478.         0001h network software not installed or incompatible
  1479. Notes:    message handler should not call BIOS or DOS functions, and should
  1480.       either call next handler or simply return
  1481.     to stop intercepting messages, set prev and next request blocks to
  1482.       point at each other
  1483. SeeAlso: AX=0008h/BX=0002h
  1484.  
  1485. Format of VINES request block for 25-th line messages:
  1486. Offset    Size    Description    (Table 1835)
  1487.  00h    DWORD    pointer to user-written message handler
  1488.  04h    DWORD    pointer to next request block (filled in by VINES)
  1489.  08h    DWORD    pointer to previous request block (filled in by VINES)
  1490.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see #1836)
  1491.  
  1492. Format of message storage area:
  1493. Offset    Size    Description    (Table 1836)
  1494.  00h 16 BYTEs    IPC port of message sender (see #1751)
  1495.  10h    BYTE    message flags
  1496.  11h    WORD    reserved
  1497.  13h    BYTE    length of message
  1498.  14h 80 BYTEs    message text
  1499. --------N-61000A-----------------------------
  1500. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  1501.     AX = 000Ah
  1502. Note:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  1503.       which is loaded second.  The first interface loaded will use AX=0002h
  1504. SeeAlso: INT 61/AX=0002h
  1505. --------N-6101-------------------------------
  1506. INT 61 - Banyan VINES - CHECK SERVICE
  1507.     AH = 01h
  1508.     AL = service ID (see #1837)
  1509. Return: AX = status
  1510.         0000h installed
  1511.         0001h not installed
  1512.         0002h invalid ID
  1513.  
  1514. (Table 1837)
  1515. Values for VINES service ID:
  1516.  01h    communications
  1517.  02h    primary 3270 emulation
  1518.  03h    async terminal emulation
  1519.  04h    file deflection
  1520.  07h    StreetTalk
  1521.  08h    environment
  1522.  0Ah    secondary 3270 emulation
  1523.  0Bh    semaphore service
  1524.  0Ch    3270 emulation active status
  1525.  0Dh    3270 keyboard interrupt simulator
  1526. --------N-6101--BX0000-----------------------
  1527. INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
  1528.     AH = 01h
  1529.     BX = 0000h
  1530.     DH = tag number
  1531.     DL = device number
  1532.     DS:SI -> buffer to send to kernel
  1533.     ES:DI -> integer containing size of buffer
  1534. Return: CF clear if successful
  1535.     CF set on error
  1536.         AX = error code (see INT 61"PC/TCP")
  1537. Range:    INT 20 to INT E0, selected by configuration
  1538. Notes:    there are a large number of tags available; the items returned
  1539.       all refer to local kernel configuration, and are not needed in
  1540.       normal use.
  1541.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1542. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=02"PC/TCP"
  1543. --------N-6102-------------------------------
  1544. INT 61 - Banyan VINES - GET REVISION NUMBER
  1545.     AH = 02h
  1546.     DS:DX -> 2-byte buffer for result
  1547. Return: AX = 0000h installed
  1548.         DS:DX buffer contains revision number as
  1549.         10000d * major_ver + 100d * minor_ver + patch_revision
  1550. --------N-6102--BX0000-----------------------
  1551. INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
  1552.     AH = 02h
  1553.     BX = 0000h
  1554.     DH = tag number
  1555.     DL = device number
  1556.     DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
  1557.     ES:DI -> integer containing size of buffer
  1558. Return: CF clear if successful
  1559.         Data loaded into specified buffer, and size value altered
  1560.     CF set on error
  1561.         AX = error code (see INT 61"PC/TCP")
  1562. Range:    INT 20 to INT E0, selected by configuration
  1563. Notes:    there are a large number of tags available; the items returned
  1564.       all refer to local kernel configuration, and are not needed in
  1565.       normal use.
  1566.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1567. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  1568. --------N-6105-------------------------------
  1569. INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
  1570.     AH = 05h
  1571.     BX = network descriptor
  1572. Return: CF clear if successful
  1573.         DX:AX = Internet address of ND
  1574.     CF set on error
  1575.         AX = error code (see INT 61"PC/TCP")
  1576. Range:    INT 20 to INT E0, selected by configuration
  1577. Notes:    the installation check consists of testing for the signature "TCPTSR"
  1578.       three bytes beyond the start of the interrupt handler
  1579. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
  1580. SeeAlso: INT 63/AH=25h"BW-TCP"
  1581. --------N-6106-------------------------------
  1582. INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  1583.     AH = 06h
  1584.     BX = network descriptor (must be allocated and open)
  1585.     DS:SI -> 38-byte buffer for interface statistics (see #1838)
  1586. Return: CF clear if successful
  1587.         buffer filled
  1588.     CF set on error
  1589.         AX = error code (see INT 61"PC/TCP")
  1590. Desc:    returns the statistics relevant to the particular network interface
  1591.        used by the specified network descriptor
  1592. Range:    INT 20 to INT E0, selected by configuration
  1593. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
  1594.  
  1595. Format of PC/TCP interface statistics:
  1596. Offset    Size    Description    (Table 1838)
  1597.  00h    WORD    interface class (e.g. 802.3)
  1598.  02h    WORD    type (manufacturer) of interface
  1599.  04h    WORD    interface number
  1600.  06h    DWORD    (big-endian) IP address of interface
  1601.  0Ah    DWORD    subnet mask
  1602.  0Eh    WORD    0001h if interface is up
  1603.  10h    DWORD    total packets received
  1604.  14h    DWORD    total packets sent
  1605.  18h    DWORD    receive errors
  1606.  1Ch    DWORD    send errors
  1607.  20h    WORD    length of local net address (e.g. 0006h for Ethernet)
  1608.  22h    DWORD    pointer to local net address
  1609. --------N-6107-------------------------------
  1610. INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
  1611.     AH = 07h
  1612.     BX = local network descriptor
  1613. Return: CF clear if successful
  1614.         AX = global network descriptor
  1615.     CF set on error
  1616.         AX = error code (see INT 61"PC/TCP")
  1617. Notes:    the new network descriptor can be accessed from all processes and is
  1618.       independent of DOS
  1619.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1620. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1621. SeeAlso: INT 61/AH=29h
  1622. --------N-6108-------------------------------
  1623. INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
  1624.     AH = 08h
  1625.     BX = network descriptor
  1626. Return: CF clear if successful
  1627.         AX = 0000h (BWPCTCP shim)
  1628.     CF set on error
  1629.         AX = error code (see INT 61"PC/TCP")
  1630. Range:    INT 20 to INT E0, selected by configuration
  1631. Note:    the descriptor will be closed and resources released.  If a stream
  1632.       descriptor, the protocol (FIN etc) is completed unless the
  1633.       non-blocking option has been set.
  1634. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
  1635. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1636. --------N-6109-------------------------------
  1637. INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
  1638.     AH = 09h
  1639. Return: CF clear
  1640. Range:    INT 20 to INT E0, selected by configuration
  1641. Notes:    this call performs function 08h on every non-global network descriptor.
  1642.       Global descriptors must be released individually.
  1643. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1644. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1645. --------N-610A-------------------------------
  1646. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  1647.     AH = 0Ah
  1648.     ???
  1649. Return: ???
  1650. Notes:    this function is described as "unused" in the v2.05 and v2.2
  1651.       documentation
  1652.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1653. SeeAlso: AH=0Bh
  1654. --------N-610B-------------------------------
  1655. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  1656.     AH = 0Bh
  1657.     ???
  1658. Return: ???
  1659. Range:    INT 20 to INT E0, selected by configuration
  1660. Notes:    this function is described as "unused" in the v2.05 and v2.2
  1661.       documentation
  1662.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1663. SeeAlso: AH=0Ah
  1664. --------N-610C-------------------------------
  1665. INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
  1666.     AH = 0Ch
  1667.     BX = network descriptor or one of the following:
  1668.         FFFCh for kernel ICMP statistics
  1669.         FFFDh for kernel UDP statistics
  1670.         FFFEh for kernel IP statistics
  1671.         FFFFh for kernel TCP statistics
  1672.     DS:DX -> 64-byte buffer
  1673. Return: CF clear if successful
  1674.         buffer filled
  1675.     CF set on error
  1676.         AX = error code (see INT 61"PC/TCP")
  1677. Notes:    the fields filled in for a network descriptor depend on the protocol
  1678.       family used by that descriptor's connection
  1679.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1680. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1681.  
  1682. Format of PC/TCP kernel TCP statistics:
  1683. Offset    Size    Description    (Table 1839)
  1684.  00h 16 BYTEs    unused
  1685.  10h    DWORD    bytes sent
  1686.  14h    DWORD    bytes received
  1687.  18h  8 BYTEs    unused
  1688.  20h    DWORD    packets sent
  1689.  24h    DWORD    packets received
  1690.  28h    DWORD    bad checksums
  1691.  2Ch    DWORD    count of window ignored by remote
  1692.  30h    DWORD    timeouts
  1693.  34h    DWORD    resets
  1694.  38h    DWORD    duplicate packets
  1695.  3Ch    DWORD    retransmits
  1696.  
  1697. Format of PC/TCP kernel IP statistics:
  1698. Offset    Size    Description    (Table 1840)
  1699.  00h  8 BYTEs    unused
  1700.  08h    DWORD    invalid IP header length errors
  1701.  0Ch    DWORD    protocol errors (unwanted packets)
  1702.  10h    DWORD    duplicate fragments received
  1703.  14h    DWORD    bad fragments received
  1704.  18h    DWORD    security errors
  1705.  1Ch    DWORD    count of bad IP addresses received
  1706.  20h    DWORD    packets sent
  1707.  24h    DWORD    packets received
  1708.  28h    DWORD    bad checksums received
  1709.  2Ch    DWORD    total IP protocol errors
  1710.  30h    DWORD    fragmentation errors
  1711.  34h    DWORD    IP packets discarded + bad security + bad fragments
  1712.  38h    DWORD    fragments received
  1713.  3Ch  4 BYTEs    unused
  1714.  
  1715. Format of PC/TCP kernel UDP statistics:
  1716. Offset    Size    Description    (Table 1841)
  1717.  00h 28 BYTEs    unused
  1718.  1Ch    DWORD    packets dropped for lack of buffers
  1719.  20h    DWORD    packets sent
  1720.  24h    DWORD    packets received
  1721.  28h    DWORD    bad checksums
  1722.  2Ch    DWORD    port not listening errors
  1723.  30h  4 BYTEs    unused
  1724.  34h    DWORD    truncated receives
  1725.  38h  8 BYTEs    unused
  1726.  
  1727. Format of PC/TCP kernel ICMP statistics:
  1728. Offset    Size    Description    (Table 1842)
  1729.  00h    DWORD    "TimeEx" sent
  1730.  04h    DWORD    "TimeEx" received
  1731.  08h    DWORD    "ParamProb" sent
  1732.  0Ch    DWORD    "ParamProb" received
  1733.  10h    DWORD    redirects received
  1734.  14h    DWORD    source quenches received
  1735.  18h    DWORD    ICMP Echo Requests ("ping") sent
  1736.  1Ch    DWORD    ICMP Echo Requests received
  1737.  20h    DWORD    packets sent
  1738.  24h    DWORD    packets received
  1739.  28h    DWORD    bad packets received
  1740.  2Ch    DWORD    "DestUn" received
  1741.  30h    DWORD    packet send errors
  1742.  34h    DWORD    "DestUn" sent
  1743.  38h    DWORD    ICMP Echo replies received
  1744.  3Ch    DWORD    ICMP Echo replies sent
  1745. --------N-610D-------------------------------
  1746. INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
  1747.     AH = 0Dh
  1748.     BX = possible network descriptor
  1749. Return: CF clear if valid
  1750.     CF set on error
  1751.         AX = error code (see INT 61"PC/TCP")
  1752. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1753. SeeAlso: INT 61/AH=22h
  1754. --------N-610E-------------------------------
  1755. INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
  1756.     AH = 0Eh
  1757.     BX = maximum value of network descriptor for which to return info
  1758.     DS:DX -> 32-bit (max) array of bit flags for read readiness
  1759.     ES:DI -> 32-bit (max) array of bit flags for write readiness
  1760. Return: CF clear
  1761. Range:    INT 20 to INT E0, selected by configuration
  1762. Notes:    bits in the DS:DX buffer are set if the corresponding network
  1763.       descriptor may be read without blocking; bits in the ES:DI buffer
  1764.       are set if the corresponding network descriptor may be written
  1765.       without blocking.  This implies that the network descriptor has
  1766.       opened correctly and the protocol initialized.
  1767.     the installation check consists of testing for the signature "TCPTSR"
  1768.       three bytes beyond the start of the interrupt handler
  1769. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1770. --------N-610F-------------------------------
  1771. INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
  1772.     AH = 0Fh
  1773. Return: CF clear
  1774.     AX = version (AH = major, AL = minor)
  1775.     BX = patch level
  1776. Notes:    patch levels are no longer used starting with version 2.10; instead,
  1777.       the minor version level is incremented.
  1778.     Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
  1779.       set BX
  1780. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1781. --------N-6110-------------------------------
  1782. INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
  1783.     AH = 10h
  1784. Return: CF clear if successful
  1785.     CF set on error
  1786.         AX = error code (see INT 61"PC/TCP")
  1787. Range:    INT 20 to INT E0, selected by configuration
  1788. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1789. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1790. --------N-6111-------------------------------
  1791. INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
  1792.     AH = 11h
  1793. Return: CF clear
  1794.     AX = previous state
  1795.         0000h async calls were already disabled
  1796.         else  async calls were enabled
  1797. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  1798. --------N-6112-------------------------------
  1799. INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
  1800.     AH = 12h
  1801. Return: CF clear
  1802.     AX = previous state
  1803.         0000h async calls were disabled
  1804.         else  async calls were already enabled
  1805. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  1806. --------N-6113-------------------------------
  1807. INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
  1808.     AH = 13h
  1809.     BX = network descriptor (FFFFh for automatic net_getdesc)
  1810.     DX = protocol (see #1843)
  1811.     DS:SI -> buffer for "addr" structure (see #1844)
  1812. Return: CF clear if successful
  1813.         AX = network descriptor used or allocated
  1814.     CF set on error
  1815.         AX = error code (see INT 61"PC/TCP")
  1816. Notes:    resets the connection with AH=19h in various cases
  1817.     will wait for protocol on stream connections unless non-blocking was
  1818.       set with AH=20h
  1819. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
  1820. SeeAlso: INT 63/AH=14h"BW-TCP"
  1821.  
  1822. (Table 1843)
  1823. Values for PC/TCP protocol:
  1824.  0001h    raw net (undocumented)
  1825.  0002h    raw IP
  1826.  0003h    datagram (UDP)
  1827.  0004h    stream (TCP)
  1828.  0005h    raw ICMP
  1829.  
  1830. Format of structure "addr":
  1831. Offset    Size    Description    (Table 1844)
  1832.  00h    DWORD    Internet address (network order)
  1833.  04h    WORD    remote socket number (network order)
  1834.  06h    WORD    local socket number (network order) 0000h means "you choose"
  1835.  08h    BYTE    protocol (see #1843)
  1836. --------N-6114-------------------------------
  1837. INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  1838.     AH = 14h
  1839.     BX = network descriptor
  1840. Return: CF set
  1841.         AX = 0018h (see INT 61"PC/TCP")
  1842. Notes:    displays error message "Illegal system call!  Please upgrade your
  1843.       PCserver software" to standard output
  1844.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1845. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
  1846. --------N-6115-------------------------------
  1847. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  1848.     AH = 15h
  1849.     ???
  1850. Return: ???
  1851. Notes:    this function is described as "unused" in the v2.2 documentation
  1852.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1853. SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
  1854. --------N-6116-------------------------------
  1855. INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
  1856.     AH = 16h
  1857.     BX = network descriptor
  1858.     DS:DX -> 9-byte buffer for "addr" structure (see #1844)
  1859. Return: CF clear if successful
  1860.         buffer filled
  1861.     CF set on error
  1862.         AX = error code (see INT 61"PC/TCP")
  1863. Range:    INT 20 to INT E0, selected by configuration
  1864. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1865. --------N-6117-------------------------------
  1866. INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
  1867.     AH = 17h
  1868. Return: CF clear if successful
  1869.     CF set on error
  1870.         AX = error code (see INT 61"PC/TCP")
  1871. Notes:    this routine is deprecated in v2.1+ and will eventually be withdrawn;
  1872.       in v2.1+, this function calls AH=01h which should be used instead
  1873.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1874. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  1875. --------N-6118-------------------------------
  1876. INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
  1877.     AH = 18h
  1878.     BX = network descriptor
  1879. Return: CF clear if successful
  1880.     CF set on error
  1881.         AX = error code (see INT 61"PC/TCP")
  1882. Note:    a TCP "FIN" command is sent and no further data may be transmitted,
  1883.       although the connection remains open
  1884. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
  1885. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1886. --------N-6119-------------------------------
  1887. INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
  1888.     AH = 19h
  1889.     BX = network descriptor
  1890. Return: CF clear if successful
  1891.     CF set on error
  1892.         AX = error code (see INT 61"PC/TCP")
  1893. Desc:    immediately destroys the specified connection
  1894. Note:    send a TCP "RST" command if a stream connection is open
  1895. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
  1896. --------N-611A-------------------------------
  1897. INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
  1898.     AH = 1Ah
  1899.     BX = network descriptor
  1900.     CX = number of bytes to transmit (0000h allowed)
  1901.     DX = send options (see #1845)
  1902.     DS:SI -> data to be written
  1903. Return: CF clear if successful
  1904.         AX = number of bytes actually written
  1905.         DX = ???
  1906.     CF set on error
  1907.         AX = error code (see INT 61"PC/TCP")
  1908. Range:    INT 20h to INT E0h, selected by configuration
  1909. Notes:    the installation check consists of testing for the signature "TCPTSR"
  1910.       three bytes beyond the start of the interrupt handler
  1911. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  1912. SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
  1913.  
  1914. Bitfields for PC/TCP send options:
  1915. Bit(s)    Description    (Table 1845)
  1916.  0    signal "URG"ent data
  1917.  3    attempt rerouting on non-stream calls if first attempt fails
  1918.  4    send data with PUSH flag (no override of Nagle) (see option 0Ch)
  1919.  5    fail rather than truncating datagram
  1920.  6    fail rather than blocking
  1921.  7    broadcast packet
  1922. --------N-611B-------------------------------
  1923. INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
  1924.     AH = 1Bh
  1925.     BX = network descriptor
  1926.     CX = maximum number of bytes to read
  1927.     DX = receive options (see #1846)
  1928.     DS:SI -> buffer for data
  1929.     ES:DI -> "addr" structure (see #1844) for remote from which to read
  1930.         0000h:0000h for any
  1931. Return: CF clear if successful
  1932.         AX = number of bytes actually read
  1933.         DX = ???
  1934.     CF set on error
  1935.         AX = error code (see INT 61"PC/TCP")
  1936. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  1937.  
  1938. Bitfields for PC/TCP receive options:
  1939. Bit(s)    Description    (Table 1846)
  1940.  1    do not remove data from queue, just copy it
  1941.  2    do not copy data, just remove it from queue
  1942.  5    fail if datagram would be truncated
  1943.  6    do not block, return error if no data available
  1944. Note:    special case for UDP: if both 1 and 2 set, return number of datagrams
  1945. --------N-611C-------------------------------
  1946. INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
  1947.     AH = 1Ch
  1948.     BX = network descriptor
  1949.     CX = number of bytes to transmit (0000h allowed)
  1950.     DX = send options (see #1845)
  1951.     DS:SI -> data to be written
  1952.     ES:DI -> "addr" structure (see #1844)
  1953. Return: CF clear if successful
  1954.         AX = number of bytes actually written
  1955.         DX = ???
  1956.     CF set on error
  1957.         AX = error code (see INT 61"PC/TCP")
  1958. Note:    this function differs from AH=1Ah in that the address and socket
  1959.       numbers can be overridden
  1960. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  1961. SeeAlso: INT 63/AH=21h"BW-TCP"
  1962. --------N-611D-------------------------------
  1963. INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
  1964.     AH = 1Dh
  1965.     BX = network descriptor
  1966.     CX = maximum number of bytes to read
  1967.     DX = receive options (see #1845)
  1968.     DS:SI -> buffer for received data
  1969.     ES:DI -> 9-byte buffer containing "addr" structure (see #1844)
  1970. Return: CF clear if successful
  1971.         AX = number of bytes read
  1972.         DX = ???
  1973.     CF set on error
  1974.         AX = error code (see INT 61"PC/TCP")
  1975. Notes:    this function can read from any host or a designated host depending
  1976.       on settings in the "addr" structure
  1977.     only for use with datagram or Raw descriptors
  1978. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  1979. --------N-611E-------------------------------
  1980. INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
  1981.     AH = 1Eh
  1982.     BX = network descriptor
  1983. Return: CF clear if successful
  1984.     CF set on error
  1985.         AX = error code (see INT 61"PC/TCP")
  1986. Range:    INT 20 to INT E0, selected by configuration
  1987. Notes:    bufferred data is transmitted immediately, overriding Nagle's algorithm
  1988.       if necessary
  1989.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1990. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1991. --------N-611F-------------------------------
  1992. INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
  1993.     AH = 1Fh
  1994.     BX = network descriptor
  1995.     CX = event type (see #1847)
  1996.     DS:SI -> event handler routine (see #1848)
  1997.     ES:DI = 32-bit hint passed to handler
  1998. Return: CF clear if successful
  1999.         DS:DX -> previous handler
  2000.     CF set on error
  2001.         AX = error code (see INT 61"PC/TCP")
  2002. Note:    ICMP messages do not trigger events on stream connections
  2003. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2004.  
  2005. (Table 1847)
  2006. Values for PC/TCP event type:
  2007.  00h    alarm
  2008.  01h    open (successfully opened stream connection)
  2009.  02h    receive (data available)
  2010.  03h    transmit (ACK received on stream connection)
  2011.  04h    transmit flush???
  2012.  05h    foreign close (remote host closed data connection)
  2013.  06h    close (local host closed connection and protocol is complete)
  2014.  07h    error (error code passed to handler as arg)
  2015.  
  2016. (Table 1848)
  2017. Values PC/TCP user event handler is called with:
  2018.     BX = network descriptor
  2019.     CX = event type (see #1847)
  2020.     DS:DX -> arg
  2021.     ES:DI = 32-bit hint value
  2022.     STACK:    small stack, possibly the DOS stack
  2023. --------N-6120-------------------------------
  2024. INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
  2025.     AH = 20h
  2026.     BX = network descriptor
  2027.     CX = length of buffer (usually 04h)
  2028.     DS:DX -> buffer containing option
  2029.     SI = (ignored by v2.2-)
  2030.     DI = option to set (see #1849)
  2031. Return: CF clear if successful
  2032.     CF set on error
  2033.         AX = error code (see INT 61"PC/TCP")
  2034. Note:    Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
  2035.       others return CF clear
  2036. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  2037.  
  2038. (Table 1849)
  2039. Values for PC/TCP option to get or set:
  2040.  01h    set non-blocking mode if non-zero
  2041.  02h    timeout of call in milliseconds
  2042.  03h    user-defined 4-byte magic cookie (not used by kernel)
  2043.  04h    TCP window or UDP buffer count (WORD, unsigned)
  2044.  06h    do TCP keep-alives if non-zero
  2045.  09h    (v2.1+) set IP precedence
  2046.  0Ah    (v2.1+) set IP type of service
  2047.  0Bh    use a privileged port if port = 0
  2048.  0Ch    turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
  2049. Note:    use "C" true or false values for boolean options
  2050. --------N-6121-------------------------------
  2051. INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
  2052.     AH = 21h
  2053.     BX = network descriptor
  2054.     CX = length of buffer
  2055.     DS:DX -> buffer for return values
  2056.     SI = 0004h (ignored by v2.2-)
  2057.     DI = option (see #1849)
  2058. Return: CF clear if successful
  2059.         DS:DX -> value (usually 32 bits) returned by selected option
  2060.     CF set on error
  2061.         AX = error code (see INT 61"PC/TCP")
  2062. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2063. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  2064. --------N-6122-------------------------------
  2065. INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
  2066.     AH = 22h
  2067. Return: CF clear if successful
  2068.         AX = network descriptor
  2069.     CF set on error
  2070.         AX = error code (see INT 61"PC/TCP")
  2071. Note:    the descriptor will be an integer in the range 00h-1Fh, and a DOS call
  2072.       is made to allocate this as a file descriptor.  Hence a number may
  2073.       not refer to a PC/TCP network descriptor and a DOS file handle
  2074.       simultaneously.
  2075. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
  2076. --------N-6123-------------------------------
  2077. INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
  2078.     AH = 23h
  2079.     BX = network descriptor or FFFFh to allocate descriptor
  2080.     DX = type of service
  2081.     DS:SI -> "addr" structure (see #1844)
  2082. Return: CF clear if successful
  2083.         AX = network descriptor
  2084.     CF set on error
  2085.         AX = error code (see INT 61"PC/TCP")
  2086. Notes:    type of service and "addr" structure are as for AH=13h
  2087.     any of the address structure can be zero; normally local socket number
  2088.       is filled in prior to call
  2089. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  2090. SeeAlso: INT 63/AH=12h"BW-TCP"
  2091. --------N-6124-------------------------------
  2092. INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
  2093.     AH = 24h
  2094. Return: always successful
  2095. Note:    performs "net_abort" (AH=19h) on all open non-global descriptors
  2096. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
  2097. --------N-6125-------------------------------
  2098. INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
  2099.     AH = 25h
  2100.     DX,BX = IP address in network order
  2101.     CX = length of buffer for name
  2102.     DS:SI -> buffer for host name
  2103. Return: CF clear if successful
  2104.        buffer filled with ASCIZ host name
  2105.     CF set on error
  2106.         AX = error code (see INT 61"PC/TCP")
  2107. Note:    this function will use the host table and or DNS to resolve the
  2108.       address, depending on kernel configuration.  Use this call for the
  2109.       normal gethostbyaddr function.
  2110. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
  2111. --------N-6126-------------------------------
  2112. INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
  2113.     AH = 26h
  2114.     DX,BX = IP address in network order
  2115.     CX = length of buffer
  2116.     DS:SI -> buffer for host name
  2117. Return: CF clear if successful
  2118.         buffer filled with ASCIZ host name
  2119.     CF set on error
  2120.         AX = error code (see INT 61"PC/TCP")
  2121. Notes:    normally one would use AH=25h instead of this function
  2122.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2123. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
  2124. --------N-6127-------------------------------
  2125. INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
  2126.     AH = 27h
  2127.     DX,BX = IP address in network order
  2128.     CX = length of buffer
  2129.     DS:SI -> buffer for host name
  2130. Return: CF clear if successful
  2131.         buffer filled with ASCIZ host name
  2132.     CF set on error
  2133.         AX = error code (see INT 61"PC/TCP")
  2134. Note:    normally one would use AH=25h instead of this function
  2135. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
  2136. --------N-6128-------------------------------
  2137. INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
  2138.     AH = 28h
  2139.     BX = network descriptor 1
  2140.     CX = network descriptor 2
  2141. Return: CF clear if successful
  2142.     CF set on error
  2143.         AX = error code (see INT 61"PC/TCP")
  2144. Note:    the two descriptors will exchange places; both must be local or both
  2145.       global
  2146. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2147. --------N-6129-------------------------------
  2148. INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
  2149.     AH = 29h
  2150. Return: CF clear if successful
  2151.         AX = network descriptor
  2152.     CF set on error
  2153.         AX = error code (see INT 61"PC/TCP")
  2154. Note:    use this function rather than AH=22h to avoid a DOS call by the PC/TCP
  2155.       kernel; the returned descriptor will be >= 40h and cannot be used
  2156.       with "net_select" (AH=0Eh)
  2157. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
  2158. SeeAlso: INT 61/AH=22h
  2159. --------N-612A-------------------------------
  2160. INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
  2161.     AH = 2Ah
  2162.     DS:SI -> 26-byte buffer for configuration information (see #1850)
  2163. Return: CF clear
  2164.     AX = 0000h
  2165.     buffer filled
  2166. Notes:    size of buffer may vary with kernel version; 26 bytes is the size for
  2167.       versions 2.05 through 2.2
  2168.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2169. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2170.  
  2171. Format of PC/TCP configuration information:
  2172. Offset    Size    Description    (Table 1850)
  2173.  00h    BYTE    maximum TCP connections available
  2174.  01h    BYTE    maximum UDP connections available
  2175.  02h    BYTE    maximum IP connections available
  2176.  03h    BYTE    maximum Raw Net connections available
  2177.  04h    BYTE    number of TCP connections currently in use
  2178.  05h    BYTE    number of UDP connections currently in use
  2179.  06h    BYTE    number of IP connections currently in use
  2180.  07h    BYTE    number of Raw Net connections currently in use
  2181.  08h    WORD    number of local network descriptors active
  2182.  0Ah    WORD    number of global network descriptors active
  2183.  0Ch    BYTE    maximum header size on network
  2184.  0Dh    BYTE    maximum trailer size on network
  2185.  0Eh    WORD    size of large packet buffer
  2186.  10h    WORD    number of network interfaces attached
  2187.  12h    DWORD    milliseconds since kernel started
  2188.  16h    DWORD    IP broadcast address
  2189. --------N-612B-------------------------------
  2190. INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
  2191.     AH = 2Bh
  2192.     BX = network descriptor
  2193.     CX,DX = time before alarm in milliseconds
  2194.     DS:SI -> handler which will receive call (see INT 61/AH=1Fh)
  2195.     ES:DI = 32-bit cookie passed to handler
  2196. Return: CF clear if successful
  2197.     CF set on error
  2198.         AX = error code (see INT 61"PC/TCP")
  2199. Notes:    this function will cause a NET_AS_ALARM to be generated; it is intended
  2200.       for TSRs, etc. to regain control periodically
  2201.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2202. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2203. --------N-6130-------------------------------
  2204. INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
  2205.     AH = 30h
  2206.     BX,DX = IP address of host
  2207.     CX = length of data to send
  2208. Return: CF clear if successful (i.e. reply received)
  2209.     CF set on error
  2210.         AX = error code (see INT 61"PC/TCP")
  2211. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2212. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2213. --------N-61---------------------------------
  2214. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  2215.     AH = function
  2216.         31h "net_add_route"
  2217.         32h "net_del_route"
  2218.         33h "net_dump_routes"
  2219. Notes:    these functions are described as "unused" in the v2.2 documentation
  2220.     router configuration can be altered using INT 61/AH=01h
  2221.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2222. --------N-6134-------------------------------
  2223. INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
  2224.     AH = 34h
  2225.     ???
  2226. Return: ???
  2227. Notes:    this function is described as "reserved" in the v2.2 documentation
  2228.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2229. --------N-6150-------------------------------
  2230. INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
  2231.     AH = 50h
  2232.     DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
  2233. Return: CF clear if successful
  2234.         DX:AX -> IP address
  2235.     CF set on error
  2236.         AX = error code (see INT 61"PC/TCP")
  2237. Range:    INT 20 to INT E0, selected by configuration
  2238. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2239. --------N-6151-------------------------------
  2240. INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
  2241.     AH = 51h
  2242.     CX = size of destination buffer
  2243.     DS:DX -> ASCIZ host name (max 127 chars)
  2244.     ES:DI -> destination buffer or 0000h:0000h
  2245. Return: CF clear if successful
  2246.         DX:AX -> IP address of host
  2247.         destination buffer filled with canonical host name
  2248.     CF set on error
  2249.         AX = error code (see INT 61"PC/TCP")
  2250. Note:    this function calls DOS, and can fail if the DOS call fails
  2251. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2252. --------N-6152-------------------------------
  2253. INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
  2254.     AH = 52h
  2255.     CX = size of destination buffer
  2256.     DS:DX -> ASCIZ host name (max 127 chars)
  2257.     ES:DI -> destination buffer or 0000h:0000h
  2258. Return: CF clear if successful
  2259.         DX:AX -> IP address of host
  2260.         destination buffer filled with canonical host name
  2261.     CF set on error
  2262.         AX = error code (see INT 61"PC/TCP")
  2263. Note:    this function will poll all configured domain name servers if necessary
  2264. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2265. --------N-6153-------------------------------
  2266. INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
  2267.     AH = 53h
  2268.     DS:DX -> ASCIZ name to be resolved (max 127 chars)
  2269. Return: CF clear if successful
  2270.         DX:AX -> IP address of host
  2271.     CF set on error
  2272.         AX = error code (see INT 61"PC/TCP")
  2273. Range:    INT 20 to INT E0, selected by configuration
  2274. Note:    this function is not supported by v2.10+
  2275. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2276. --------N-6154-------------------------------
  2277. INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
  2278.     AH = 54h
  2279.     CX = size of destination buffer
  2280.     DS:DX -> ASCIZ host name (max 127 chars)
  2281.     ES:DI -> destination buffer or 0000h:0000h
  2282. Return: CF clear if successful
  2283.         DX:AX -> IP address of host
  2284.         destination buffer filled with canonical host name
  2285.     CF set on error
  2286.         AX = error code (see INT 61"PC/TCP")
  2287. Note:    this function uses all configured methods in turn to resolve the
  2288.       name (numerical, then host table, then DNS, then IEN116)
  2289. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  2290.       greater than 54h in AH may crash the system.    Other kernels may have
  2291.       this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
  2292. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
  2293. SeeAlso: INT 61/AH=52h,INT 61/AH=53h
  2294. --------*-62---------------------------------
  2295. INT 62 - reserved for user interrupt
  2296. --------d-62---------------------------------
  2297. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  2298. Notes:    this vector stores the third four bytes of the parameter table for
  2299.       hard disk 0
  2300. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  2301. --------b-62---------------------------------
  2302. INT 62 - HP 95LX - USED BY CALCULATOR
  2303. SeeAlso: INT 60"HP 95LX"
  2304. ----------62---------------------------------
  2305. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  2306.     AH = function (00h to 07h)
  2307.     CX = FFFEh
  2308.     DX = FFFFh
  2309.     ???
  2310. Return: ???
  2311. Note:    the installation check consists of testing for the string "DBLIBRARY"
  2312.       2 bytes past the interrupt handler
  2313. SeeAlso: AH=08h"SQL"
  2314. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  2315. --------N-6200-------------------------------
  2316. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
  2317.     AH = 00h
  2318.     DS:DX -> 6-byte buffer for address
  2319. Return: AX = length of hardware address???
  2320. Range:    INT 60 to INT 65 ???
  2321. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  2322.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  2323.       consecutive interrupt (64h by default) if it is loaded
  2324. SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
  2325. SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  2326. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  2327. --------V-620000-----------------------------
  2328. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  2329.     AX = 0000h
  2330.     BX = page number (0000h-003Fh)
  2331. Return: AX = status (0000h,0001h,0007h,0008h) (see #1851)
  2332. Program: FGDRIVER is the external video driver for the shareware
  2333.       Fastgraph/Light by Ted Gruber Software
  2334. Notes:    For FGDRIVER v1.10, this function was "FG_GETMODE" (see AX=003Fh);
  2335.       "FG_ALLOCATE" was AX=0042h
  2336.     The amount of memory required by the virtual video page depends on the
  2337.       current video mode
  2338.     The installation check consists of testing for the signature "FG" ten
  2339.       bytes beyond the start of the interrupt handler
  2340. SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=002Eh
  2341. Index:    installation check;Fastgraph/Light
  2342.  
  2343. (Table 1851)
  2344. Values for FGDRIVER status:
  2345.  0000h    successful
  2346.  0001h    specified page is a physical or logical page
  2347.  0007h    virtual page created/released, but memory control blocks corrupted
  2348.  0008h    not enough memory
  2349.  0009h    attempt to free a page which was never created
  2350.  FFFCh    insufficient memory
  2351.  FFFDh    page already created, or exists as physical or virtual page
  2352.  FFFEh    invalid page number
  2353.  FFFFh    memory manager not initialized
  2354. --------V-620001-----------------------------
  2355. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  2356.     AX = 0001h
  2357.     BX = page number (0001h-003Fh)
  2358. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1851)
  2359. Notes:    For FGDRIVER v1.10, this function was "FG_SETMODE" (see AX=0093h);
  2360.       "FG_ALLOCCMS" was AX=009Dh
  2361.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2362.       (see AX=0012h)
  2363. SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0012h,AX=002Eh
  2364. --------V-620002-----------------------------
  2365. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  2366.     AX = 0002h
  2367.     BX = page number (0001h-003Fh)
  2368. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1851)
  2369. Notes:    For FGDRIVER v1.10, this function was "FG_TESTMODE" (see AX=00A7h);
  2370.       "FG_ALLOCEMS" was AX=009Eh
  2371.     You must first call "FG_INITEMS" (see AX=004Ch) before using this
  2372.       function
  2373.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2374.       (see AX=0012h)
  2375. SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0012h,AX=002Eh,AX=004Ch
  2376. --------V-620003-----------------------------
  2377. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  2378.     AX = 0003h
  2379.     BX = page number (0001h-003Fh)
  2380. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1851)
  2381. Notes:    For FGDRIVER v1.10, this function was "FG_BESTMODE" (see AX=0005h),
  2382.       and "FG_ALLOCXMS" was AX=009Fh
  2383.     You must first call "FG_INITXMS" (see AX=004Eh) before using this
  2384.       function
  2385.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2386.       (see AX=0012h)
  2387. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0012h,AX=002Eh,AX=004Eh
  2388. --------V-620004-----------------------------
  2389. INT 62 u - FGDRIVER v1.10,3.03 - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
  2390.     AX = 0004h
  2391. Return: AX = proposed video mode number (see #1865 at AX=0093h)
  2392. Program: FGDRIVER is the external video driver for the shareware
  2393.       Fastgraph/Light by Ted Gruber Software
  2394. SeeAlso: AX=0005h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  2395. --------V-620005-----------------------------
  2396. INT 62 u - FGDRIVER v3.03 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  2397.     AX = 0005h
  2398.     BX = horizontal resolution
  2399.     CX = vertical resolution
  2400.     DX = number of video pages required (both physical and virtual)
  2401. Return: AX = proposed video mode number or FFFFh if no matching video mode
  2402. Notes:    For FGDRIVER v1.10, this function was "FG_EGACHECK" (see AX=0023h);
  2403.        "FG_BESTMODE" was AX=0003h
  2404.     You must first call "FG_SVGAINIT" (see AX=00A1h) to get SVGA video
  2405.       modes
  2406. SeeAlso: AX=0004h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  2407. --------V-620006-----------------------------
  2408. INT 62 u - FGDRIVER v3.03 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  2409.     AX = 0006h
  2410.     BX = left column
  2411.     CX = right column
  2412.     DX = top row
  2413.     SI = bottom row
  2414. Notes:    For FGDRIVER v1.10, this function was "FG_RESET" (see AX=0081h);
  2415.       "FG_BOX" was AX=00A2h
  2416.     The rectangle is drawn in screen space, respecting the clipping region,
  2417.       with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
  2418.       (default = 1 is set by "FG_SETMODE")
  2419.     This function has no effect in text modes
  2420. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0014h,AX=001Bh,AX=0024h,AX=0076h
  2421. --------V-620007-----------------------------
  2422. INT 62 u - FGDRIVER v3.03 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  2423.     AX = 0007h
  2424.     BX = width of left and right edges in pixels (> 0)
  2425.     CX = width of top and bottom edges in pixels (> 0)
  2426. Note:    For FGDRIVER v1.10, this function was "FG_CURSOR" (see AX=0013h);
  2427.       "FG_BOXDEPTH" was AX=00A3h
  2428. SeeAlso: AX=0006h,AX=0008h
  2429. --------V-620008-----------------------------
  2430. INT 62 u - FGDRIVER v3.03 - "FG_BOXX" - XOR HOLLOW RECTANGLE
  2431.     AX = 0008h
  2432.     BX = left column
  2433.     CX = right column
  2434.     DX = top row
  2435.     SI = bottom row
  2436. Notes:    For FGDRIVER v1.10, this function was unused and "FG_BOXX" did not
  2437.       exist yet
  2438.     The rectangle is XORed into screen space, respecting the clipping
  2439.       region, with edges of the width specified with "FG_BOXDEPTH"
  2440.       (see AX=0007h) (default = 1 is set by "FG_SETMODE")
  2441.     This function has no effect in text modes
  2442. SeeAlso: AX=0006h,AX=0007h,AX=001Fh,AX=0020h,AX=0077h
  2443. --------V-620009-----------------------------
  2444. INT 62 u - FGDRIVER v3.03 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  2445.     AX = 0009h
  2446.     BX = joystick number (0001h or 0002h)
  2447. Return: AX = button states
  2448.         bit 0: top button pressed
  2449.         bit 1: bottom button pressed
  2450. Note:    For FGDRIVER v1.10, this function was unused; "FG_BUTTON" was AX=0078h
  2451. SeeAlso: AX=0044h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  2452. --------V-62000A-----------------------------
  2453. INT 62 u - FGDRIVER v3.03 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  2454.     AX = 000Ah
  2455. Return: AX = CapsLock state (0000h off, 0001h on)
  2456. Note:    For FGDRIVER v1.10, this function was "FG_GETMAXX" (see AX=003Dh);
  2457.       "FG_CAPSLOCK" was AX=0070h
  2458. SeeAlso: AX=006Ch,AX=0088h,AX=008Bh,AX=0094h
  2459. --------V-62000B-----------------------------
  2460. INT 62 u - FGDRIVER v3.03 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  2461.     AX = 000Bh
  2462.     BX = number of characters to recolor
  2463. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAXY" (see AX=003Eh);
  2464.       "FG_CHGATTR" was AX=0035h
  2465.     This call is ignored in graphics modes
  2466.     Starting at the current text cursor position, the specified number of
  2467.       characters have their attributes to the current text attribute
  2468. SeeAlso: AX=000Ch,AX=0030h,AX=008Ah
  2469. --------V-62000C-----------------------------
  2470. INT 62 u - FGDRIVER v3.03 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  2471.     AX = 000Ch
  2472.     CX = length of string
  2473.     ES:BX -> string to be displayed
  2474. Return: text cursor updated
  2475. Notes:    For FGDRIVER v1.10, this function was "FG_XALPHA" (see AX=00B0h);
  2476.       "FG_CHGTEXT" was AX=0036h
  2477.     This call is ignored in graphics modes
  2478. SeeAlso: AX=000Bh,AX=007Ch
  2479. --------V-62000D-----------------------------
  2480. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  2481.     AX = 000Dh
  2482.     BX = radius in horizontal screen space units (> 0)
  2483. Notes:    For FGDRIVER v1.10, this function was "FG_YALPHA" (see AX=00B2h);
  2484.       "FG_CIRCLE" was AX=0030h
  2485.     The circle is drawn in screen space, centered at the current graphics
  2486.       cursor position
  2487.     This call is ignored in text modes
  2488. SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0024h,AX=0079h
  2489. --------V-62000E-----------------------------
  2490. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLEF" - DRAW FILLED CIRCLE
  2491.     AX = 000Eh
  2492.     BX = radius in horizontal screen space units (> 0)
  2493. Notes:    For FGDRIVER v1.10, this function was "FG_XCONVERT" (see AX=00B1h);
  2494.       "FG_CIRCLEF" did not exist yet
  2495. SeeAlso: AX=0008h,AX=000Dh,AX=0025h,AX=0078h
  2496. --------V-62000F-----------------------------
  2497. INT 62 u - FGDRIVER v3.03 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  2498.     AX = 000Fh
  2499.     ES:BX -> array containing image stored as a masking map (see #1852)
  2500.     CX = number of pixel runs in masking map
  2501.     DX = width of masking map in pixels
  2502. Notes:    For FGDRIVER v1.10, this function was "FG_YCONVERT" (see AX=00B3h);
  2503.        "FG_CLIPMASK" was AX=0052h
  2504.     This call is ignored in text modes and in native EGA and VGA graphics
  2505.       modes
  2506.     The image is drawn with its lower left corner at the current graphics
  2507.       cursor position
  2508. SeeAlso: AX=0010h,AX=001Dh,AX=002Ah,AX=0086h,AX=008Ch,AX=00A5h
  2509. --------V-620010-----------------------------
  2510. INT 62 u - FGDRIVER v3.03 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  2511.     AX = 0010h
  2512.     ES:BX -> mode-specific bitmap
  2513.     CX = width of bit map in bytes
  2514.     DX = height of bit map in pixel rows
  2515. Notes:    For FGDRIVER v1.10, this function was "FG_GETLINES" (see AX=003Bh);
  2516.       "FG_CLPIMAGE" was AX=004Ah
  2517.     This call is ignored in text modes
  2518.     The image is drawn with its lower left corner at the current graphics
  2519.       cursor position
  2520.     The current clipping region is used, extended to a byte boundary
  2521. SeeAlso: AX=000Fh,AX=0022h,AX=002Ch,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  2522. --------V-620011-----------------------------
  2523. INT 62 u - FGDRIVER v3.03 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  2524.     AX = 0011h
  2525.     BX = screen space column of left edge
  2526.     CX = screen space column of right edge
  2527.     DX = screen space row of top edge
  2528.     SI = screen space row of bottom edge
  2529. Notes:    For FGDRIVER v1.10, this function was "FG_SETLINES" (see AX=0092h);
  2530.       "FG_CLPRECT" was AX=002Bh
  2531.     This call is ignored in text modes
  2532. SeeAlso: AX=0006h,AX=000Fh,AX=0010h,AX=0021h,AX=0080h,AX=008Ch
  2533. --------V-620012-----------------------------
  2534. INT 62 u - FGDRIVER v3.03 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  2535.     AX = 0012h
  2536.     BX = source page number (0000h-003Fh)
  2537.     CX = destination page number (0000h-003Fh)
  2538. Notes:    For FGDRIVER v1.10, this function was unused;"FG_COPYPAGE" was AX=005Fh
  2539.     If both source and destination pages are logical pages, they must both
  2540.       be located in the same type (conventional, EMS, XMS) of memory
  2541. SeeAlso: AX=0083h,AX=0087h,AX=00A6h,AX=00A9h
  2542. --------V-620013-----------------------------
  2543. INT 62 u - FGDRIVER v3.03 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  2544.     AX = 0013h
  2545.     BX = new state (0000h invisible, 0001h visible)
  2546. Notes:    For FGDRIVER v1.10, this function was unused; "FG_CURSOR" was AX=0007h
  2547.     This call is ignored in text modes
  2548. SeeAlso: AX=000Ch,AX=0045h,AX=0047h,AX=0055h,AX=005Fh,AX=0063h,AX=0068h
  2549. SeeAlso: AX=00AFh
  2550. --------V-620014-----------------------------
  2551. INT 62 u - FGDRIVER v3.03 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  2552.     AX = 0014h
  2553.     BX = endpoint column
  2554.     CX = endpoint row
  2555.     DX = dash pattern (set bits cause drawn pixels)
  2556. Notes:    For FGDRIVER v1.10, this function was "FG_DEFCOLOR" (see AX=0016h);
  2557.       "FG_DASH" was AX=0027h
  2558.     This call is ignored in text modes
  2559.     The starting point is the current graphics cursor position; the cursor
  2560.       position is updated
  2561. SeeAlso: AX=0015h,AX=001Bh,AX=0076h
  2562. --------V-620015-----------------------------
  2563. INT 62 u - FGDRIVER v3.03 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  2564.     AX = 0015h
  2565.     BX = endpoint column offset
  2566.     CX = endpoint row offset
  2567.     DX = dash pattern (set bits cause drawn pixels)
  2568. Notes:    For FGDRIVER v1.10, this function was "FG_GETCOLOR" (see AX=0034h);
  2569.       "FG_DASHREL" was AX=0028h
  2570.     This call is ignored in text modes
  2571.     The starting point is the current graphics cursor position; the cursor
  2572.       position is updated
  2573. SeeAlso: AX=0014h,AX=001Ch,AX=0076h
  2574. --------V-620016-----------------------------
  2575. INT 62 u - FGDRIVER v3.03 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  2576.     AX = 0016h
  2577.     BX = color index (0000h-00FFh)
  2578.     CX = new color value (0 to maximum color value for current video mode)
  2579. Notes:    For FGDRIVER v1.10, this function was "FG_GETINDEX" (see AX=0039h);
  2580.       "FG_DEFCOLOR" was AX=0014h
  2581.     This call is ignored in text modes and 256-color graphics modes
  2582. SeeAlso: AX=0034h,AX=0039h,AX=008Dh
  2583. --------V-620017-----------------------------
  2584. INT 62 u - FGDRIVER v3.03 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
  2585.     AX = 0017h
  2586.     BX = source page
  2587.     CX = destination page
  2588. Desc:    specify the source and destination SVGA banks for block transfers on
  2589.       extended video pages
  2590. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTE" (see AX=006Fh);
  2591.       "FG_DEFPAGES" did not exist yet
  2592.     This function is ignored if the video controller does not support
  2593.       extended pages or the current video mode does not allow them
  2594. SeeAlso: AX=0012h,AX=00A9h
  2595. --------V-620018-----------------------------
  2596. INT 62 u - FGDRIVER v3.03 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  2597.     AX = 0018h
  2598.     ES:BX -> ASCIZ filename
  2599.     CX = image width in pixels (> 0)
  2600.     DX = image format
  2601.         0000h Fastgraph standard pixel run format
  2602.         0001h packed pixel run format
  2603. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTES" (see AX=0070h);
  2604.       "FG_DISPFILE" was AX=004Fh
  2605.     This call is ignored in text modes
  2606.     The image is displayed with its lower left corner at the current
  2607.       graphics cursor position
  2608. SeeAlso: AX=0019h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  2609. --------V-620019-----------------------------
  2610. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  2611.     AX = 0019h
  2612.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  2613.     CX = number of pixel runs to display
  2614.     DX = width of image in pixels (> 0)
  2615. Notes:    For FGDRIVER v1.10, this function was "FG_SETATTR" (see AX=008Ah);
  2616.       "FG_DISPLAY" was AX=004Dh
  2617.     This call is ignored in text modes
  2618.     The image is displayed with its lower left corner at the current
  2619.       graphics cursor position
  2620. SeeAlso: AX=0018h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  2621. --------V-62001A-----------------------------
  2622. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
  2623.     AX = 001Ah
  2624.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  2625.           contains the color for the first run in its high nybble and
  2626.           the color for the second run in its low nybble)
  2627.     CX = number of pixel runs to display
  2628.     DX = width of image in pixels (> 0)
  2629. Notes:    For FGDRIVER v1.10, this function was "FG_SETCOLOR" (see AX=008Dh);
  2630.       "FG_DISPLAYP" was AX=004Eh
  2631.     This call is ignored in text modes
  2632.     The image is displayed with its lower left corner at the current
  2633.       graphics cursor position
  2634. SeeAlso: AX=0018h,AX=0019h,AX=009Ah,AX=009Bh,AX=009Ch
  2635. --------V-62001B-----------------------------
  2636. INT 62 u - FGDRIVER v3.03 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  2637.     AX = 001Bh
  2638.     BX = endpoint column
  2639.     CX = endpoint row
  2640. Notes:    For FGDRIVER v1.10, this function was "FG_SETRGB" (see AX=0096h);
  2641.       "FG_DRAW" was AX=0025h
  2642.     This call is ignored in text modes
  2643.     The starting point is the current graphics cursor position; the cursor
  2644.       position is updated
  2645. SeeAlso: AX=0014h,AX=001Eh,AX=001Fh,AX=0024h,AX=0076h,AX=0077h
  2646. --------V-62001C-----------------------------
  2647. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  2648.     AX = 001Ch
  2649.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  2650.     CX = width of bitmap in bytes
  2651.     DX = height of bitmap in pixel rows
  2652. Note:    For FGDRIVER v1.10, this function was "FG_GETRGB" (see AX=0042h);
  2653.       "FG_DRAWMAP" was AX=0047h
  2654. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  2655. --------V-62001D-----------------------------
  2656. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  2657.     AX = 001Dh
  2658.     ES:BX -> array containing image stored as a masking map (see #1852)
  2659.     CX = number of pixel runs in masking map
  2660.     DX = width of masking map in pixels
  2661. Notes:    For FGDRIVER v1.10, this function was "FG_MAPRGB" (see AX=005Ah);
  2662.       "FG_DRAWMASK" was AX=0051h
  2663.     This call is ignored in text modes and in native EGA and VGA graphics
  2664.       modes
  2665.     The image is drawn with its lower left corner at the current graphics
  2666.       cursor position
  2667. SeeAlso: AX=000Fh,AX=001Dh,AX=0086h,AX=008Ch
  2668.  
  2669. Format of FGDRIVER masking map:
  2670. Offset    Size    Description    (Table 1852)
  2671.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  2672.  01h    BYTE    length of first "zero" run (pixels set to background color)
  2673.  02h    BYTE    length of second "protect" run
  2674.  03h    BYTE    length of second "zero" run
  2675.     ...
  2676. --------V-62001E-----------------------------
  2677. INT 62 u - FGDRIVER v3.03 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  2678.     AX = 001Eh
  2679.     BX = endpoint column offset
  2680.     CX = endpoint row offset
  2681. Notes:    For FGDRIVER v1.10, this function was "FG_ERASE" (see AX=0026h);
  2682.       "FG_DRAWREL" was AX=0026h
  2683.     This call is ignored in text modes
  2684.     The starting point is the current graphics cursor position; the cursor
  2685.       position is updated
  2686. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Fh,AX=0024h,AX=0076h
  2687. --------V-62001F-----------------------------
  2688. INT 62 u - FGDRIVER v3.03 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
  2689.     AX = 001Fh
  2690.     BX = endpoint column offset
  2691.     CX = endpoint row offset
  2692. Desc:    draw a solid line, XORing each pixel onto the screen
  2693. Notes:    For FGDRIVER v1.10, this function was "FG_POINT" (see AX=0076h);
  2694.       "FG_DRAWRELX" did not exist yet
  2695.     This call is ignored in text modes
  2696.     The starting point is the current graphics cursor position; the cursor
  2697.       position is updated
  2698. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Eh,AX=0024h,AX=0077h
  2699. --------V-620020-----------------------------
  2700. INT 62 u - FGDRIVER v3.03 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
  2701.     AX = 0020h
  2702.     BX = endpoint column
  2703.     CX = endpoint row
  2704. Desc:    draw a solid line, XORing each pixel onto the screen
  2705. Notes:    For FGDRIVER v1.10, this function was "FG_GETPIXEL" (see AX=0041h);
  2706.       "FG_DRAWX" did not exist yet
  2707.     This call is ignored in text modes
  2708.     The starting point is the current graphics cursor position; the cursor
  2709.       position is updated
  2710. SeeAlso: AX=001Bh,AX=001Fh,AX=0076h
  2711. --------V-620021-----------------------------
  2712. INT 62 u - FGDRIVER v3.03 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  2713.     AX = 0021h
  2714.     BX = screen space column of left edge
  2715.     CX = screen space column of right edge
  2716.     DX = screen space row of top edge
  2717.     SI = screen space row of bottom edge
  2718.     ES:DI -> dithering matrix (video-mode dependent)
  2719. Notes:    For FGDRIVER v1.10, this function was "FG_GETXPOS" (see AX=0045h);
  2720.       "FG_DRECT" was AX=002Ch
  2721.     This call is ignored in text modes
  2722. SeeAlso: AX=0006h,AX=0008h,AX=0011h,AX=0031h,AX=0072h,AX=0080h
  2723. --------V-620022-----------------------------
  2724. INT 62 u - FGDRIVER v3.03 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  2725.     AX = 0022h
  2726.     ES:BX -> video mode-specific bitmap
  2727.     CX = width of bitmap in bytes
  2728.     DX = height of bitmap in pixel rows
  2729. Notes:    For FGDRIVER v1.10, this function was "FG_GETYPOS" (see AX=0047h);
  2730.       "FG_DRWIMAGE" was AX=0049h
  2731.     The image will be drawn with its lower left corner at the current
  2732.       cursor position (either text or graphics)
  2733. SeeAlso: AX=0010h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  2734. --------V-620023-----------------------------
  2735. INT 62 u - FGDRIVER v3.03 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  2736.     AX = 0023h
  2737. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  2738.           without an Enhanced Color Display
  2739. Note:    For FGDRIVER v1.10, this function was "FG_MOVE" (see AX=0068h);
  2740.       "FG_EGACHECK" was AX=0005h
  2741. SeeAlso: AX=00A2h
  2742. --------V-620024-----------------------------
  2743. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  2744.     AX = 0024h
  2745.     BX = horizontal semi-axis length in screen space units
  2746.     CX = vertical semi-axis length in screen space units
  2747. Notes:    For FGDRIVER v1.10, this function was "FG_MOVEREL" (see AX=0069h);
  2748.       "FG_ELLIPSE" was AX=002Dh
  2749.     This call is ignored in text modes
  2750.     The ellipse is centered at the current graphics cursor position
  2751. SeeAlso: AX=0006h,AX=000Dh,AX=0025h,AX=0076h,AX=0079h
  2752. --------V-620025-----------------------------
  2753. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
  2754.     AX = 0025h
  2755.     BX = horizontal semi-axis length in screen space units
  2756.     CX = vertical semi-axis length in screen space units
  2757. Notes:    For FGDRIVER v1.10, this function was "FG_DRAW" (see AX=001Bh);
  2758.       "FG_ELLIPSEF" did not exist yet
  2759.     This call is ignored in text modes
  2760.     The ellipse is centered at the current graphics cursor position
  2761. SeeAlso: AX=0006h,AX=000Eh,AX=0024h,AX=0076h,AX=0078h
  2762. --------V-620026-----------------------------
  2763. INT 62 u - FGDRIVER v3.03 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  2764.     AX = 0026h
  2765. Note:    For FGDRIVER v1.10, this function was "FG_DRAWREL" (see AX=001Eh);
  2766.       "FG_ERASE" was AX=001Eh
  2767.     This function sets each pixel to 0 in graphics modes, each character
  2768.       cell to a blank with a gray foreground attribute in text modes
  2769. SeeAlso: AX=0027h,AX=0029h,AX=002Bh
  2770. --------V-620027-----------------------------
  2771. INT 62 u - FGDRIVER v3.03 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  2772.     AX = 0027h
  2773.     BX = delay (0000h = fastest possible fade-in)
  2774. Notes:    For FGDRIVER v1.10, this function was "FG_DASH" (see AX=0014h);
  2775.       "FG_FADEIN" was AX=0064h
  2776.     The current hidden page is copied to the current visible page in small
  2777.       random sections to produce a fade-in effect
  2778.     This call is ignored in text modes
  2779. SeeAlso: AX=0026h,AX=0028h,AX=0029h
  2780. --------V-620028-----------------------------
  2781. INT 62 u - FGDRIVER v3.03 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  2782.     AX = 0028h
  2783.     BX = delay (0000h = fastest possible fade-out)
  2784. Notes:    For FGDRIVER v1.10, this function was "FG_DASHREL" (see AX=0015h);
  2785.       "FG_FADEOUT" was AX=0065h
  2786.     The current visible page is filled with pixels of the current color in
  2787.       small random sections to give a fade-out effect
  2788.     This call is ignored in text modes
  2789. SeeAlso: AX=0026h,AX=0027h,AX=0029h
  2790. --------V-620029-----------------------------
  2791. INT 62 u - FGDRIVER v3.03 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
  2792.     AX = 0029h
  2793. Desc:    fill the active video page with pixels of the current color (graphics
  2794.       modes) or the block character DBh with the current character
  2795.       attributes (text modes)
  2796. Note:    For FGDRIVER v1.10, this function was "FG_SETCLIP" (see AX=008Ch);
  2797.       "FG_FILLPAGE" did not exist yet
  2798. SeeAlso: AX=0026h,AX=0027h,AX=0028h
  2799. --------V-62002A-----------------------------
  2800. INT 62 u - FGDRIVER v3.03 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  2801.     AX = 002Ah
  2802.     ES:BX -> array containing image stored as a masking map (see #1852)
  2803.     CX = number of pixel runs in masking map
  2804.     DX = width of masking map in pixels
  2805. Notes:    For FGDRIVER v1.10, this function was "FG_RECT" (see AX=0080h);
  2806.       "FG_FLIPMASK" was AX=0054h
  2807.     This call is ignored in text modes and in native EGA and VGA graphics
  2808.       modes
  2809.     The image is drawn with its lower left corner at the current graphics
  2810.       cursor position
  2811. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ch,AX=0086h,AX=008Ch,AX=00A5h
  2812. --------V-62002B-----------------------------
  2813. INT 62 u - FGDRIVER v3.03 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
  2814.     AX = 002Bh
  2815.     BX = starting column
  2816.     CX = starting row
  2817. Desc:    fill the bounded region around the specified point (respecting clipping
  2818.       region) with the currrent color
  2819. Notes:    For FGDRIVER v1.10, this function was "FG_CLPRECT" (see AX=0011h);
  2820.       "FG_FLOOD" did not exist yet
  2821.     This function is ignored in text modes
  2822. SeeAlso: AX=0026h,AX=006Eh
  2823. --------V-62002C-----------------------------
  2824. INT 62 u - FGDRIVER v3.03 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  2825.     AX = 002Ch
  2826.     ES:BX -> mode-specific bitmap
  2827.     CX = width of bit map in bytes
  2828.     DX = height of bit map in pixel rows
  2829. Notes:    For FGDRIVER v1.10, this function was "FG_DRECT" (see AX=0021h);
  2830.       "FG_FLPIMAGE" was AX=004Ch
  2831.     This call is ignored in text modes
  2832.     The image is drawn with its lower left corner at the current graphics
  2833.       cursor position
  2834.     The current clipping region is used, extended to a byte boundary
  2835. SeeAlso: AX=0010h,AX=0022h,AX=002Ah,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  2836. --------V-62002D-----------------------------
  2837. INT 62 u - FGDRIVER v3.03 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
  2838.     AX = 002Dh
  2839.     BX = desired character height in scan lines (8, 14, 16)
  2840. Notes:    For FGDRIVER v1.10, this function was "FG_ELLIPSE" (see AX=0024h);
  2841.       "FG_FONTSIZE" did not exist yet
  2842.     This call is ignored if the current mode is not a VGA or SVGA graphics
  2843.       mode, or the specified character height is not 8, 14, or 16
  2844. SeeAlso: AX=007Ch
  2845. --------V-62002E-----------------------------
  2846. INT 62 u - FGDRIVER v3.03 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  2847.     AX = 002Eh
  2848.     BX = page number (0000h-003Fh)
  2849. Return: AX = status (0000h,0001h,0007h,0009h) (see #1851)
  2850. Note:    For FGDRIVER v1.10, this function was "FG_POLYGON" (see AX=0079h);
  2851.       "FG_FREEPAGE" was AX=0043h
  2852. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
  2853. --------V-62002F-----------------------------
  2854. INT 62 u - FGDRIVER v3.03 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  2855.     AX = 002Fh
  2856. Return: AX = segment of active video page
  2857. Note:    For FGDRIVER v1.10, this function was "FG_PAINT" (see AX=006Eh);
  2858.       "FG_GETADDR" was AX=0044h
  2859. SeeAlso: AX=0036h,AX=008Fh
  2860. --------V-620030-----------------------------
  2861. INT 62 u - FGDRIVER v3.03 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  2862.     AX = 0030h
  2863.     BX = row
  2864.     CX = column
  2865. Return: AX = character attribute at specified location on active video page
  2866. Notes:    For FGDRIVER v1.10, this function was "FG_CIRCLE" (see AX=000Dh);
  2867.       "FG_GETATTR" was AX=0037h
  2868.     This call is ignored in graphics modes
  2869. SeeAlso: AX=000Bh,AX=0032h,AX=0034h,AX=008Ah
  2870. --------V-620031-----------------------------
  2871. INT 62 u - FGDRIVER v3.03 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
  2872.     AX = 0031h
  2873.     ES:BX -> buffer for screen contents
  2874.     CX = leftmost column
  2875.     DX = rightmost column
  2876.     SI = top row
  2877.     DI = bottom row
  2878. Notes:    For FGDRIVER v1.10, this function was unused, and "FG_GETBLOCK" did not
  2879.       exist yet
  2880.     In text modes, coordinates are character positions; in graphics modes,
  2881.       they are defined in screen space, and the left and right edges are
  2882.       adjusted to a byte boundary if necessary
  2883.     Use "FG_IMAGESIZ" (see AX=004Bh) to determine the required buffer size
  2884. SeeAlso: AX=0038h,AX=004Bh,AX=007Dh
  2885. --------V-620032-----------------------------
  2886. INT 62 u - FGDRIVER v3.03 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  2887.     AX = 0032h
  2888.     BX = row
  2889.     CX = column
  2890. Return: AX = character at specified location on active video page
  2891. Notes:    For FGDRIVER v1.10, this function was "FG_TEXT" (see AX=00A8h);
  2892.       "FG_GETCHAR" was AX=0038h
  2893.     This call is ignored in graphics modes
  2894. SeeAlso: AX=000Bh,AX=0030h,AX=007Ch,AX=008Ah,AX=00A8h
  2895. --------V-620033-----------------------------
  2896. INT 62 u - FGDRIVER v3.03 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  2897.     AX = 0033h
  2898. Return: DX:AX = number of clock ticks since midnight
  2899. Note:    For FGDRIVER v1.10, this function was "FG_LOCATE" (see AX=0055h);
  2900.       "FG_GETCLOCK" was AX=0099h
  2901. SeeAlso: INT 1A/AH=00h
  2902. --------V-620034-----------------------------
  2903. INT 62 u - FGDRIVER v3.03 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  2904.     AX = 0034h
  2905. Return: AX = current text attribute or color index (graphics modes)
  2906. Note:    For FGDRIVER v1.10, this function was "FG_WHERE" (see AX=00AFh);
  2907.       "FG_GETCOLOR" was AX=0015h
  2908. SeeAlso: AX=000Bh,AX=0030h,AX=008Ah
  2909. --------V-620035-----------------------------
  2910. INT 62 u - FGDRIVER v3.03 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  2911.     AX = 0035h
  2912.     CX = number of DAC registers to return (0001h to 0100h)
  2913.     DX = starting DAC register number (0000h to 00FFh)
  2914.     ES:BX -> buffer for DAC red/green/blue triples
  2915. Notes:    For FGDRIVER v1.10, this function was "FG_CHGATTR" (see AX=000Bh);
  2916.       "FG_GETDACS" was AX=00A4h
  2917.     The register number wraps back to zero after FFh
  2918. SeeAlso: AX=0042h,AX=006Fh,AX=008Eh
  2919. --------V-620036-----------------------------
  2920. INT 62 u - FGDRIVER v3.03 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
  2921.     AX = 0036h
  2922.     ES:BX -> variable pointer record (see #1853)
  2923.     CX = page number (00h-3Fh)
  2924. Notes:    For FGDRIVER v1.10, this function was "FG_CHGTEXT" (see AX=000Ch);
  2925.       "FG_GETENTRY" did not exist yet
  2926.     Page addresses are segments for pages stored in conventional memory
  2927.       (including physical and virtual pages), and EMS or XMS handles for
  2928.       pages stored in EMS or XMS
  2929. SeeAlso: AX=0000h,AX=008Fh
  2930.  
  2931. Format of FGDRIVER variable pointer record:
  2932. Offset    Size    Description    (Table 1853)
  2933.  00h    WORD    segment of WORD buffer for page address
  2934.  02h    WORD    offset of WORD buffer for page address
  2935.  04h    WORD    segment of WORD buffer for page type (se #1854)
  2936.  06h    WORD    offset of WORD buffer for page type
  2937.  
  2938. (Table 1854)
  2939. Values for FGDRIVER page type:
  2940.  0000h    unallocated
  2941.  0001h    physical
  2942.  0002h    virtual
  2943.  0003h    logical page, stored in expanded memory (EMS)
  2944.  0004h    logical page, stored in extended memory (XMS)
  2945.  0005h    logical page, stored in conventional memory
  2946. --------V-620037-----------------------------
  2947. INT 62 u - FGDRIVER v3.03 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  2948.     AX = 0037h
  2949. Return: AX = current hidden video page number (0000h-003Fh)
  2950. Note:    For FGDRIVER v1.10, this function was "FG_GETATTR" (see AX=0030h);
  2951.       "FG_GETHPAGE" was AX=0040h
  2952. SeeAlso: AX=0040h,AX=0043h,AX=0091h
  2953. --------V-620038-----------------------------
  2954. INT 62 u - FGDRIVER v3.03 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  2955.     AX = 0038h
  2956.     ES:BX -> buffer for video mode-specific bitmap
  2957.     CX = width of bitmap in bytes
  2958.     DX = height of bitmap in pixel rows
  2959. Note:    For FGDRIVER v1.10, this function was "FG_GETCHAR" (see AX=0032h);
  2960.       "FG_GETIMAGE" was AX=0048h
  2961. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=007Eh,AX=0085h
  2962. --------V-620039-----------------------------
  2963. INT 62 u - FGDRIVER v3.03 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  2964.     AX = 0039h
  2965.     BX = color index (0000h to 00FFh)
  2966. Return: AX = color value for specified color index
  2967. Notes:    For FGDRIVER v1.10, this function was unused;"FG_GETINDEX" was AX=0016h
  2968.     This call returns the value passed to it in text and 256-color
  2969.       graphics modes
  2970. SeeAlso: AX=0016h,AX=0034h
  2971. --------V-62003A-----------------------------
  2972. INT 62 u - FGDRIVER v3.03 - "FG_GETKEY" - GET NEXT KEYSTROKE
  2973.     AX = 003Ah
  2974.     ES:BX -> variable pointer record (see #1855)
  2975. Return: (after next keystroke if no typeahead) variables updated
  2976. Note:    For FGDRIVER v1.10, this function was unused; "FG_GETKEY" was AX=006Eh
  2977. SeeAlso: AX=000Ah,AX=0051h,AX=0054h,AX=00ADh,INT 16/AH=00h
  2978.  
  2979. Format of FGDRIVER variable pointer record:
  2980. Offset    Size    Description    (Table 1855)
  2981.  00h    WORD    segment of BYTE buffer for ASCII keycode
  2982.  02h    WORD    offset of BYTE buffer for ASCII keycode
  2983.  04h    WORD    segment of BYTE buffer for extended keycode
  2984.  06h    WORD    offset of BYTE buffer for extended keycode
  2985. --------V-62003B-----------------------------
  2986. INT 62 u - FGDRIVER v3.03 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  2987.     AX = 003Bh
  2988. Return: AX = number of text rows on screen in current video mode
  2989. Note:    For FGDRIVER v1.10, this function was unused;"FG_GETLINES" was AX=0010h
  2990. SeeAlso: AX=0092h,AX=00A2h
  2991. --------V-62003C-----------------------------
  2992. INT 62 u - FGDRIVER v3.03 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  2993.     AX = 003Ch
  2994.     ES:BX -> buffer for video mode-independent bitmap
  2995.     CX = width of bitmap in bytes
  2996.     DX = height of bitmap in pixel rows
  2997. Return: each bit in bitmap is set if corresponding pixel is of the current
  2998.       color, cleared otherwise
  2999. Notes:    For FGDRIVER v1.10, this function was "FG_GETPAGE" (see AX=0040h);
  3000.       "FG_GETMAP" was AX=0046h
  3001.     This call is ignored in text modes
  3002. SeeAlso: AX=0010h,AX=001Ch,AX=0022h
  3003. --------V-62003D-----------------------------
  3004. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  3005.     AX = 003Dh
  3006. Return: AX = maximum X coordinate in screen space
  3007.         (or character space if in text mode)
  3008. Note:    For FGDRIVER v1.10, this function was "FG_SETPAGE" (see AX=0095h);
  3009.       "FG_GETMAXX" was AX=000Ah
  3010. SeeAlso: AX=003Eh,AX=00A1h
  3011. --------V-62003E-----------------------------
  3012. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  3013.     AX = 003Eh
  3014. Return: AX = maximum Y coordinate in screen space
  3015.         (or character space if in text mode)
  3016. Note:    For FGDRIVER v1.10, this function was "FG_GETVPAGE" (see AX=0043h);
  3017.       "FG_GETMAXY" was AX=000Bh
  3018. SeeAlso: AX=003Dh,AX=00A1h
  3019. --------V-62003F-----------------------------
  3020. INT 62 u - FGDRIVER v3.03 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  3021.     AX = 003Fh
  3022.     ES:BX -> WORD ???
  3023. Return: AX = current video mode number
  3024. Note:    For FGDRIVER v1.10, this function was "FG_SETVPAGE" (see AX=0098h);
  3025.       "FG_GETMODE" was AX=0000h
  3026. SeeAlso: AX=0093h
  3027. --------V-620040-----------------------------
  3028. INT 62 u - FGDRIVER v3.03 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  3029.     AX = 0040h
  3030. Return: AX = active video page (0000h-003Fh)
  3031. Note:    For FGDRIVER v1.10, this function was "FG_GETHPAGE" (see AX=0037h);
  3032.       "FG_GETPAGE" was AX=003Ch
  3033. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0095h
  3034. --------V-620041-----------------------------
  3035. INT 62 u - FGDRIVER v3.03 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  3036.     AX = 0041h
  3037.     BX = column in screen space
  3038.     CX = row in screen space
  3039. Return: AX = color value of pixel (0 to num_colors-1)
  3040.         0000h in text modes
  3041. Note:    For FGDRIVER v1.10, this function was "FG_SETHPAGE" (see AX=0091h);
  3042.       "FG_GETPIXEL" was AX=0020h
  3043. SeeAlso: AX=0030h,AX=0032h,AX=0076h,AX=0077h
  3044. --------V-620042-----------------------------
  3045. INT 62 u - FGDRIVER v3.03 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  3046.     AX = 0042h
  3047.     ES:BX -> variable pointer record (see #1856)
  3048.     CX = DAC register number
  3049. Return: variables updated
  3050. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCATE" (see AX=0000h);
  3051.       "FG_GETRGB" was AX=001Ch
  3052.     This call is ignored in text modes and CGA/EGA video modes (since
  3053.       they do not use DAC registers)
  3054. SeeAlso: AX=0035h,AX=006Fh,AX=008Eh
  3055.  
  3056. Format of FGDRIVER variable pointer record:
  3057. Offset    Size    Description    (Table 1856)
  3058.  00h    WORD    segment of WORD buffer for red component of DAC register
  3059.  02h    WORD    offset of WORD buffer for red component
  3060.  04h    WORD    segment of WORD buffer for green component of DAC register
  3061.  06h    WORD    offset of WORD buffer for green component
  3062.  08h    WORD    segment of WORD buffer for blue component of DAC register
  3063.  0Ah    WORD    offset of WORD buffer for blue component
  3064. --------V-620043-----------------------------
  3065. INT 62 u - FGDRIVER v3.03 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  3066.     AX = 0043h
  3067. Return: AX = visible video page (0000h-003Fh)
  3068. Note:    For FGDRIVER v1.10, this function was "FG_FREEPAGE" (see AX=002Eh);
  3069.       "FG_GETVPAGE" was AX=003Eh
  3070. SeeAlso: AX=0037h,AX=0040h,AX=0098h
  3071. --------V-620044-----------------------------
  3072. INT 62 u - FGDRIVER v3.03 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  3073.     AX = 0044h
  3074.     BX = joystick number (0001h or 0002h)
  3075. Return: AX = horizontal position of joystick
  3076.         FFFFh if joystick uninitialized or not present
  3077. Notes:    For FGDRIVER v1.10, this function was "FG_GETADDR" (see AX=002Fh);
  3078.       "FG_GETXJOY" was AX=0076h
  3079.     The actual coordinates are processor- and joystick-dependent
  3080.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  3081. SeeAlso: AX=0009h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  3082. --------V-620045-----------------------------
  3083. INT 62 u - FGDRIVER v3.03 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  3084.     AX = 0045h
  3085. Return: AX = screen space X coordinate of graphics cursor position
  3086. Note:    For FGDRIVER v1.10, this function was "FG_RESIZE" (see AX=0082h);
  3087.       "FG_GETXPOS" was AX=0021h
  3088. SeeAlso: AX=0047h,AX=0068h,AX=0069h
  3089. --------V-620046-----------------------------
  3090. INT 62 u - FGDRIVER v3.03 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  3091.     AX = 0046h
  3092.     BX = joystick number (0001h or 0002h)
  3093. Return: AX = vertical position of joystick
  3094.         FFFFh if joystick uninitialized or not present
  3095. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAP" (see AX=003Ch);
  3096.       "FG_GETYJOY" was AX=0077h
  3097.     The actual coordinates are processor- and joystick-dependent
  3098.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  3099. SeeAlso: AX=0009h,AX=0044h,AX=004Dh,AX=0050h,AX=0061h
  3100. --------V-620047-----------------------------
  3101. INT 62 u - FGDRIVER v3.03 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
  3102.     AX = 0047h
  3103. Return: AX = screen space Y coordinate of graphics cursor position
  3104. Note:    For FGDRIVER v1.10, this function was "FG_DRAWMAP" (see AX=001Ch);
  3105.       "FG_GETYPOS" was AX=0022h
  3106. SeeAlso: AX=0045h,AX=0068h,AX=0069h
  3107. --------V-620048-----------------------------
  3108. INT 62 u - FGDRIVER v3.03 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  3109.     AX = 0048h
  3110. Notes:    For FGDRIVER v1.10, this function was "FG_GETIMAGE" (see AX=0038h);
  3111.       "FG_HUSH" was AX=008Eh
  3112.     This function immediately stops any sounds started with "FG_MUSICB",
  3113.       "FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
  3114.       is playing
  3115. SeeAlso: AX=0049h,AX=006Bh,AX=009Eh,AX=00ABh
  3116. --------V-620049-----------------------------
  3117. INT 62 u - FGDRIVER v3.03 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  3118.     AX = 0049h
  3119. Program: FGDRIVER is the external video driver for the shareware
  3120.       Fastgraph/Light by Ted Gruber Software
  3121. Notes:    For FGDRIVER v1.10, this function was "FG_DRWIMAGE" (see AX=0022h);
  3122.       "FG_HUSHNEXT" was AX=008Fh
  3123.     This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  3124.       or "FG_VOICES" after the current repetition completes; it is ignored
  3125.       unless asynchronous sound is continuous
  3126. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3127. --------V-62004A-----------------------------
  3128. INT 62 u - FGDRIVER v3.03 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
  3129.     AX = 004Ah
  3130.     ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
  3131.           images
  3132.     CX = size of buffer in bytes or 0000h to use internal buffer
  3133. Notes:    For FGDRIVER v1.10, this function was "FG_CLPIMAGE" (see AX=0010h);
  3134.       "FG_IMAGEBUF" did not exist yet
  3135.     Fastgraph's internal buffer is 4096 bytes; this function allows the
  3136.       application to define a larger buffer which will typically speed
  3137.       processing
  3138. SeeAlso: AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3139. --------V-62004B-----------------------------
  3140. INT 62 u - FGDRIVER v3.03 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  3141.     AX = 004Bh
  3142.     BX = image width in pixels
  3143.     CX = image height in pixels
  3144. Note:    For FGDRIVER v1.10, this function was "FG_REVIMAGE" (see AX=0085h);
  3145.       "FG_IMAGESIZ" was AX=0062h
  3146. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  3147. SeeAlso: AX=0031h,AX=007Dh
  3148. --------V-62004C-----------------------------
  3149. INT 62 u - FGDRIVER v3.03 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  3150.     AX = 004Ch
  3151. Return: AX = status
  3152.         0000h successful
  3153.         FFFFh expanded memory manager inaccessible or not installed
  3154. Notes:    For FGDRIVER v1.10, this function was "FG_FLPIMAGE" (see AX=002Ch);
  3155.       "FG_INITEMS" was AX=00A0h
  3156. SeeAlso: AX=0002h,AX=004Eh
  3157. --------V-62004D-----------------------------
  3158. INT 62 u - FGDRIVER v3.03 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  3159.     AX = 004Dh
  3160.     BX = joystick number (0001h or 0002h)
  3161. Return: AX = status
  3162.         0000h successful
  3163.         FFFFh joystick not connected or no game port
  3164. Notes:    For FGDRIVER v1.10, this function was "FG_DISPLAY" (see AX=0019h);
  3165.       "FG_INITJOY" was AX=0075h
  3166.     Fastgraph assumes that the requested joystick is centered at the time
  3167.       this function is called
  3168. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=0050h,AX=0061h
  3169. --------V-62004E-----------------------------
  3170. INT 62 u - FGDRIVER v3.03 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  3171.     AX = 004Eh
  3172. Return: AX = status
  3173.         0000h successful
  3174.         FFFFh extended memory manager inaccessible or not installed
  3175. Note:    For FGDRIVER v1.10, this function was "FG_DISPLAYP" (see AX=001Ah);
  3176.       "FG_INITXMS" was AX=00A1h
  3177. SeeAlso: AX=0003h,AX=004Ch
  3178. --------V-62004F-----------------------------
  3179. INT 62 u - FDGRIVER v3.03 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
  3180.     AX = 004Fh
  3181.     ES:BX -> vertex array
  3182.     CX = number of vertices
  3183.     DX = screen space column of point to test
  3184.     SI = screen space row of point to test
  3185. Return: AX = result
  3186.         0000h point is outside polygon
  3187.         0001h point is inside polygon
  3188.         undefined if not a convex polygon
  3189. Note:    For FGDRIVER v1.10, this function was "FG_DISPFILE" (see AX=0018h);
  3190.       "FG_INSIDE" did not exist yet
  3191. SeeAlso: AX=0078h,AX=0079h,AX=007Ah
  3192. --------V-620050-----------------------------
  3193. INT 62 u - FGDRIVER v3.03 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  3194.     AX = 0050h
  3195.     CX = joystick number (0001h or 0002h)
  3196.     ES:BX -> variable pointer record (see #1857)
  3197. Notes:    For FGDRIVER v1.10, this function was "FG_PATTERN" (see AX=0072h);
  3198.       "FG_INTJOY" was AX=0079h
  3199.     If the indicated joystick has not been initialized with AX=0075h, both
  3200.       the button code and joystick position will be set to 00h
  3201.     If either button is pressed, a button code of 0Dh is returned;
  3202.       otherwise, a button code of 00h is returned
  3203. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=004Dh,AX=0061h
  3204.  
  3205. Format of FGDRIVER variable pointer record:
  3206. Offset    Size    Description    (Table 1857)
  3207.  00h    WORD    segment of BYTE buffer for button code
  3208.  02h    WORD    offset of BYTE buffer for button code
  3209.  04h    WORD    segment of BYTE buffer for joystick position
  3210.  06h    WORD    offset of BYTE buffer for joystick position
  3211. --------V-620051-----------------------------
  3212. INT 62 u - FGDRIVER v3.03 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  3213.     AX = 0051h
  3214.     ES:BX -> variable pointer record (see #1858)
  3215. Return: variables updated
  3216. Notes:    For FGDRIVER v1.10, this function was "FG_DRAWMASK" (see AX=001Dh);
  3217.       "FG_INTKEY" was AX=006Fh
  3218.     If the keyboard buffer is empty, both the ASCII and extended keycodes
  3219.       are set to 00h
  3220. SeeAlso: AX=000Ah,AX=003Ah,AX=0054h,AX=00ADh,INT 16/AH=01h
  3221.  
  3222. Format of FGDRIVER variable pointer record:
  3223. Offset    Size    Description    (Table 1858)
  3224.  00h    WORD    segment of BYTE buffer for ASCII keycode
  3225.  02h    WORD    offset of BYTE buffer for ASCII keycode
  3226.  04h    WORD    segment of BYTE buffer for extended keycode
  3227.  06h    WORD    offset of BYTE buffer for extended keycode
  3228. --------V-620052-----------------------------
  3229. INT 62 u - FGDRIVER v3.03 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
  3230.     AX = 0052h
  3231.     BX = horizontal justification
  3232.           (00h centered, 01h right-justified, FFh left-justified)
  3233.     CX = vertical justification
  3234.           (00h centered, 01h top of characters, FFh bottom of chars)
  3235. Note:    For FGDRIVER v1.10, this function was "FG_CLIPMASK" (see AX=000Fh);
  3236.       "FG_JUSTIFY" did not exist yet
  3237. SeeAlso: AX=000Ch,AX=002Dh,AX=007Ch
  3238. --------V-620053-----------------------------
  3239. INT 62 u - FGDRIVER v3.03 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
  3240.     AX = 0053h
  3241.     BX = new state (0000h disabled, 0001h enabled)
  3242. Notes:    For FGDRIVER v1.10, this function was "FG_REVMASK" (see AX=0086h);
  3243.       "FG_KBINIT" did not exist yet
  3244.     When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
  3245.       "FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
  3246.       services become unavailable
  3247. SeeAlso: AX=0054h
  3248. --------V-620054-----------------------------
  3249. INT 62 u - FGDRIVER v3.03 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
  3250.     AX = 0054h
  3251.     BX = scan code of desired key
  3252. Return: AX = state
  3253.         0000h key is not pressed
  3254.         0001h key is currently pressed
  3255. Notes:    For FGDRIVER v1.10, this function was "FG_FLIPMASK" (see AX=002Ah);
  3256.       "FG_KBTEST" did not exist yet
  3257.     The low-level keyboard handler must have been enabled with AX=0053h
  3258. SeeAlso: AX=0053h,INT 16/AH=01h
  3259. --------V-620055-----------------------------
  3260. INT 62 u - FGDRIVER v3.03 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  3261.     AX = 0055h
  3262.     BX = row
  3263.     CX = column
  3264. Notes:    For FGDRIVER v1.10, this function was unused; "FG_LOCATE" was AX=0033h
  3265.     There are only eight text cursors shared by successive groups of
  3266.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  3267.       share the second, etc)
  3268. SeeAlso: AX=0045h,AX=0047h,AX=0068h,AX=00AFh
  3269. --------V-620056-----------------------------
  3270. INT 62 u - FGDRIVER v3.03 - UNUSED
  3271.     AX = 0056h
  3272. Return: AX destroyed
  3273. --------V-620057-----------------------------
  3274. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  3275.     AX = 0057h
  3276.     BX = left edge in screen space units
  3277.     CX = right edge in screen space units
  3278.     DX = top edge in screen space units
  3279.     SI = bottom edge in screen space units
  3280.     ES:DI -> ASCIZ filename of PCX file to create
  3281. Return: AX = status
  3282.         0000h successful
  3283.         0001h file not created
  3284. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPCX" was AX=0061h
  3285.     The PCX file is created from the specified region of the active video
  3286.       page; the left and right edges are adjusted to a byte boundary if
  3287.       necessary
  3288.     If the specified file already exists, it is overwritten
  3289.     This call is ignored in text and Hercules low-resolution graphics modes
  3290. SeeAlso: AX=004Ah,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3291. --------V-620058-----------------------------
  3292. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
  3293.     AX = 0058h
  3294.     BX = left edge in screen space units
  3295.     CX = right edge in screen space units
  3296.     DX = top edge in screen space units
  3297.     SI = bottom edge in screen space units
  3298.     ES:DI -> ASCIZ filename of PPR file to create
  3299. Return: AX = status
  3300.         0000h successful
  3301.         0001h file not created
  3302. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPPR" did not
  3303.       exist yet
  3304.     The PPR file is created from the specified region of the active video
  3305.       page; the left and right edges are adjusted to byte boundaries if
  3306.       necessary
  3307.     If the specified file already exists, it is overwritten
  3308.     This call is ignored in text modes
  3309. SeeAlso: AX=004Ah,AX=0057h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3310. --------V-620059-----------------------------
  3311. INT 62 u - FGDRIVER v3.03 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
  3312.     AX = 0059h
  3313.     BX = left edge in screen space units
  3314.     CX = right edge in screen space units
  3315.     DX = top edge in screen space units
  3316.     SI = bottom edge in screen space units
  3317.     ES:DI -> ASCIZ filename of SPR file to create
  3318. Return: AX = status
  3319.         0000h successful
  3320.         0001h file not created
  3321. Note:    For FGDRIVER v1.10, this function was unused; "FG_MAKESPR" did not
  3322.       exist yet
  3323.     The SPR file is created from the specified region of the active video
  3324.       page; the left and right edges are adjusted to byte boundaries if
  3325.       necessary
  3326.     If the specified file already exists, it is overwritten
  3327.     This call is ignored in text modes
  3328. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=009Ah,AX=009Bh,AX=009Ch
  3329. --------V-62005A-----------------------------
  3330. INT 62 u - FGDRIVER v3.03 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  3331.     AX = 005Ah
  3332.     BX = red component
  3333.     CX = green component
  3334.     DX = blue component
  3335. Return: AX = mode-specific palette value corresponding to specified components
  3336. Notes:    For FGDRIVER v1.10, this function was "FG_SAVE" (see AX=0087h);
  3337.       "FG_MAPRGB" was AX=001Dh
  3338.     This function is only meaningful in 16-color graphics modes
  3339. SeeAlso: AX=0042h,AX=0096h
  3340. --------V-62005B-----------------------------
  3341. INT 62 u - FGDRIVER v3.03 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  3342.     AX = 005Bh
  3343. Return: AX = delay units per clock tick (processor-dependent)
  3344. Notes:    For FGDRIVER v1.10, this function was "FG_RESTORE" (see AX=0083h);
  3345.       "FG_MEASURE" was AX=0098h
  3346.     These delay units are used by "FG_STALL" (see AX=009Fh)
  3347. SeeAlso: AX=009Fh
  3348. --------V-62005C-----------------------------
  3349. INT 62 u - FGDRIVER v3.03 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  3350.     AX = 005Ch
  3351. Return: DX:AX = number of bytes of conventional memory available
  3352. Note:    For FGDRIVER v1.10, this function was "FG_TRANSFER" (see AX=00A9h);
  3353.       "FG_MEMAVAIL" was AX=009Bh
  3354. SeeAlso: AX=004Ch,AX=005Dh
  3355. --------V-62005D-----------------------------
  3356. INT 62 u - FGDRIVER v3.03 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
  3357.     AX = 005Dh
  3358. Return: AX = size of video memory in KB
  3359. Notes:    For FGDRIVER v1.10, this function was "FG_TCXFER" (see AX=00A6h);
  3360.       "FG_MEMORY" did not exist yet
  3361.     You must first call "FG_SVGAINIT" (see AX=00A1h) before using this
  3362.       function
  3363. SeeAlso: AX=005Ch
  3364. --------V-62005E-----------------------------
  3365. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  3366.     AX = 005Eh
  3367.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  3368.           -1=left release, -2=right release, -3=middle release)
  3369.     ES:BX -> variable pointer record (see #1859)
  3370. Return: variables updated
  3371. Notes:    For FGDRIVER v1.10, this function was "FG_TCMASK" (see AX=00A5h);
  3372.       "FG_MOUSEBUT" was AX=007Ch
  3373.     This function returns the count of presses or releases since the last
  3374.       call to this function; if the count is zero, row and column will
  3375.       also be zero
  3376. SeeAlso: AX=005Fh,AX=0061h,AX=0064h
  3377.  
  3378. Format of FGDRIVER variable pointer record:
  3379. Offset    Size    Description    (Table 1859)
  3380.  00h    WORD    segment of WORD buffer for press/release count
  3381.  02h    WORD    offset of WORD buffer for press/release count
  3382.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  3383.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  3384.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  3385.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  3386. --------V-62005F-----------------------------
  3387. INT 62 u - FGDRIVER v3.03 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  3388.     AX = 005Fh
  3389.     BX = screen mask
  3390.     CX = cursor mask
  3391. Notes:    For FGDRIVER v1.10, this function was "FG_COPYPAGE" (see AX=0012h);
  3392.       "FG_MOUSECUR" was AX=007Eh
  3393.     This call is ignored in graphics modes
  3394. SeeAlso: AX=0065h,AX=0067h
  3395. --------V-620060-----------------------------
  3396. INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
  3397.     AX = 0060h
  3398.     ES:BX -> ASCIZ filename
  3399.     CX = flags
  3400.         bit 0: use current palette rather than PCX file's palette
  3401.         bits 1-15 reserved (0)
  3402. Return: AX = status
  3403.         0000h success
  3404.         0001h file not found
  3405.         0002h file is not a valid PCX file
  3406. Notes:    This call is ignored in text modes and Hercules low-resolution graphics
  3407.     The image is displayed with its upper left corner at the current
  3408.       graphics cursor position
  3409. SeeAlso: AX=009Ah
  3410. --------V-620060-----------------------------
  3411. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
  3412.     AX = 0060h
  3413. Notes:    For FGDRIVER v1.10, this function was "FG_DISPPCX", which no longer
  3414.       exists; "FG_MOUSEFIN" did not exist yet
  3415.     This function should be called before switching back to text mode if
  3416.       "FG_MOUSEINI" was called while in an SVGA graphics mode
  3417. SeeAlso: AX=0061h
  3418. --------V-620061-----------------------------
  3419. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  3420.     AX = 0061h
  3421. Return: AX = status
  3422.         0002h two-button mouse
  3423.         0003h three-button mouse
  3424.         FFFFh initialization failed
  3425. Notes:    For FGDRIVER v1.10, this function was "FG_MAKEPCX" (see AX=0057h);
  3426.       "FG_MOUSEINI" was AX=007Ah
  3427.     After this call, the mouse cursor is invisible
  3428. SeeAlso: AX=0060h"3.03",AX=0062h,AX=0066h
  3429. --------V-620062-----------------------------
  3430. INT 62 u - FGDRIVER v3.03 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  3431.     AX = 0062h
  3432.     BX = left-most position allowed for mouse cursor
  3433.     CX = right-most position allowed
  3434.     DX = top-most position allowed
  3435.     SI = bottom-most position allowed
  3436. Note:    For FGDRIVER v1.10, this function was "FG_IMAGESIZ" (see AX=004Bh);
  3437.       "FG_MOUSELIM" was AX=0080h
  3438. SeeAlso: AX=0061h,AX=0063h,INT 33/AX=0007h,INT 33/AX=0008h
  3439. --------V-620063-----------------------------
  3440. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  3441.     AX = 0063h
  3442.     BX = new column
  3443.     CX = new row
  3444. Notes:    For FGDRIVER v1.10, this function was unused;"FG_MOUSEMOV" was AX=0081h
  3445.     This function will not move the mouse cursor outside the bounding box
  3446.       specified with AX=0080h
  3447. SeeAlso: AX=0062h,AX=0064h,INT 33/AX=0004h
  3448. --------V-620064-----------------------------
  3449. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  3450.     AX = 0064h
  3451.     ES:BX -> variable pointer record (see #1860)
  3452. Notes:    For FGDRIVER v1.10, this function was "FG_FADEIN" (see AX=0027h);
  3453.       "FG_MOUSEPOS" was AX=007Dh
  3454. SeeAlso: AX=0063h
  3455.  
  3456. Format of FGDRIVER variable pointer record:
  3457. Offset    Size    Description    (Table 1860)
  3458.  00h    WORD    segment of WORD buffer for mouse column
  3459.  02h    WORD    offset of WORD buffer for mouse column
  3460.  04h    WORD    segment of WORD buffer for mouse row
  3461.  06h    WORD    offset of WORD buffer for mouse row
  3462.  08h    WORD    segment of WORD buffer for button status
  3463.  0Ah    WORD    offset of WORD buffer for button status
  3464. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  3465. --------V-620065-----------------------------
  3466. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  3467.     AX = 0065h
  3468.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  3469.     CX = X offset of hot spot from upper left corner
  3470.     DX = Y offset of hot spot from upper left corner
  3471. Notes:    For FGDRIVER v1.10, this function was "FG_FADEOUT" (see AX=0028h);
  3472.       "FG_MOUSEPTR" was AX=007Fh
  3473.     This call is ignored in text modes
  3474. SeeAlso: AX=005Fh,INT 33/AX=0009h
  3475. --------V-620066-----------------------------
  3476. INT 62 u - FGDRIVER v3.03 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  3477.     AX = 0066h
  3478.     BX = horizontal mickeys per eight pixels of movement (default 16)
  3479.     CX = vertical mickeys per eight pixels of movement (default 16)
  3480. Note:    For FGDRIVER v1.10, this function was "FG_PAN" (see AX=0071h);
  3481.       "FG_MOUSESPD" was AX=0082h
  3482. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  3483. --------V-620067-----------------------------
  3484. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  3485.     AX = 0067h
  3486.     BX = new state (0000h invisible, 0001h visible)
  3487. Note:    For FGDRIVER v1.10, this function was "FG_SCROLL" (see AX=0089h);
  3488.       "FG_MOUSEVIS" was AX=007Bh
  3489. SeeAlso: AX=0061h,INT 33/AX=0001h,INT 33/AX=0002h
  3490. --------V-620068-----------------------------
  3491. INT 62 u - FGDRIVER v3.03 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  3492.     AX = 0068h
  3493.     BX = new column
  3494.     CX = new row
  3495. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVE" was AX=0023h
  3496.     This call is ignored in text modes
  3497. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0063h,AX=0069h,AX=00AFh
  3498. --------V-620069-----------------------------
  3499. INT 62 u - FGDRIVER v3.03 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  3500.     AX = 0069h
  3501.     BX = column offset
  3502.     CX = row offset
  3503. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVEREL" was AX=0024h
  3504.     This call is ignored in text modes
  3505. SeeAlso: AX=0045h,AX=0047h,AX=0068h
  3506. --------V-62006A-----------------------------
  3507. INT 62 u - FGDRIVER v3.03 - "FG_MUSIC" - PLAY SERIES OF NOTES
  3508.     AX = 006Ah
  3509.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  3510. Return: after music completed
  3511. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSIC" was AX=008Ch
  3512.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  3513.       AX=008Dh) is already in progress
  3514. SeeAlso: AX=006Bh,AX=009Dh,AX=00AAh
  3515. --------V-62006B-----------------------------
  3516. INT 62 u - FGDRIVER v3.03 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  3517.     AX = 006Bh
  3518.     CX = number of repetitions (negative = continuous play)
  3519.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  3520. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSICB" was AX=008Dh
  3521.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  3522.       AX=008Dh) is already in progress
  3523. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3524. --------V-62006C-----------------------------
  3525. INT 62 u - FGDRIVER v3.03 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  3526.     AX = 006Ch
  3527. Return: AX = NumLock state (0000h off, 0001h on)
  3528. Note:    For FGDRIVER v1.10, this function was unused; "FG_NUMLOCK" was AX=0072h
  3529. SeeAlso: AX=000Ah,AX=0088h,AX=008Bh,AX=0094h
  3530. --------V-62006D-----------------------------
  3531. INT 62 u - FGDRIVER v3.03 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
  3532.     AX = 006Dh
  3533. Return: DX:AX = page size in bytes
  3534. Note:    For FGDRIVER v1.10, this function was "FG_WAITKEY" (see AX=00ADh);
  3535.       "FG_PAGESIZE" did not exist yet
  3536. SeeAlso: AX=005Dh
  3537. --------V-62006E-----------------------------
  3538. INT 62 u - FGDRIVER v3.03 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  3539.     AX = 006Eh
  3540.     BX = column
  3541.     CX = row
  3542. Notes:    For FGDRIVER v1.10, this function was "FG_GETKEY" (see AX=003Ah);
  3543.       "FG_PAINT" was AX=002Fh
  3544.     This function fills an arbitrary closed region around the specified
  3545.       point with the current color; the screen edges are not considered
  3546.       region boundaries
  3547.     This call is ignored in text modes
  3548. SeeAlso: AX=002Bh
  3549. --------V-62006F-----------------------------
  3550. INT 62 u - FGDRIVER v3.03 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  3551.     AX = 006Fh
  3552. ---CGA 4-color graphics---
  3553.     BX = CGA paletee number
  3554.     CX = background color
  3555. ---CGA 2-color graphics---
  3556.     BX ignored
  3557.     CX = foreground color
  3558. ---16-color graphics---
  3559.     BX = palette register number
  3560.     CX = palette value
  3561. ---256-color graphics---
  3562.     BX = DAC register number
  3563.     CX =  DAC value
  3564. Notes:    For FGDRIVER v1.10, this function was "FG_INTKEY" (see AX=0051h);
  3565.       "FG_PALETTE" was AX=0017h
  3566.     This function is ignored in text modes and Hercules graphics modes
  3567.     Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  3568. SeeAlso: AX=0035h,AX=0042h,AX=0070h,AX=008Eh
  3569. --------V-620070-----------------------------
  3570. INT 62 u - FGDRIVER v3.03 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  3571.     AX = 0070h
  3572.     ES:BX -> array of 16 WORDs containing values for palette registers
  3573.           (or first 16 DAC registers in 256-color modes)
  3574. Notes:    For FGDRIVER v1.10, this function was "FG_CAPSLOCK" (see AX=000Ah);
  3575.       "FG_PALETTES" was AX=0018h
  3576.     This function is ignored in text modes, CGA and Hercules graphics modes
  3577. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,AX=008Eh
  3578. --------V-620071-----------------------------
  3579. INT 62 u - FGDRIVER v3.03 - "FG_PAN" - SET SCREEN ORIGIN
  3580.     AX = 0071h
  3581.     BX = new column for screen origin
  3582.     CX = new row for screen origin
  3583. Note:    For FGDRIVER v1.10, this function was "FG_SETCAPS" (see AX=008Bh);
  3584.       "FG_PAN" was AX=0066h
  3585. SeeAlso: AX=0095h
  3586. --------V-620072-----------------------------
  3587. INT 62 u - FGDRIVER v3.03 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  3588.     AX = 0072h
  3589.     BX = index of pattern to define
  3590.     CX = number of predefined display pattern
  3591. Notes:    For FGDRIVER v1.10, this function was "FG_NUMLOCK" (see AX=006Ch);
  3592.       "FG_PATTERN" was AX=0050h
  3593.     When displaying a pixel run map, Fastgraph uses the pattern associated
  3594.       with each color index rather than displaying the actual color
  3595.     This call has no effect in text and 256-color graphics modes
  3596. SeeAlso: AX=0021h,AX=0039h
  3597. --------V-620073-----------------------------
  3598. INT 62 u - FGDRIVER v3.03 - "FG_PCXHEAD" - GET PCX FILE HEADER
  3599.     AX = 0073h
  3600.     ES:BX -> variable pointer record (see #1861)
  3601. Return: AX = status
  3602.         0000h successful
  3603.         FFFEh not a PCX file
  3604.         FFFFh file does not exist
  3605. Note:    For FGDRIVER v1.10, this function was "FG_SETNUM" (see AX=0094h);
  3606.       "FG_PCXHEAD" did not exist yet
  3607. SeeAlso: AX=0074h,AX=009Ah
  3608.  
  3609. Format of FGDRIVER variable pointer record:
  3610. Offset    Size    Description    (Table 1861)
  3611.  00h    WORD    segment of ASCIZ filename
  3612.  02h    WORD    offset of ASCIZ filename
  3613.  04h    WORD    segment of 128-byte buffer for PCX header
  3614.  06h    WORD    offset of 128-byte buffer for PCX header
  3615. --------V-620074-----------------------------
  3616. INT 62 u - FGDRIVER v3.03 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
  3617.     AX = 0074h
  3618.     ES:BX -> PCX header (see AX=0073h)
  3619. Return: AX = optimal video mode for PCX file
  3620.         FFFEh not a valid PCX header
  3621.         FFFFh unable to determine compatible video mode
  3622. Note:    For FGDRIVER v1.10, this function was "FG_SCRLOCK" (see AX=0088h);
  3623.       "FG_PCXMODE" did not exist yet
  3624. SeeAlso: AX=0073h,AX=009Ah
  3625. --------V-620075-----------------------------
  3626. INT 62 u - FGDRIVER v3.03 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  3627.     AX = 0075h
  3628. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  3629. Note:    For FGDRIVER v1.10, this function was "FG_INITJOY" (see AX=004Dh);
  3630.       "FG_PLAYING" was AX=0091h
  3631. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3632. --------V-620076-----------------------------
  3633. INT 62 u - FGDRIVER v3.03 - "FG_POINT" - DISPLAY A PIXEL
  3634.     AX = 0076h
  3635.     BX = column
  3636.     CX = row
  3637. Notes:    For FGDRIVER v1.10, this function was "FG_GETXJOY" (see AX=0044h);
  3638.       "FG_POINT" was AX=001Fh
  3639.     This call is ignored in text modes
  3640. SeeAlso: AX=0006h,AX=001Bh,AX=0041h,AX=0077h
  3641. --------V-620077-----------------------------
  3642. INT 62 u - FGDRIVER v3.03 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
  3643.     AX = 0077h
  3644.     BX = column
  3645.     CX = row
  3646. Notes:    For FGDRIVER v1.10, this function was "FG_GETYJOY" (see AX=0046h);
  3647.       "FG_POINTX" did not exist yet
  3648.     This call is ignored in text modes
  3649. SeeAlso: AX=0041h,AX=0076h
  3650. --------V-620078-----------------------------
  3651. INT 62 u - FGDRIVER v3.03 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
  3652.     AX = 0078h
  3653.     CX = number of vertices
  3654.     ES:BX -> variable pointer record (see #1862)
  3655. Notes:    For FGDRIVER v1.10, this function was "FG_BUTTON" (see AX=0009h);
  3656.       "FG_POLYFILL" did not exist yet
  3657.     The vertex array consists of pairs of words specifying the X and Y
  3658.       coordinates of each vertex; the work array is used internally and
  3659.       must contain at least four times as many bytes as the polygon is
  3660.       high in pixels
  3661.     This function is ignored in text modes
  3662.     If the polygon is non-convex, only a portion of it may be filled
  3663. SeeAlso: AX=000Eh,AX=0025h,AX=0079h,AX=007Ah,AX=007Bh
  3664.  
  3665. Format of FGDRIVER variable pointer record:
  3666. Offset    Size    Description    (Table 1862)
  3667.  00h    WORD    segment of vertex array
  3668.  02h    WORD    offset of vertex array
  3669.  04h    WORD    segment of work array
  3670.  06h    WORD    offset of work array
  3671. --------V-620079-----------------------------
  3672. INT 62 u - FGDRIVER v3.03 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  3673.     AX = 0079h
  3674.     CX = number of vertices in polygon
  3675.     ES:BX -> variable pointer record (see #1863)
  3676. Notes:    For FGDRIVER v1.10, this function was "FG_INTJOY" (see AX=0050h);
  3677.       "FG_POLYGON" was AX=002Eh
  3678.     This call is ignored in text modes
  3679. SeeAlso: AX=0078h,AX=007Ah,AX=007Bh
  3680.  
  3681. Format of FGDRIVER variable pointer record:
  3682. Offset    Size    Description    (Table 1863)
  3683.  00h    WORD    segment of WORD array containing vertex columns
  3684.  02h    WORD    offset of WORD array containing vertex columns
  3685.  04h    WORD    segment of WORD array containing vertex rows
  3686.  06h    WORD    offset of WORD array containing vertex rows
  3687. --------V-62007A-----------------------------
  3688. INT 62 u - FGDRIVER v3.03 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
  3689.     AX = 007Ah
  3690.     CX = number of vertices in polygon
  3691.     ES:BX -> vertex array (see #1864)
  3692. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEINI" (see AX=0061h);
  3693.       "FG_POLYLINE" did not exist yet
  3694.     This function is equivalent to "FG_POLYGON", but uses only a single
  3695.       array to define the vertices
  3696.     This call is ignored in text modes
  3697. SeeAlso: AX=0076h,AX=0078h,AX=0079h,AX=007Bh
  3698.  
  3699. Format of FGDRIVER vertex array element:
  3700. Offset    Size    Description    (Table 1864)
  3701.  00h    WORD    column
  3702.  02h    WORD    row
  3703. --------V-62007B-----------------------------
  3704. INT 62 u - FGDRIVER v3.03 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
  3705.     AX = 007Bh
  3706.     BX = horizontal offset (default 0)
  3707.     CX = vertical offset (default 0)
  3708. Desc:    define the offsets applied to all vertices of polygons drawn with
  3709.       "FG_POLYFILL" or "FG_POLYLINE"
  3710. Note:    For FGDRIVER v1.10, this function was "FG_MOUSEVIS" (see AX=0067h);
  3711.       "FG_POLYOFF" did not exist yet
  3712. SeeAlso: AX=0078h,AX=007Ah
  3713. --------V-62007C-----------------------------
  3714. INT 62 u - FGDRIVER v3.03 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
  3715.     AX = 007Ch
  3716.     CX = length of string
  3717.     ES:BX -> string to display
  3718. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEBUT" (see AX=005Eh);
  3719.       "FG_PRINT" did not exist yet
  3720.     The string is displayed in the current color, and the graphics cursor
  3721.       is updated to be just to the right of the last displayed character
  3722.     This function is ignored in text modes
  3723. SeeAlso: AX=000Ch,AX=002Dh,AX=0052h
  3724. --------V-62007D-----------------------------
  3725. INT 62 u - FGDRIVER v3.03 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
  3726.     AX = 007Dh
  3727.     ES:BX -> buffer containing previously-saved image
  3728.     CX = left edge
  3729.     DX = right edge
  3730.     SI = top edge
  3731.     DI = bottom edge
  3732. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPOS" (see AX=0064h);
  3733.       "FG_PUTBLOCK" did not exist yet
  3734.     In text modes, coordinates are character positions; in graphics modes,
  3735.       they are defined in screen space, and the left and right edges are
  3736.       adjusted to a byte boundary if necessary
  3737. SeeAlso: AX=0031h,AX=007Eh
  3738. --------V-62007E-----------------------------
  3739. INT 62 u - FGDRIVER v3.03 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
  3740.     AX = 007Eh
  3741.     ES:BX -> buffer containing mode-specific bitmap
  3742.     CX = width in bytes
  3743.     DX = height in pixel rows
  3744. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSECUR" (see AX=005Fh);
  3745.       "FG_PUTIMAGE" did not exist yet
  3746.     The bitmap is displayed with its lower left corner at the graphics
  3747.       cursor position; color 0 is NOT treated as transparent
  3748. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Dh
  3749. --------V-62007F-----------------------------
  3750. INT 62 u - FGDRIVER v3.03 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  3751.     AX = 007Fh
  3752. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPTR" (see AX=0065h);
  3753.       "FG_QUIET" was AX=0090h
  3754.     This call has no effect if there is no continuous sound playing
  3755. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00ABh
  3756. --------V-620080-----------------------------
  3757. INT 62 u - FGDRIVER v3.03 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  3758.     AX = 0080h
  3759.     BX = left edge column
  3760.     CX = right edge column
  3761.     DX = top edge row
  3762.     SI = bottom edge row
  3763. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSELIM" (see AX=0062h);
  3764.       "FG_RECT" was AX=002Ah
  3765. SeeAlso: AX=0006h,AX=0011h,AX=0021h,AX=0031h
  3766. --------V-620081-----------------------------
  3767. INT 62 u - FGDRIVER v3.03 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  3768.     AX = 0081h
  3769. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEMOV" (see AX=0063h);
  3770.       "FG_RESET" was AX=0006h
  3771.     This call is ignored in graphics modes
  3772.     The screen attributes are only restored if ANSI.SYS is loaded
  3773. SeeAlso: AX=0026h,AX=0093h
  3774. --------V-620082-----------------------------
  3775. INT 62 u - FGDRIVER v3.03 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  3776.     AX = 0082h
  3777.     BX = new page width in pixels
  3778.     CX = new page height in pixels
  3779. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSESPD" (see AX=0066h);
  3780.       "FG_RESIZE" was AX=0045h
  3781.     The visible page must be set to 0000h before making this call
  3782.     The mouse, joysticks, expanded memory, and extended memory must be
  3783.       reinitialized after this call
  3784. SeeAlso: AX=006Dh,AX=008Fh
  3785. --------V-620083-----------------------------
  3786. INT 62 u - FGDRIVER v3.03 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  3787.     AX = 0083h
  3788.     BX = left edge column
  3789.     CX = right edge column
  3790.     DX = top edge row
  3791.     SI = bottom edge row
  3792. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESTORE" was AX=005Bh
  3793.     The left and right edges are adjusted to byte boundaries if necessary
  3794. SeeAlso: AX=0087h,AX=00A6h
  3795. --------V-620084-----------------------------
  3796. INT 62 u - FGDRIVER v3.03 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  3797.     AX = 0084h
  3798. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESUME" was AX=0092h
  3799. SeeAlso: AX=009Eh,AX=00A0h
  3800. --------V-620085-----------------------------
  3801. INT 62 u - FGDRIVER v3.03 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  3802.     AX = 0085h
  3803.     ES:BX -> mode-specific bitmap
  3804.     CX = width of bitmap in bytes
  3805.     DX = height of bitmap in pixel rows
  3806. Notes:    For FGDRIVER v1.10, this function was unused;"FG_REVIMAGE" was AX=004Bh
  3807.     This call is ignored in text modes
  3808.     The image is drawn with its lower left corner at the current graphics
  3809.       cursor position
  3810. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=0086h,AX=008Ch,AX=009Ah
  3811. --------V-620086-----------------------------
  3812. INT 62 u - FGDRIVER v3.03 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  3813.     AX = 0086h
  3814.     ES:BX -> array containing image stored as a masking map (see #1852)
  3815.     CX = number of pixel runs in masking map
  3816.     DX = width of masking map in pixels
  3817. Notes:    For FGDRIVER v1.10, this function was unused; "FG_REVMASK" was AX=0053h
  3818.     This call is ignored in text modes and in native EGA and VGA graphics
  3819.       modes
  3820.     The image is drawn with its lower left corner at the current graphics
  3821.       cursor position
  3822. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0085h,AX=008Ch,AX=00A5h
  3823. --------V-620087-----------------------------
  3824. INT 62 u - FGDRIVER v3.03 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  3825.     AX = 0087h
  3826.     BX = left edge column
  3827.     CX = right edge column
  3828.     DX = top edge row
  3829.     SI = bottom edge row
  3830. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SAVE" was AX=005Ah
  3831.     The left and right edges are adjusted to byte boundaries if necessary
  3832. SeeAlso: AX=0083h,AX=00A6h
  3833. --------V-620088-----------------------------
  3834. INT 62 u - FGDRIVER v3.03 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  3835.     AX = 0088h
  3836. Return: AX = ScrollLock state (0000h off, 0001h on)
  3837. Program: FGDRIVER is the external video driver for the shareware
  3838.       Fastgraph/Light by Ted Gruber Software
  3839. Note:    For FGDRIVER v1.10, this function was "FG_SOUND" (see AX=009Dh);
  3840.       "FG_SCRLOCK" was AX=0074h
  3841. SeeAlso: AX=000Ah,AX=006Ch,AX=008Bh,AX=0094h
  3842. --------V-620089-----------------------------
  3843. INT 62 u - FGDRIVER v3.03 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  3844.     AX = 0089h
  3845.     BX = left edge column
  3846.     CX = right edge column
  3847.     DX = top edge row
  3848.     SI = bottom edge row
  3849.     DI = number of pixels by which to scroll (positive scrolls up,
  3850.           negative scrolls down)
  3851.     ES = type of scroll
  3852.         0000h circular (rows scrolled off are copied to vacated rows)
  3853.         else vacated rows are filled with the current color
  3854. Notes:    For FGDRIVER v1.10, this function was "FG_SOUNDS" (see AX=009Eh);
  3855.       "FG_SCROLL" was AX=0067h
  3856.     In graphics modes, the left and right edges are adjusted to byte
  3857.       boundaries if necessary
  3858.     Circular scrolling uses part of the hidden page as a workspace
  3859. SeeAlso: AX=0071h,AX=0095h
  3860. --------V-62008A-----------------------------
  3861. INT 62 u - FGDRIVER v3.03 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  3862.     AX = 008Ah
  3863.     BX = foreground
  3864.     CX = background
  3865.     DX = blink (0000h nonblinking, 0001h blink)
  3866. Notes:    For FGDRIVER v1.10, this function was "FG_VOICE" (see AX=00AAh);
  3867.       "FG_SETATTR" was AX=0019h
  3868.     This call is ignored in graphics modes
  3869. SeeAlso: AX=000Bh,,AX=0030h,AX=0034h
  3870. --------V-62008B-----------------------------
  3871. INT 62 u - FGDRIVER v3.03 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  3872.     AX = 008Bh
  3873.     BX = new state (0000h off, 0001h on)
  3874. Note:    For FGDRIVER v1.10, this function was "FG_VOICES" (see AX=00ABh);
  3875.       "FG_SETCAPS" was AX=0071h
  3876. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=0094h
  3877. --------V-62008C-----------------------------
  3878. INT 62 u - FGDRIVER v3.03 - "FG_SETCLIP" - SET CLIPPING REGION
  3879.     AX = 008Ch
  3880.     BX = left edge of clipping region
  3881.     CX = right edge of clipping region
  3882.     DX = top edge of clipping region
  3883.     SI = bottom edge of clipping region
  3884. Note:    For FGDRIVER v1.10, this function was "FG_MUSIC" (see AX=006Ah);
  3885.       "FG_SETCLIP" was AX=0029h
  3886. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0086h,AX=00A5h
  3887. --------V-62008D-----------------------------
  3888. INT 62 u - FGDRIVER v3.03 - "FG_SETCOLOR" - SET CURRENT COLOR
  3889.     AX = 008Dh
  3890.     BX = new color index (or text attribute in text modes)
  3891. Note:    For FGDRIVER v1.10, this function was "FG_MUSICB" (see AX=006Bh);
  3892.       "FG_SETCOLOR" was AX=001Ah
  3893. SeeAlso: AX=0016h,AX=0034h,AX=0039h
  3894. --------V-62008E-----------------------------
  3895. INT 62 u - FGDRIVER v3.03 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  3896.     AX = 008Eh
  3897.     CX = number of DAC registers to set (0001h to 0100h)
  3898.     DX = starting DAC register number (0000h to 00FFh)
  3899.     ES:BX -> buffer containing DAC red/green/blue triples
  3900. Notes:    For FGDRIVER v1.10, this function was "FG_HUSH" (see AX=0048h);
  3901.       "FG_SETDACS" was AX=00A5h
  3902.     The register number wraps back to zero after reaching FFh
  3903.     This call has no effect in text modes or graphics modes below 11h
  3904. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,INT 10/AX=1012h
  3905. --------V-62008F-----------------------------
  3906. INT 62 u - FGDRIVER v3.03 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
  3907.     AX = 008Fh
  3908.     BX = page number (00h-3Fh)
  3909.     CX = page address
  3910.     DX = page type (see #1854 at AX=0036h)
  3911. Notes:    For FGDRIVER v1.10, this function was "FG_HUSHNEXT" (see AX=0049h);
  3912.       "FG_SETENTRY" did not exist yet
  3913. SeeAlso: AX=002Eh,AX=0036h,AX=0093h
  3914. --------V-620090-----------------------------
  3915. INT 62 u - FGDRIVER v3.03 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  3916.     AX = 0090h
  3917.     BX = operation
  3918.         0000h replacement
  3919.         0001h AND
  3920.         0002h OR
  3921.         0003h XOR
  3922. Notes:    For FGDRIVER v1.10, this function was "FG_QUIET" (see AX=007Fh);
  3923.       "FG_SETFUNC" was AX=009Ch
  3924.     This function is only available in native EGA/VGA graphics modes
  3925.       (0Dh to 12h)
  3926. SeeAlso: AX=001Ch,AX=0076h
  3927. --------V-620091-----------------------------
  3928. INT 62 u - FGDRIVER v3.03 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  3929.     AX = 0091h
  3930.     BX = new hidden page (0000h to 003Fh)
  3931. Notes:    For FGDRIVER v1.10, this function was "FG_PLAYING" (see AX=0075h);
  3932.       "FG_SETHPAGE" was AX=0041h
  3933.     The specified page must be a physical page or a virtual page
  3934. SeeAlso: AX=0037h,AX=0095h,AX=0098h
  3935. --------V-620092-----------------------------
  3936. INT 62 u - FGDRIVER v3.03 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  3937.     AX = 0092h
  3938.     BX = new screen size (25, 43, 50)
  3939. Note:    For FGDRIVER v1.10, this function was "FG_RESUME" (see AX=0084h);
  3940.       "FG_SETLINES" was AX=0011h
  3941. SeeAlso: AX=003Bh
  3942. --------V-620093-----------------------------
  3943. INT 62 u - FGDRIVER v3.03 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  3944.     AX = 0093h
  3945.     BX = new video mode or FFFFh for current mode
  3946.     ES:DX -> WORD ???
  3947. Notes:    For FGDRIVER v1.10, this function was "FG_SUSPEND" (see AX=00A0h);
  3948.       "FG_SETMODE" was AX=0001h
  3949.     This call resets the active video page to page 0000h, the clipping
  3950.       region to the entire screen, text rows to 25, etc.
  3951. SeeAlso: AX=003Fh,INT 10/AH=00h
  3952.  
  3953. (Table 1865)
  3954. Values for FGDRIVER video mode:
  3955.  00h-07h standard BIOS modes
  3956.  09h    PCjr/Tandy1000 320x200x16
  3957.  0Bh    Hercules graphics 720x348
  3958.  0Ch    Hercules graphics 320x200
  3959.  0Dh-13h standard BIOS modes
  3960.  14h    VGA graphics 320x200x256
  3961.  15h    VGA graphics 320x400x256
  3962.  16h    VGA graphics 320x240x256
  3963.  17h    VGA graphics 320x480x256
  3964.  18h    SVGA graphics 640x400x256
  3965.  19h    SVGA graphics 640x480x256
  3966.  1Ah    SVGA graphics 800x600x256
  3967.  1Bh    SVGA graphics 1024x768x256
  3968.  1Ch    SVGA graphics 800x600x16
  3969.  1Dh    SVGA graphics 1024x768x16
  3970. --------V-620094-----------------------------
  3971. INT 62 u - FGDRIVER v3.03 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  3972.     AX = 0094h
  3973.     BX = new state (0000h off, 0001h on)
  3974. Note:    For FGDRIVER v1.10, this function was unused; "FG_SETNUM" was AX=0073h
  3975. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=008Bh
  3976. --------V-620095-----------------------------
  3977. INT 62 u - FGDRIVER v3.03 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  3978.     AX = 0095h
  3979.     BX = new video page (0000h to 003Fh)
  3980. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SETPAGE" was AX=003Dh
  3981.     The specified page must be a physical or virtual page
  3982. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0071h
  3983. --------V-620096-----------------------------
  3984. INT 62 u - FGDRIVER v3.03 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  3985.     AX = 0096h
  3986.     BX = palette or DAC register number
  3987.     CX = red color component
  3988.     DX = green component
  3989.     SI = blue component
  3990. Notes:    For FGDRIVER v1.10, this function was "FG_WAITFOR" (see AX=00ACh);
  3991.       "FG_SETRGB" was AX=001Bh
  3992.     The register number may be negative for Tandy, PCjr, and 200-line
  3993.       EGA graphics modes to specify an intense color
  3994.     This call has no effect in text, CGA graphics, and Hercules graphics
  3995.       modes
  3996. SeeAlso: AX=0042h
  3997. --------V-620097-----------------------------
  3998. INT 62 u - FGDRIVER v3.03 - UNUSED
  3999.     AX = 0097h
  4000. Return: AX = 0000h
  4001. Note:    For FGDRIVER v1.10, this function was "FG_STALL" (see AX=009Fh)
  4002. --------V-620098-----------------------------
  4003. INT 62 u - FGDRIVER v3.03 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  4004.     AX = 0098h
  4005.     BX = new video page (0000h to 003Fh)
  4006. Notes:    For FGDRIVER v1.10, this function was "FG_MEASURE" (see AX=005Bh);
  4007.       "FG_SETVPAGE" was AX=003Fh
  4008.     The specified page must be a physical or virtual page
  4009. SeeAlso: AX=0037h,AX=0091h,AX=0095h
  4010. --------V-620099-----------------------------
  4011. INT 62 u - FGDRIVER v3.03 - UNUSED
  4012.     AX = 0099h
  4013. Return: AX destroyed
  4014. Note:    For FGDRIVER v1.10, this function was "FG_GETCLOCK" (see AX=0033h)
  4015. --------V-62009A-----------------------------
  4016. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
  4017.     AX = 009Ah
  4018.     ES:BX -> ASCIZ filename of PCX image
  4019.     CX = flags (see #1866)
  4020. Return: AX = status
  4021.         0000h success
  4022.         0001h file not found
  4023.         0002h not a PCX file
  4024. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SHOWPCX" did not
  4025.       exist yet
  4026.     This function is ignored in text modes and Hercules low-res graphics
  4027. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=0060h"1.10",AX=009Bh,AX=009Ch
  4028.  
  4029. Bitfields for FGDRIVER flags:
  4030. Bit(s)    Description    (Table 1866)
  4031.  0    use current palette rather than PCX file's palette
  4032.  1    display image at cursor position instead of position in PCX header
  4033.  2-15    reserved
  4034. --------V-62009B-----------------------------
  4035. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
  4036.     AX = 009Bh
  4037.     ES:BX -> ASCIZ filename of packed pixel run image
  4038.     CX = width in pixels (nonzero)
  4039. Return: AX = status
  4040.         0000h successful
  4041.         0001h file not found
  4042. Notes:    For FGDRIVER v1.10, this function was "FG_MEMAVAIL" (see AX=005Ch);
  4043.       "FG_SHOWPPR" did not exist yet
  4044.     The image is displayed with its lower left corner at the current
  4045.       graphics cursor position
  4046.     This function is ignored in text modes and 256-color graphics modes
  4047. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Ch
  4048. --------V-62009C-----------------------------
  4049. INT 62 u - FGDRIVER v3.03 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
  4050.     AX = 009Ch
  4051.     ES:BX -> ASCIZ filename of standard pixel run image
  4052.     CX = width in pixels (nonzero)
  4053. Return: AX = status
  4054.         0000h successful
  4055.         0001h file not found
  4056. Notes:    For FGDRIVER v1.10, this function was "FG_SETFUNC" (see AX=0090h);
  4057.       "FG_SHOWSPR" did not exist yet
  4058.     The image is displayed with its lower left corner at the current
  4059.       graphics cursor position
  4060.     This function is ignored in text modes
  4061. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh
  4062. --------V-62009D-----------------------------
  4063. INT 62 u - FGDRIVER v3.03 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  4064.     AX = 009Dh
  4065.     BX = frequency in Hertz (18-32767)
  4066.     CX = duration in clock ticks (0000h or negative for continuous sound)
  4067. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCCMS" (see AX=0001h);
  4068.       "FG_SOUND" was AX=0088h
  4069.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  4070.       AX=008Dh) is already in progress
  4071. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  4072. --------V-62009E-----------------------------
  4073. INT 62 u - FGDRIVER v3.03 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  4074.     AX = 009Eh
  4075.     CX = number of times to cycle through sound list
  4076.     ES:BX -> sounds array (see #1867)
  4077. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCEMS" (see AX=0002h);
  4078.       "FG_SOUNDS" was AX=0089h
  4079.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  4080.       AX=008Dh) is already in progress
  4081. SeeAlso: AX=0048h,AX=006Bh,AX=009Dh,AX=00A0h,AX=00ABh
  4082.  
  4083. Format of FGDRIVER sounds array element:
  4084. Offset    Size    Description    (Table 1867)
  4085.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  4086.  02h    WORD    duration of sound in clock ticks
  4087. --------V-62009F-----------------------------
  4088. INT 62 u - FGDRIVER v3.03 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  4089.     AX = 009Fh
  4090.     BX = duration in processor-dependent delay units (see AX=005Bh)
  4091. Return: after delay elapses
  4092. Note:    For FGDRIVER v1.10, this function was "FG_ALLOCXMS" (see AX=0003h);
  4093.       "FG_STALL" was AX=0097h
  4094. SeeAlso: AX=005Bh,INT 2F/AX=1224h
  4095. --------V-6200A0-----------------------------
  4096. INT 62 u - FGDRIVER v3.03 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  4097.     AX = 00A0h
  4098. Notes:    For FGDRIVER v1.10, this function was "FG_INITEMS" (see AX=004Ch);
  4099.       "FG_SUSPEND" was AX=0093h
  4100.     This call has no effect if there is no asynchronous sound in progress
  4101.     The program must not exit while sound is suspended
  4102. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  4103. --------V-6200A1-----------------------------
  4104. INT 62 u - FGDRIVER v3.03 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
  4105.     AX = 00A1h
  4106.     BX = method (see #1868)
  4107. Return: AX = status
  4108.         0000h no VESA BIOS or supported SVGA chipset
  4109.         0001h using VESA BIOS
  4110.         0002h-0016h specific chipset being used (same as "method" below)
  4111. Notes:    For FGDRIVER v1.10, this function was "FG_INITXMS" (see AX=004Eh);
  4112.       "FG_SVGAINIT" did not exist yet
  4113.     This function must be called before attempting to set SVGA graphics
  4114.       modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
  4115.       "FG_MEMORY"
  4116. SeeAlso: AX=0023h,AX=00A2h,AX=00A3h
  4117.  
  4118. (Table 1868)
  4119. Values for FGDRIVER SVGA method:
  4120.  0000h    autodetect, give chipset-specific code priority over VESA
  4121.  0001h    autodetect, give VESA priority over chipset-specific code
  4122.  0002h    Ahead type "A"
  4123.  0003h    Ahead type "B"
  4124.  0004h    ATI 18800
  4125.  0005h    ATI 18800-1
  4126.  0006h    ATI 28800
  4127.  0007h    Chips & Technologies 82c451/455/456
  4128.  0008h    C&T 82c452
  4129.  0009h    C&T 82c453
  4130.  000Ah    Genoa 6000 series
  4131.  000Bh    Oak OTI-067
  4132.  000Ch    Paradise PVGA1a
  4133.  000Dh    Paradise WD90C00/WD90C10
  4134.  000Eh    Paradise WD90C11/WD90C30/WD90C31
  4135.  000Fh    Trident 8800
  4136.  0010h    Trident 8900
  4137.  0011h    Tseng ET3000
  4138.  0012h    Tseng ET4000
  4139.  0013h    Video7
  4140.  0014h    Cirrus Logic 5400 series
  4141.  0015h    S3
  4142.  0016h    Trident 8900B/8900C/9000
  4143. --------V-6200A2-----------------------------
  4144. INT 62 u - FGDRIVER v3.03 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
  4145.     AX = 00A2h
  4146. Return: AX = chipset information (see #1869)
  4147. Note:    For FGDRIVER v1.10, this function was "FG_BOX" (see AX=0006h);
  4148.       "FG_SVGASTAT" did not exist yet
  4149. SeeAlso: AX=0023h,AX=00A1h,AX=00A3h
  4150.  
  4151. Bitfields for FGDRIVER chipset information:
  4152. Bit(s)    Description    (Table 1869)
  4153.  0    SVGA kernel initialized
  4154.  1    VESA support enabled
  4155.  2    extended video pages available in modes 13-23
  4156.  3    SVGA chipset has separate read and write banks
  4157.  4-15    reserved (0)
  4158. --------V-6200A3-----------------------------
  4159. INT 62 u - FGDRIVER v3.03 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
  4160.     AX = 00A3h
  4161.     ES:BX -> variable pointer record (see #1870)
  4162. Note:    For FGDRIVER v1.10, this function was "FG_BOXDEPTH" (see AX=0007h);
  4163.       "FG_SVGAVER" did not exist yet
  4164. SeeAlso: AX=00A1h,AX=00A2h
  4165.  
  4166. Format of FGDRIVER variable pointer record:
  4167. Offset    Size    Description    (Table 1870)
  4168.  00h    WORD    segment of WORD buffer for major version
  4169.  02h    WORD    offset of WORD buffer for major version
  4170.  04h    WORD    segment of WORD buffer for minor version (hundredths)
  4171.  06h    WORD    offset of WORD buffer for minor version
  4172. --------V-6200A4-----------------------------
  4173. INT 62 u - FGDRIVER v3.03 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
  4174.     AX = 00A4h
  4175.     BX = color index
  4176.     CX = transparency (00h opaque, other transparent)
  4177. Notes:    For FGDRIVER v1.10, this function was "FG_GETDACS" (see AX=0035h);
  4178.       "FG_TCDEFINE" did not exist yet
  4179.     This function is ignored in text modes
  4180. SeeAlso: AX=00A5h,AX=00A6h
  4181. --------V-6200A5-----------------------------
  4182. INT 62 u - FGDRIVER v3.03 - "FG_TCMASK" - SET TRANSPARENT COLORS
  4183.     AX = 00A5h
  4184.     BX = colors to consider transparent (bit 0 = color 0, etc)
  4185. Notes:    For FGDRIVER v1.10, this function was "FG_SETDACS" (see AX=008Eh);
  4186.       "FG_TCMASK" was AX=005Eh
  4187.     This call is ignored in text modes
  4188.     The specified colors are considered transparent by "FG_TCXFER"
  4189. SeeAlso: AX=00A4h,AX=00A6h
  4190. --------V-6200A6-----------------------------
  4191. INT 62 u - FGDRIVER v3.03 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  4192.     AX = 00A6h
  4193.     CX = source video page
  4194.     DX = destination video page
  4195.     ES:BX -> copy record (see #1871)
  4196. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TCXFER" was AX=005Dh
  4197.     Pixels which are in any of the colors defined as transparent with
  4198.       "FG_TCMASK" (see AX=00A5h) are left unchanged in the destination
  4199.       region
  4200.     The source and destination regions must not overlap if they are located
  4201.       on the same page
  4202.     This call is ignored in text modes
  4203. SeeAlso: AX=00A4h,AX=00A5h,AX=00A9h
  4204. --------V-6200A7-----------------------------
  4205. INT 62 u - FGDRIVER v3.03 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  4206.     AX = 00A7h
  4207.     BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
  4208.     CX = required number of video pages (ignore memory size if <= 0)
  4209. Return: AX = status
  4210.         0000h mode not available with requested number of pages
  4211.         0001h mode is available
  4212. Note:    For FGDRIVER v1.10, this function was unused;"FG_TESTMODE" was AX=0002h
  4213. SeeAlso: AX=0005h,AX=0093h
  4214. --------V-6200A8-----------------------------
  4215. INT 62 u - FGDRIVER v3.03 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  4216.     AX = 00A8h
  4217.     CX = length of string
  4218.     ES:BX -> string
  4219. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TEXT" was AX=0032h
  4220.     The string is displayed starting at the text cursor position using the
  4221.       current text attribute (text modes) or color index (graphics modes)
  4222.     The text cursor position is updated after this call
  4223. SeeAlso: AX=000Ch,AX=007Ch
  4224. --------V-6200A9-----------------------------
  4225. INT 62 u - FGDRIVER v3.03 - "FG_TRANSFER" - COPY REGION
  4226.     AX = 00A9h
  4227.     CX = source video page
  4228.     DX = destination video page
  4229.     ES:BX -> copy record (see #1871)
  4230. Notes:    For FGDRIVER v1.10, this function was unused;"FG_TRANSFER" was AX=005Ch
  4231.     The source and destination regions must not overlap if they are located
  4232.       on the same page
  4233. SeeAlso: AX=0083h,AX=0087h,AX=0089h,AX=00A6h
  4234.  
  4235. Format of FGDRIVER copy record:
  4236. Offset    Size    Description    (Table 1871)
  4237.  00h    WORD    left edge column of source region
  4238.  02h    WORD    right edge column of source region
  4239.  04h    WORD    top edge row of source region
  4240.  06h    WORD    bottom edge row of source region
  4241.  08h    WORD    left edge of destination
  4242.  0Ah    WORD    bottom edge of destination
  4243. --------V-6200AA-----------------------------
  4244. INT 62 u - FGDRIVER v3.03 - "FG_VOICE" - START SOUND
  4245.     AX = 00AAh
  4246.     BX = channel on TI sound chip
  4247.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  4248.         5 = channel 4 with white noise
  4249.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
  4250.           2=2048 Hz for channels 4 and 5)
  4251.     DX = volume
  4252.     SI = duration in clock ticks (continuous if <= 0)
  4253. Program: FGDRIVER is the external video driver for the shareware
  4254.       Fastgraph/Light by Ted Gruber Software
  4255. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICE" was AX=008Ah
  4256.     This function is only available on the PCjr and Tandy 1000 machines
  4257. SeeAlso: AX=006Ah,AX=009Dh,AX=00ABh
  4258. --------V-6200AB-----------------------------
  4259. INT 62 u - FGDRIVER v3.03 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  4260.     AX = 00ABh
  4261.     ES:BX -> tone array (see #1872)
  4262.     CX = number of times to repeat tone array
  4263. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICES" was AX=008Bh
  4264.     This function is only available on the PCjr and Tandy 1000 machines
  4265. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00AAh
  4266.  
  4267. Format of FGDRIVER tone array element:
  4268. Offset    Size    Description    (Table 1872)
  4269.  00h    WORD    channel number (0000h terminates array)
  4270.  02h    WORD    frequency
  4271.  04h    WORD    volume
  4272.  06h    WORD    duration in 1/72.8 seconds
  4273. --------V-6200AC-----------------------------
  4274. INT 62 u - FGDRIVER v3.03 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  4275.     AX = 00ACh
  4276.     BX = duration in clock ticks
  4277. Return: after delay elapses
  4278. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITFOR" was AX=0096h
  4279. SeeAlso: AX=009Fh,INT 1A/AX=FF01h
  4280. --------V-6200AD-----------------------------
  4281. INT 62 u - FGDRIVER v3.03 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  4282.     AX = 00ADh
  4283. Return: after next key pressed
  4284. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITKEY" was AX=006Dh
  4285. SeeAlso: AX=000Ah,AX=003Ah,AX=0051h,AX=0054h,INT 16/AH=00h
  4286. --------V-6200AE-----------------------------
  4287. INT 62 u - FGDRIVER v3.03 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
  4288.     AX = 00AEh
  4289.     BX = new state (0000h disabled, 0001h enabled)
  4290. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITVR" did not
  4291.       exist yet
  4292. --------V-6200AF-----------------------------
  4293. INT 62 u - FGDRIVER v3.03 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  4294.     AX = 00AFh
  4295.     ES:BX -> variable pointers (see #1873)
  4296. Return: indicated variables filled with cursor row and column for active
  4297.       display
  4298. Note:    For FGDRIVER v1.10, this function was unused; "FG_WHERE" was AX=0034h
  4299. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0068h
  4300.  
  4301. Format of FGDRIVER variable pointers:
  4302. Offset    Size    Description    (Table 1873)
  4303.  00h    WORD    segment of WORD buffer for cursor row
  4304.  02h    WORD    offset of WORD buffer for cursor row
  4305.  04h    WORD    segment WORD buffer for cursor column
  4306.  06h    WORD    offset WORD buffer for cursor column
  4307. --------V-6200B0-----------------------------
  4308. INT 62 u - FGDRIVER v3.03 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  4309.     AX = 00B0h
  4310.     BX = screen space column
  4311. Return: AX = character space column containing specified coordinate
  4312. Note:    For FGDRIVER v1.10, this function was unused; "FG_XALPHA" was AX=000Ch
  4313. SeeAlso: AX=00B1h,AX=00B2h
  4314. --------V-6200B1-----------------------------
  4315. INT 62 u - FGDRIVER v3.03 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  4316.     AX = 00B1h
  4317.     BX = character space column
  4318. Return: AX = screen space column of leftmost pixel in specified character col
  4319. Note:    For FGDRIVER v1.10, this function was unused;"FG_XCONVERT" was AX=000Eh
  4320. SeeAlso: AX=00B0h,AX=00B3h
  4321. --------V-6200B2-----------------------------
  4322. INT 62 u - FGDRIVER v3.03 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  4323.     AX = 00B2h
  4324.     BX = screen space row
  4325. Return: AX = character space row containing specified coordinate
  4326. Note:    For FGDRIVER v1.10, this function was unused; "FG_YALPHA" was AX=000Dh
  4327. SeeAlso: AX=00B0h,AX=00B3h
  4328. --------V-6200B3-----------------------------
  4329. INT 62 u - FGDRIVER v3.03 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  4330.     AX = 00B3h
  4331.     BX = character space row
  4332. Return: AX = screen space row of topmost pixel in specified character row
  4333. Program: FGDRIVER is the external video driver for the shareware
  4334.       Fastgraph/Light by Ted Gruber Software
  4335. Note:    For FGDRIVER v1.10, this function was unused;"FG_YCONVERT" was AX=000Fh
  4336. SeeAlso: AX=00B1h,AX=00B2h
  4337. --------T-6201-------------------------------
  4338. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  4339.     AH = 01h
  4340. Program: Cswitch is a set of multitasking functions by Herb Rose
  4341. SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
  4342. --------N-6201-------------------------------
  4343. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  4344.     AH = 01h
  4345. Return: CF clear if successful
  4346.     CF set on error
  4347.         AL = error code
  4348. Range:    INT 60 to INT 65 ???
  4349. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4350. --------T-6202-------------------------------
  4351. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  4352.     AH = 02h
  4353.     DX = semaphore number (0-63)
  4354. Return: AX = FFFFh bad semaphore number
  4355.          else  success
  4356. SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
  4357. --------N-6202-------------------------------
  4358. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
  4359.     AH = 02h
  4360. Return: CF clear if successful
  4361.     CF set on error
  4362.         AL = error code
  4363. SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4364. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4365. --------T-6203-------------------------------
  4366. INT 62 - Cswitch - CHECK SEMAPHORE
  4367.     AH = 03h
  4368.     DX = semaphore number (0-63)
  4369. Return: AX = status
  4370.         FFFFh not owned
  4371.         else  owned
  4372. SeeAlso: AH=02h,AH=04h
  4373. --------N-6203-------------------------------
  4374. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
  4375.     AH = 03h
  4376.     DS:SI -> DWORD buffer for IP address
  4377. Return: CF clear if successful
  4378.     CF set on error
  4379.         AL = error code
  4380. Range:    INT 60 to INT 65 ???
  4381. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4382.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4383.       consecutive interrupt (64h by default) if it is loaded
  4384. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4385. --------T-6204-------------------------------
  4386. INT 62 - Cswitch - TRIGGER SEMAPHORE
  4387.     AH = 04h
  4388.     DX = semaphore number (0-63)
  4389. Return: AX = status
  4390.         FFFFh bad semaphore number
  4391.         else  success
  4392. SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
  4393. --------N-6204-------------------------------
  4394. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  4395.     AH = 04h
  4396.     BX = ???
  4397.     ES:SI -> FAR routine for ???
  4398. Return: CF clear if successful
  4399.     CF set on error
  4400.         AL = error code
  4401. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4402. --------T-6205-------------------------------
  4403. INT 62 - Cswitch - SLEEP
  4404.     AH = 05h
  4405.     BX = seconds to sleep
  4406. SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
  4407. --------N-6205-------------------------------
  4408. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4409.     AH = 05h
  4410.     ???
  4411. Return: CF clear if successful
  4412.     CF set on error
  4413.         AL = error code
  4414. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4415. --------T-6206-------------------------------
  4416. INT 62 - Cswitch - SUSPEND
  4417.     AH = 06h
  4418. SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
  4419. --------N-6206-------------------------------
  4420. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4421.     AH = 06h
  4422.     ???
  4423. Return: CF clear if successful
  4424.     CF set on error
  4425.         AL = error code
  4426. Range:    INT 60 to INT 65 ???
  4427. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4428.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4429.       consecutive interrupt (64h by default) if it is loaded
  4430. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4431. --------T-6207-------------------------------
  4432. INT 62 - Cswitch - SPAWN
  4433.     AH = 07h
  4434.     ES:BX -> function address to start executing at
  4435.     CX = priority (1-10)
  4436. Return: AX = result/status
  4437.         FFFDh  no free memory control blocks
  4438.         FFFEh  no free task control blocks
  4439.         FFFFh  not enough memory to create new task stack
  4440.         >0       the tcb number of the new task, indicating no error
  4441. SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
  4442. --------N-6207-------------------------------
  4443. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4444.     AH = 07h
  4445.     DS:SI -> ???
  4446. Return: CF clear if successful
  4447.     CF set on error
  4448.         AL = error code
  4449. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4450. --------T-6208-------------------------------
  4451. INT 62 - Cswitch - WAKE UP TASK
  4452.     AH = 08h
  4453.     BX = tcb identifier
  4454. SeeAlso: AH=05h,AH=06h
  4455. --------N-6208-------------------------------
  4456. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4457.     AH = 08h
  4458.     CX = ???
  4459.     ES:SI -> ??? buffer (see #1874)
  4460. Return: CF clear if successful
  4461.     CF set on error
  4462.         AL = error code
  4463. Range:    INT 60 to INT 65 ???
  4464. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4465.  
  4466. Format of BW-TCP ??? buffer:
  4467. Offset    Size    Description    (Table 1874)
  4468.  00h  6 BYTEs    hardware address???
  4469.  06h  6 BYTEs    ???
  4470.  0Ch    WORD    ???
  4471.  0Eh    WORD    ???
  4472. ----------6208--CXFFFE-----------------------
  4473. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  4474.     AH = 08h
  4475.     CX = FFFEh
  4476.     DX = FFFFh
  4477. Return: AX = PSP address of resident DBLIBRARY
  4478. Note:    this call does not free the memory allocated to the TSR; the calling
  4479.       code must do the deallocation.
  4480. SeeAlso: INT 62"DBLIBRARY"
  4481. --------T-6209-------------------------------
  4482. INT 62 - Cswitch - SET PRIORITY
  4483.     AH = 09h
  4484.     BX = new base priority (1-10)
  4485. Note:    the lower the priority is numerically, the more often the task will run
  4486. --------N-6209-------------------------------
  4487. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
  4488.     AH = 09h
  4489. Return: CF clear if successful
  4490.         AX = handler ID
  4491.     CF set on error
  4492.         AL = error code
  4493. Range:    INT 60 to INT 65 ???
  4494. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4495.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4496.       consecutive interrupt (64h by default) if it is loaded
  4497. SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4498. SeeAlso: INT 64"BW-NFS"
  4499. --------T-620A-------------------------------
  4500. INT 62 - Cswitch - TEST MESSAGE QUEUE
  4501.     AH = 0Ah
  4502.     DX = queue number (0-63)
  4503. Return: AX = result/message size
  4504.         0000h nothing on queue
  4505.         FFFFh bad queue number
  4506.         else  number of bytes in first message in queue
  4507. SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
  4508. --------N-620A-------------------------------
  4509. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
  4510.     AH = 0Ah
  4511.     DX = handler ID
  4512. Return: CF clear if successful
  4513.     CF set on error
  4514.         AL = error code
  4515. SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4516. SeeAlso: INT 64"BW-NFS"
  4517. --------T-620B-------------------------------
  4518. INT 62 - Cswitch - SEND MESSAGE
  4519.     AH = 0Bh
  4520.     CX = number of bytes to write
  4521.     DS:SI -> buffer
  4522.     DX = queue number (0-63)
  4523. Return: AX = result/message size
  4524.         0000h no message was on queue
  4525.         FFFEh triggered by something arriving, redo the call
  4526.         FFFFh bad queue number
  4527.         else  number of bytes in message
  4528. SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
  4529. --------N-620B-------------------------------
  4530. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
  4531.     AH = 0Bh
  4532.     AL = ???
  4533.     DX = ???
  4534.     BP = ???
  4535.     ES:SI -> ???
  4536. Return: CF clear if successful
  4537.     CF set on error
  4538.         AL = error code
  4539. SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4540. SeeAlso: INT 64"BW-NFS"
  4541. --------T-620C-------------------------------
  4542. INT 62 - Cswitch - READ MESSAGE
  4543.     AH = 0Ch
  4544.     CX = number of bytes to read
  4545.     DS:SI -> buffer
  4546.     DX = queue number (0-63)
  4547. Return: AX = status
  4548.         FFFFh bad queue number
  4549.         else  number of bytes transferred
  4550. SeeAlso: AH=0Ah,AH=0Bh
  4551. --------N-620C-------------------------------
  4552. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
  4553.     AH = 0Ch
  4554.     DX = ???
  4555.     BP = ???
  4556. Return: CF clear if successful
  4557.     CF set on error
  4558.         AL = error code
  4559. Range:    INT 60 to INT 65 ???
  4560. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4561.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4562.       consecutive interrupt (64h by default) if it is loaded
  4563. SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4564. SeeAlso: INT 64"BW-NFS"
  4565. --------T-620D-------------------------------
  4566. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  4567.     AH = 0Dh
  4568. SeeAlso: AH=0Eh"Cswitch"
  4569. --------N-620D-------------------------------
  4570. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  4571.     AH = 0Dh
  4572. Return: CF clear if successful
  4573.     CF set on error
  4574.         AL = error code
  4575. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4576. --------T-620E-------------------------------
  4577. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  4578.     AH = 0Eh
  4579. SeeAlso: AH=0Dh"Cswitch"
  4580. --------N-620E-------------------------------
  4581. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
  4582.     AH = 0Eh
  4583. Return: CF clear if successful
  4584.     CF set on error
  4585.         AL = error code
  4586. SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4587. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4588. --------T-620F-------------------------------
  4589. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  4590.     AH = 0Fh
  4591.     ES:BX -> command line
  4592.     CX = priority (1-10)
  4593.     DX = background flag (nonzero allows loading to EMS)
  4594. Return: AX = status
  4595.         0000h task loader queue is full
  4596.         0001h  no error
  4597. SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
  4598. --------N-620F-------------------------------
  4599. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
  4600.     AH = 0Fh
  4601. Return: CF clear if successful
  4602.     CF set on error
  4603.         AL = error code
  4604. Range:    INT 60 to INT 65 ???
  4605. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4606.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4607.       consecutive interrupt (64h by default) if it is loaded
  4608. SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4609. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4610. --------T-6210-------------------------------
  4611. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  4612.     AH = 10h
  4613. SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
  4614. --------N-6210-------------------------------
  4615. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
  4616.     AH = 10h
  4617. Return: CF clear if no critical section active
  4618.     CF set if in critical section
  4619. SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4620. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4621. --------T-6211-------------------------------
  4622. INT 62 - Cswitch - GET TCB INFORMATION
  4623.     AH = 11h
  4624.     ES:BX -> a pointer which will be set to the tcb address
  4625. Return: AX = tcb indentifier
  4626. SeeAlso: AH=12h
  4627. --------N-6211-------------------------------
  4628. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  4629.     AH = 11h
  4630.     ES:SI -> ???
  4631. Return: CF clear
  4632. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4633. --------T-6212-------------------------------
  4634. INT 62 - Cswitch - GET TCB ADDRESS
  4635.     AH = 12h
  4636.     ES:BX -> a pointer which will be set to the tcb table address
  4637. Return: AX = tcb indentifier
  4638. SeeAlso: AH=11h"Cswitch"
  4639. --------N-6212-------------------------------
  4640. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
  4641.     AH = 12h
  4642. Return: CF clear if successful
  4643.         AX = socket number??? (memory variable incremented after reading)
  4644.     CF set on error
  4645.         AL = error code
  4646. Range:    INT 60 to INT 65 ???
  4647. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4648.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4649.       consecutive interrupt (64h by default) if it is loaded
  4650. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4651. --------T-6213-------------------------------
  4652. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  4653.     AH = 13h
  4654. Return: AX = result
  4655.         FFFCh no Memory Control Blocks available
  4656.         FFFDh no TCBs available
  4657.         FFFEh insufficient memory
  4658.         FFFFh cannot open file
  4659.         0000h load in progress (not done yet)
  4660.         else  tcb indentifier
  4661. SeeAlso: AH=0Fh
  4662. --------N-6213-------------------------------
  4663. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4664.     AH = 13h
  4665.     CX = ???
  4666. Return: CF clear if successful
  4667.         AL = 00h
  4668.     CF set on error
  4669.         AL = error code
  4670. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4671. --------N-6214-------------------------------
  4672. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4673.     AH = 14h
  4674.     ES:SI -> ???
  4675. Return: CF clear if successful
  4676.         AL = 00h
  4677.     CF set on error
  4678.         AL = error code
  4679. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4680. --------N-6215-------------------------------
  4681. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
  4682.     AH = 15h
  4683. Return: CF clear if successful
  4684.         AX = ??? (destroyed???)
  4685.     CF set on error
  4686.         AL = error code
  4687. Range:    INT 60 to INT 65 ???
  4688. Notes:    call this function after reading the "ETHDEV27" device
  4689.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4690.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4691.       consecutive interrupt (64h by default) if it is loaded
  4692. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4693. --------N-6216-------------------------------
  4694. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4695.     AH = 16h
  4696.     ???
  4697. Return: CF clear if successful
  4698.     CF set on error
  4699.         AL = error code
  4700. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4701. --------N-6217-------------------------------
  4702. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4703.     AH = 17h
  4704.     DX = segment of ???
  4705. Return: CF clear
  4706. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4707. --------N-6218-------------------------------
  4708. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
  4709.     AH = 18h
  4710. Return: CF clear if successful
  4711.     CF set on error
  4712.         AL = error code
  4713. Range:    INT 60 to INT 65 ???
  4714. Notes:    calls function 17h after EMS allocated and mapped
  4715.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4716.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4717.       consecutive interrupt (64h by default) if it is loaded
  4718. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4719. --------R-6247-------------------------------
  4720. INT 62 - PC Tools v7 COMMUTE - ???
  4721.     AH = 47h
  4722.     AL = subfunction (00h-31h)
  4723.     ???
  4724.     CF set
  4725. Return: ???
  4726. Program: COMMUTE is a remote-control program bundled with Central Point
  4727.       Software's PC Tools
  4728. --------R-6248-------------------------------
  4729. INT 62 - PC Tools v7 COMMUTE - ???
  4730.     AH = 48h
  4731.     AL = ???
  4732.     ???
  4733.     CF set
  4734. Return: ???
  4735. --------R-6249-------------------------------
  4736. INT 62 - PC Tools v7 COMMUTE - ???
  4737.     AH = 49h
  4738.     ???
  4739.     CF set
  4740. Return: ???
  4741. Note:    may be the same as AH=4Ch
  4742. --------R-624A-------------------------------
  4743. INT 62 - PC Tools v7 COMMUTE - ???
  4744.     AH = 4Ah
  4745.     AL = subfunction (00h-46h)
  4746.     ???
  4747.     CF set
  4748. Return: ???
  4749. --------R-624B--BX1234-----------------------
  4750. INT 62 - PC Tools v7 COMMUTE - ???
  4751.     AH = 4Bh
  4752.     BX = 1234h
  4753.     CX = 1234h
  4754.     ES = ???
  4755.     CF set
  4756. Return: ???
  4757. Program: COMMUTE is a remote-control program bundled with Central Point
  4758.       Software's PC Tools
  4759. --------R-624C-------------------------------
  4760. INT 62 - PC Tools v7 COMMUTE - ???
  4761.     AH = 4Ch
  4762.     BL = subfunction
  4763.         00h ???
  4764.         02h ???
  4765. Return: CF clear if successful
  4766.     CF set on error
  4767. --------R-626262-----------------------------
  4768. INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
  4769.     AX = 6262h
  4770.     CF set
  4771. Return: AX = 0000h
  4772.     BX = segment of resident code's PSP
  4773. Program: COMMUTE is a remote-control program bundled with Central Point
  4774.       Software's PC Tools
  4775. --------N-62FE-------------------------------
  4776. INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
  4777.     AH = FEh
  4778.     AL = direction
  4779.         00h map in driver's memory block
  4780.         01h map out driver's memory block
  4781. Return: CF clear if successful
  4782.     CF set on error
  4783.         AL = error code
  4784. Range:    INT 60 to INT 65 ???
  4785. Notes:    this function is supported by at least the SLIP and ODI versions of
  4786.       ETHDEV.SYS
  4787.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4788.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4789.       consecutive interrupt (64h by default) if it is loaded
  4790. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
  4791. SeeAlso: INT 63"BW-TCP",INT 64/AH=FEh
  4792. --------*-63---------------------------------
  4793. INT 63 - reserved for user interrupt
  4794. --------d-63---------------------------------
  4795. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  4796. Desc:    this vector stores the last four bytes of the parameter table for
  4797.       hard disk 0
  4798. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  4799. ----------63---------------------------------
  4800. INT 63 - Oracle SQL Protected Mode Executive - ???
  4801. --------d-63---------------------------------
  4802. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  4803. Desc:    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
  4804.       INT 13 has been moved there) and places the old value here
  4805. ----------63---------------------------------
  4806. INT 63 - Kofax KF9X00 image manipulation card interface
  4807. --------Q-63---------------------------------
  4808. INT 63 - DESQview/X - SOCKET API
  4809. Notes:    parameters are passed by patching!! data field immediately following
  4810.       the entry point, as detailed below; the preferred method for calling
  4811.       the socket API is via INT 15/AX=DE2Eh
  4812.     the installation check consists of testing for the string "dvxunix"
  4813.       (yes, lowercase) at offset 9 from the interrupt handler start
  4814. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  4815. Index:    installation check;DESQview/X socket interface
  4816.  
  4817. Format of DESQview/X socket interrupt handler entry:
  4818. Offset    Size    Description    (Table 1875)
  4819.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  4820.  03h    WORD    offset from following pointer for initial top of local stack
  4821.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  4822.  09h  7 BYTEs    signature "dvxunix"
  4823. --------b-6300-------------------------------
  4824. INT 63 - HP 100LX - MAP HIGH MEMORY
  4825.     AH = 00h
  4826.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  4827.     BX = zero-based logical page
  4828.     CX = page number
  4829.     DX = device ID (00h system ROM, 05h plugin, etc.)
  4830. Return: ???
  4831. SeeAlso: AH=01h
  4832. --------N-6300-------------------------------
  4833. INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
  4834.     AH = 00h
  4835.     DS:BX -> DWORD containing IP address (big-endian)
  4836. Return: CF clear if successful
  4837.     CF set on error
  4838.     AX destroyed
  4839. Range:    INT 61 to INT 66 ???
  4840. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4841.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4842.       consecutive interrupt (64h by default) if it is loaded
  4843. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  4844. --------b-6301-------------------------------
  4845. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  4846.     AH = 01h
  4847.     AL = function (00h save, 01h restore)
  4848.     ???
  4849. Return: ???
  4850. --------N-6301-------------------------------
  4851. INT 63 - BW-TCP - TCPIP.SYS - ???
  4852.     AH = 01h
  4853.     ES:BX -> ???
  4854.     ???
  4855. Return: ???
  4856. Range:    INT 61 to INT 66 ???
  4857. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4858.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4859.       consecutive interrupt (64h by default) if it is loaded
  4860. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  4861. --------N-6302-------------------------------
  4862. INT 63 - BW-TCP - TCPIP.SYS - ???
  4863.     AH = 02h
  4864.     ???
  4865. Return: ???
  4866. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  4867. --------N-6303-------------------------------
  4868. INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
  4869.     AH = 03h
  4870.     DS:SI -> buffer for DWORD IP address (big-endian)
  4871. Return: AX destroyed
  4872.     CF clear if successful
  4873.     CF set on error
  4874. Note:    this call may use ARP or RARP to determine the address
  4875. --------N-6304-------------------------------
  4876. INT 63 - BW-TCP - TCPIP.SYS - ???
  4877.     AH = 04h
  4878.     ???
  4879. Return: ???
  4880. --------N-6305-------------------------------
  4881. INT 63 - BW-TCP - TCPIP.SYS - ???
  4882.     AH = 05h
  4883.     DS:BX -> ???
  4884.     ES:SI -> ???
  4885. Return: ???
  4886. Range:    INT 61 to INT 66 ???
  4887. --------N-6306-------------------------------
  4888. INT 63 - BW-TCP - TCPIP.SYS - ???
  4889.     AH = 06h
  4890.     ???
  4891. Return: ???
  4892. --------N-6307-------------------------------
  4893. INT 63 - BW-TCP - TCPIP.SYS - ???
  4894.     AH = 07h
  4895.     ???
  4896. Return: ???
  4897. --------N-6308-------------------------------
  4898. INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
  4899.     AH = 08h
  4900.     DS:BX -> DWORD containing IP address
  4901. Return: CF clear if successful
  4902.     CF set on error
  4903.     ???
  4904. --------N-6309-------------------------------
  4905. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  4906.     AH = 09h
  4907.     BL = handler type
  4908.     ES:SI -> FAR handler of specified type
  4909. Return: ???
  4910. SeeAlso: AH=0Ah,AH=0Dh
  4911. --------N-630A-------------------------------
  4912. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  4913.     AH = 0Ah
  4914.     BL = handler type
  4915. Return: CF clear if successful
  4916.     CF set on error (no handler of specified type installed)
  4917. SeeAlso: AH=09h
  4918. --------N-630B-------------------------------
  4919. INT 63 - BW-TCP - TCPIP.SYS - ???
  4920.     AH = 0Bh
  4921.     AL = ???
  4922.     DL = ???
  4923.     DS:BX -> ???
  4924.     ES:SI -> ???
  4925. Return: ???
  4926. --------N-630C-------------------------------
  4927. INT 63 - BW-TCP - TCPIP.SYS - ???
  4928.     AH = 0Ch
  4929.     ???
  4930. Return: ???
  4931. Range:    INT 61 to INT 66 ???
  4932. --------N-630D-------------------------------
  4933. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  4934.     AH = 0Dh
  4935.     ???
  4936. Return: ???
  4937. Note:    if not already installed, installs a type 06h handler with AH=09h
  4938. SeeAlso: AH=09h
  4939. --------N-630E-------------------------------
  4940. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  4941.     AH = 0Eh
  4942.     ???
  4943. Return: ???
  4944. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  4945. --------N-630F-------------------------------
  4946. INT 63 - BW-TCP - TCPIP.SYS - ???
  4947.     AH = 0Fh
  4948.     AL = ???
  4949.     SI = ???
  4950.     DS:DI -> ???
  4951.     ???
  4952. Return: ???
  4953. Range:    INT 61 to INT 66 ???
  4954. --------N-6310-------------------------------
  4955. INT 63 - BW-TCP - TCPIP.SYS - ???
  4956.     AH = 10h
  4957.     DS:DI -> ???
  4958.     ???
  4959. Return: ???
  4960. --------N-6311-------------------------------
  4961. INT 63 - BW-TCP - TCPIP.SYS - ???
  4962.     AH = 11h
  4963.     ???
  4964. Return: ???
  4965. --------N-6312-------------------------------
  4966. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  4967.     AH = 12h
  4968.     DS:SI -> ???
  4969.     ES:BP -> ???
  4970. Return: ???
  4971. SeeAlso: INT 61/AH=23h
  4972. --------N-6313-------------------------------
  4973. INT 63 - BW-TCP - TCPIP.SYS - NOP
  4974.     AH = 13h
  4975. Return: nothing
  4976. Range:    INT 61 to INT 66 ???
  4977. --------N-6314-------------------------------
  4978. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  4979.     AH = 14h
  4980.     BX = network descriptor???
  4981.     DS:SI -> ???
  4982.     ES:BP -> ???
  4983. Return: ???
  4984. SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  4985. --------N-6315-------------------------------
  4986. INT 63 - BW-TCP - TCPIP.SYS - ???
  4987.     AH = 15h
  4988.     DS:DI -> ???
  4989.     ???
  4990. Return: ???
  4991. --------N-6316-------------------------------
  4992. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  4993.     AH = 16h
  4994.     DS:DI -> ???
  4995. Return: ???
  4996. Note:    calls AH=17h after preprocessing
  4997. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  4998. --------N-6317-------------------------------
  4999. INT 63 - BW-TCP - TCPIP.SYS - ???
  5000.     AH = 17h
  5001.     DS:DI -> ???
  5002.     ???
  5003. Return: ???
  5004. Range:    INT 61 to INT 66 ???
  5005. SeeAlso: AH=18h
  5006. --------N-6318-------------------------------
  5007. INT 63 - BW-TCP - TCPIP.SYS - ???
  5008.     AH = 18h
  5009.     DS:DI -> ???
  5010.     ???
  5011. Return: ???
  5012. Note:    same as AH=17h, except performed with interrupts disabled
  5013. SeeAlso: AH=17h
  5014. --------N-6319-------------------------------
  5015. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  5016.     AH = 19h
  5017.     DS:DI -> ???
  5018.     ???
  5019. Return: BX = number of bytes NOT written
  5020.     ???
  5021. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  5022. SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  5023. --------N-631A-------------------------------
  5024. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  5025.     AH = 1Ah
  5026.     CX = maximum number of bytes to read
  5027.     ES:BP -> ???
  5028.     ???
  5029. Return: CX = number of bytes actually read
  5030.     ???
  5031. SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
  5032. --------N-631B-------------------------------
  5033. INT 63 - BW-TCP - TCPIP.SYS - ???
  5034.     AH = 1Bh
  5035.     CX = ???
  5036.     ES:BP -> ???
  5037. Return: DX = ???
  5038.     ???
  5039. Range:    INT 61 to INT 66 ???
  5040. --------N-631C-------------------------------
  5041. INT 63 - BW-TCP - TCPIP.SYS - ???
  5042.     AH = 1Ch
  5043.     DS:DI -> ???
  5044.     ???
  5045. Return: ???
  5046. Note:    calls AH=17h with ???
  5047. SeeAlso: AH=17h
  5048. --------N-631D-------------------------------
  5049. INT 63 - BW-TCP - TCPIP.SYS - ???
  5050.     AH = 1Dh
  5051.     ???
  5052. Return: ???
  5053. --------N-631E-------------------------------
  5054. INT 63 - BW-TCP - TCPIP.SYS - ???
  5055.     AH = 1Eh
  5056.     DS:BX -> DWORD containing IP address (big-endian)
  5057.     ???
  5058. Return: CF clear if successful
  5059.     CF set on error
  5060.     ???
  5061. --------N-631F-------------------------------
  5062. INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
  5063.     AH = 1Fh
  5064.     BX = socket number
  5065.     ES:SI -> FAR function for ???
  5066. Return: CF clear if successful
  5067.     CF set on error (out of slots)
  5068. SeeAlso: AH=20h
  5069. --------N-6320-------------------------------
  5070. INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
  5071.     AH = 20h
  5072.     BX = socket number
  5073. Return: CF clear if successful
  5074.     CF set on error (not set)
  5075. Range:    INT 61 to INT 66 ???
  5076. SeeAlso: AH=1Fh
  5077. --------N-6321-------------------------------
  5078. INT 63 - BW-TCP - TCPIP.SYS - ???
  5079.     AH = 21h
  5080.     ES:SI -> ???
  5081. Return: ???
  5082. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  5083. --------N-6322-------------------------------
  5084. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  5085.     AH = 22h
  5086. Return: CF clear
  5087. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  5088.       if the counter reaches zero
  5089. --------N-6323-------------------------------
  5090. INT 63 - BW-TCP - TCPIP.SYS - ???
  5091.     AH = 23h
  5092.     DS:BX -> ???
  5093.     ES:SI -> 6-byte buffer for ???
  5094. Return: CF clear if successful
  5095.     CF set on error
  5096. --------N-6324-------------------------------
  5097. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  5098.     AH = 24h
  5099. Return: AX = socket number (0400h-FFFFh)
  5100. Range:    INT 61 to INT 66 ???
  5101. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5102.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5103.       consecutive interrupt (64h by default) if it is loaded
  5104. SeeAlso: INT 62/AH=12h"ETHDEV",INT 64"BW-NFS"
  5105. --------N-6325-------------------------------
  5106. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  5107.     AH = 25h
  5108. Return: CL:CH:DL:DH = caller's Internet address
  5109. SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
  5110. --------N-6326-------------------------------
  5111. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  5112.     AH = 26h
  5113.     CL:CH:DL:DH = Internet address
  5114. Return: nothing
  5115. Note:    this function sets a different variable than AH=25h returns
  5116. SeeAlso: AH=25h
  5117. --------N-6327-------------------------------
  5118. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  5119.     AH = 27h
  5120.     BX = ???
  5121.     ES:SI -> ???
  5122. Return: ???
  5123. --------N-6328-------------------------------
  5124. INT 63 - BW-TCP - TCPIP.SYS - ???
  5125.     AH = 28h
  5126.     ???
  5127. Return: ???
  5128. --------N-6329-------------------------------
  5129. INT 63 - BW-TCP - TCPIP.SYS - ???
  5130.     AH = 29h
  5131.     ???
  5132. Return: ???
  5133. Range:    INT 61 to INT 66 ???
  5134. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5135.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5136.       consecutive interrupt (64h by default) if it is loaded
  5137. --------*-64---------------------------------
  5138. INT 64 - reserved for user interrupt
  5139. --------d-64---------------------------------
  5140. INT 64 - Adaptec controllers - DRIVE 1 DATA
  5141. Desc:    this vector stores the first four bytes of the parameter table for
  5142.       hard disk 1
  5143. Notes:    these vectors are used by the following Adaptec controllers:
  5144.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  5145.     these vectors are NOT used by the following Adaptec controllers:
  5146.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  5147. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  5148. ----------64---------------------------------
  5149. INT 64 - Oracle SQL Protected Mode Executive - ???
  5150. --------N-64---------------------------------
  5151. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  5152. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  5153.       versions do not use this interrupt for IPX/SPX access, instead
  5154.       getting an entry point from INT 2F/AX=7A00h
  5155. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  5156. --------h-64---------------------------------
  5157. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5158. SeeAlso: INT 65"DG10",INT 66"DG10"
  5159. --------r-64---------------------------------
  5160. INT 64 - Extended Batch Language v3.14+
  5161.     AH = function
  5162.         00h to 5Fh chained to previous handler
  5163.         60h to 6Ch reserved, return immediately
  5164.         80h to FFh chained to previous handler
  5165.         6Dh (v4.01+) insert tone in queue
  5166.         AL = ???
  5167.         CX = frequency in Hertz
  5168.         DL = duration in clock ticks
  5169.         Return: AL = 00h if note stored
  5170.                = 01h if no room to store
  5171.         6Eh clear ??? counter/flag
  5172.         6Fh return counter/flag that AH=6Eh clears
  5173.         70h ???
  5174.         AL = ???
  5175.         71h ???
  5176.         AL = ???
  5177.         72h ???
  5178.         73h insert byte at end of keyboard buffer
  5179.         AL = byte to insert
  5180.         Return: AL = 00h if byte inserted
  5181.                = 01h if no room to store
  5182.         74h insert byte at front of keyboard buffer
  5183.         AL = byte to insert
  5184.         Return: AL = 00h if byte inserted
  5185.                = 01h if no room to store
  5186.         75h ???
  5187.         76h get keyboard "stack" status
  5188.         AL = 'K' if kbd read will read physical keyboard
  5189.              'S' if it will read EBL internal keyboard buffer
  5190.         AH = ???
  5191.         77h clear internal keyboard buffer
  5192.         78h ???
  5193.         AL = ???
  5194.         79h ???
  5195.         7Ah ???
  5196.         AL = ???
  5197.         7Bh ???
  5198.         AL = ???
  5199.         7Ch ???
  5200.         AL = ???
  5201.         7Dh ???
  5202.         AL = ???
  5203.         7Eh clear buffer for ???
  5204.         7Fh installation check
  5205.         Return: CX = version in BCD
  5206.             DI = segment of ???
  5207.             BX = segment of next program's PSP???
  5208. Program: Extended Batch Language is a batch-file enhancer by Seaware
  5209. Notes:    the chaining does not check whether the interrupt had been hooked
  5210.       before, so if you try to chain when the previous vector was
  5211.       0000h:0000h, you'll be in trouble
  5212.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  5213.       floating-point and extended function packages
  5214. Index:    installation check;EBL|installation check;Extended Batch Language
  5215. --------d-64---------------------------------
  5216. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5217. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  5218.       It can either destroy 4 vectors and take no memory or TSR and take
  5219.       up some memory.
  5220. SeeAlso: INT 65"Pdisk"
  5221. --------N-6401-------------------------------
  5222. INT 64 U - BW-NFS - BWRPC - ???
  5223.     AH = 01h
  5224.     ES:BX -> ??? (at least 8 bytes)
  5225.     ES:BP -> DWORD ???
  5226.     ???
  5227. Return: CF clear if successful
  5228.         ???
  5229.     CF set on error
  5230.         CX = 0000h
  5231. Range:    INT 62 to INT 67 ???
  5232. Notes:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5233.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5234.       consecutive interrupt (64h by default) if it is loaded
  5235.     the BWRPC installation check consists of determining the interrupt
  5236.       vector assigned to it (two more than the value returned by reading
  5237.       the ETHDEV27 device), and testing whether the word immediately
  5238.       preceding the interrupt handler is 4257h ('BW')
  5239. SeeAlso: INT 62/AH=00h"ETHDEV",INT 63"BW-TCP"
  5240. Index:    installation checks;BWRPC
  5241. --------N-6402-------------------------------
  5242. INT 64 U - BW-NFS - BWRPC - ???
  5243.     AH = 02h
  5244.     DS:DI -> ???
  5245. Return: ???
  5246. Note:    this call is passed directly through to INT 62/AH=07h
  5247. SeeAlso: INT 62/AH=07h"ETHDEV"
  5248. --------N-6403-------------------------------
  5249. INT 64 U - BW-NFS - BWRPC - ADD ???
  5250.     AH = 03h
  5251.     AL = ???
  5252.     BP = ???
  5253.     ES:SI -> ???
  5254. Return: ???
  5255. Note:    this call is passed directly through to INT 62/AH=0Bh
  5256. SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
  5257. --------N-6404-------------------------------
  5258. INT 64 U - BW-NFS - BWRPC - REMOVE ???
  5259.     AH = 04h
  5260.     BP = ???
  5261. Return: ???
  5262. Range:    INT 62 to INT 67 ???
  5263. Note:    this call is passed directly through to INT 62/AH=0Ch
  5264. SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
  5265. --------N-6405-------------------------------
  5266. INT 64 U - BW-NFS - BWRPC - ???
  5267.     AH = 05h
  5268.     CX = ???
  5269. Return: ???
  5270. Note:    this call is passed directly through to INT 62/AH=13h
  5271. SeeAlso: INT 62/AH=13h"ETHDEV"
  5272. --------N-6406-------------------------------
  5273. INT 64 U - BW-NFS - BWRPC - ???
  5274.     AH = 06h
  5275.     ES:SI -> ???
  5276. Return: AL = 00h if CF clear
  5277. Note:    this call is passed directly through to INT 62/AH=14h
  5278. SeeAlso: INT 62/AH=14h"ETHDEV"
  5279. --------N-6407-------------------------------
  5280. INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
  5281.     AH = 07h
  5282. Return: CX:DX = IP address
  5283. --------N-6410-------------------------------
  5284. INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
  5285.     AH = 10h
  5286.     AL = ETHDEV function number
  5287.     other registers as appropriate for ETHDEV call
  5288. Return: as returned by ETHDEV
  5289. Note:    this call is passed directly through to INT 62
  5290. SeeAlso: INT 62/AH=00h"ETHDEV"
  5291. --------N-6411-------------------------------
  5292. INT 64 U - BW-NFS - BWRPC - NOP???
  5293.     AH = 11h
  5294. Return: CF clear
  5295. Range:    INT 62 to INT 67 ???
  5296. --------N-64FE-------------------------------
  5297. INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
  5298.     AH = FEh
  5299.     AL = direction
  5300.         00h map in driver's memory block
  5301.         01h map out driver's memory block
  5302. Return: CF clear if successful
  5303.     CF set on error
  5304.         AL = error code
  5305. Note:    this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
  5306. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63"BW-TCP"
  5307. --------*-65---------------------------------
  5308. INT 65 - reserved for user interrupt
  5309. --------d-65---------------------------------
  5310. INT 65 - Adaptec controllers - DRIVE 1 DATA
  5311. Desc:    this vector stores the second four bytes of the parameter table for
  5312.       hard disk 1
  5313. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  5314. --------h-65---------------------------------
  5315. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5316. SeeAlso: INT 64"DG10",INT 66"DG10"
  5317. --------N-65---------------------------------
  5318. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  5319. --------U-65---------------------------------
  5320. INT 65 - SD.COM v6.2
  5321. Desc:    The unregistered version of SD62.COM uses the low byte of this vector
  5322.       to count the number of invocations, displaying a registration
  5323.       reminder each time after the 20th use.
  5324. --------d-65---------------------------------
  5325. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5326. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  5327. --------s-65---------------------------------
  5328. INT 65 - Ad Lib SOUND.COM - INTERFACE
  5329.     SI = function number (see also entries below)
  5330.         0000h Init
  5331.         0002h RelTimeStart
  5332.         0003h SetState
  5333.         0004h GetState
  5334.         0005h Flush
  5335.         0006h SetMode
  5336.         0007h GetMode
  5337.         0008h SetRelVolume
  5338.         0009h SetTempo
  5339.         000Ah SetTranspose
  5340.         000Bh GetTranspose
  5341.         000Ch SetActVoice
  5342.         000Dh GetActVoice
  5343.         000Eh PlayNoteDel
  5344.         000Fh PlayNote
  5345.         0010h SetTimbre
  5346.         0011h SetPitch
  5347.         0012h SetTickBeat
  5348.         0013h NoteOn
  5349.         0014h NoteOff
  5350.         0015h Timbre
  5351.         0016h SetPitchBend
  5352.         0017h WaveForm
  5353.     ES:BX -> arguments
  5354. Note:    the installation check consists of checking for the signature block
  5355.       immediately preceding the interrupt handler (see #1876)
  5356. SeeAlso: SI=8000h
  5357. Index:    installation check;Ad Lib SOUND.COM
  5358.  
  5359. Format of AdLib signature block:
  5360. Offset    Size    Description    (Table 1876)
  5361.  00h    WORD    version number
  5362.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  5363.  15h    BYTE    01h
  5364.  16h    BYTE    01h
  5365.  17h    BYTE    00h
  5366. --------s-65----SI0000-----------------------
  5367. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  5368.     SI = 0000h
  5369. --------s-65----SI0003-----------------------
  5370. INT 65 - Ad Lib SOUND.COM - SET STATE
  5371.     SI = 0003h
  5372.     ES:BX -> WORD new state (0000h disabled, 0001h enabled)
  5373. SeeAlso: SI=0004h
  5374. --------s-65----SI0004-----------------------
  5375. INT 65 - Ad Lib SOUND.COM - GET STATE
  5376.     SI = 0004h
  5377. Return: AX = status
  5378.         0000h all done playing sounds
  5379.         else  still playing sounds
  5380. SeeAlso: SI=0003h
  5381. --------s-65----SI0006-----------------------
  5382. INT 65 - Ad Lib SOUND.COM - SET MODE
  5383.     SI = 0006h
  5384.     ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
  5385. SeeAlso: SI=0007h
  5386. --------s-65----SI0007-----------------------
  5387. INT 65 - Ad Lib SOUND.COM - GET MODE
  5388.     SI = 0007h
  5389. Return: AX = mode
  5390.         0000h melodic
  5391.         0001h percussive
  5392. SeeAlso: SI=0006h
  5393. --------s-65----SI000C-----------------------
  5394. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  5395.     SI = 000Ch
  5396.     ES:BX -> WORD voice = 0000h to 0008h
  5397. SeeAlso: SI=000Dh
  5398. --------s-65----SI000D-----------------------
  5399. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  5400.     SI = 000Dh
  5401. Return: AX = voice (0000h to 0008h)
  5402. SeeAlso: SI=000Ch
  5403. --------s-65----SI8000-----------------------
  5404. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  5405.     SI = 8000h
  5406. Return: DX:AX -> internal data structures
  5407. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  5408.       Pro Audio Spectrum sound boards
  5409. SeeAlso: SI=8001h
  5410. --------s-65----SI8001-----------------------
  5411. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  5412.     SI = 8001h
  5413. Return: AX = ???
  5414.     DX = number of voices??? (09h or 0Bh)
  5415. SeeAlso: SI=8000h
  5416. --------s-65----SI8002-----------------------
  5417. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  5418.     SI = 8002h
  5419. SeeAlso: SI=8003h
  5420. --------s-65----SI8003-----------------------
  5421. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  5422.     SI = 8003h
  5423. SeeAlso: SI=8002h
  5424. --------s-65----SI8004-----------------------
  5425. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  5426.     SI = 8004h
  5427. Return: AX = ??? (0280h)
  5428.     DX = ??? (01A0h)
  5429. --------s-65----SI8005-----------------------
  5430. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  5431.     SI = 8005h
  5432.     ???
  5433. Return: ???
  5434. SeeAlso: SI=8000h
  5435. --------S-65---------------------------------
  5436. INT 65 U - EZRECV v1.0 - API
  5437.     AX = function
  5438.         0000h ???
  5439.         Return: AX = ??? or FFFFh
  5440.         0001h ???
  5441.         Return: AX = status (0000h or 0001h)
  5442.         0002h ???
  5443.         Return: AX = status (0000h or 0001h)
  5444.         0003h set ??? to 0001h
  5445.         Return: AX = 0000h
  5446.         0004h ???
  5447.         Return: AX = ???
  5448. Return: BH = COM port being used
  5449.     BL = speed???
  5450.     CH = ???
  5451.     CL = ???
  5452.     DX = ???
  5453.     DS = ???
  5454.     ES = EZRECV data segment
  5455. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  5456. --------*-66---------------------------------
  5457. INT 66 - reserved for user interrupt
  5458. --------d-66---------------------------------
  5459. INT 66 - Adaptec controllers - DRIVE 1 DATA
  5460. Desc:    this vector stores the third four bytes of the parameter table for
  5461.       hard disk 1
  5462. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  5463. --------h-66---------------------------------
  5464. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5465. SeeAlso: INT 64"DG10"
  5466. --------N-66---------------------------------
  5467. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  5468. Program: TurboNET is a NetBIOS-based file redirector and server
  5469. Note:    hooked but not used (IRET) by both redirector and server; called from
  5470.       server's INT 28 handler
  5471. SeeAlso: INT 2F/AX=8100h
  5472. --------d-66---------------------------------
  5473. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5474. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  5475. --------W-66---------------------------------
  5476. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  5477. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  5478.       which will expire and call INT 66.  This timer can be used to
  5479.       calculate elapsed execution time etc.
  5480. --------K-66---------------------------------
  5481. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  5482. Return: immediately (IRET)
  5483. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  5484. Range:    INT 60h to INT 67h, selected by scanning for highest unused vector
  5485. Note:    the installation check consists of testing for the signature bytes
  5486.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment
  5487. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  5488.       before falling back to INT 60-67, but only uses the last of these
  5489.       ranges in v5.4
  5490. SeeAlso: INT 2F/AX=E300h
  5491. Index: installation checks;Newkey|Newkey;installation check
  5492. --------F-6601-------------------------------
  5493. INT 66 - BitFax Scheduler - SET MODE???
  5494.     AH = 01h
  5495. SeeAlso: AH=02h
  5496. --------F-6602-------------------------------
  5497. INT 66 - BitFax Scheduler - SET MODE???
  5498.     AH = 02h
  5499. SeeAlso: AH=01h
  5500. --------F-6603-------------------------------
  5501. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  5502.     AH = 03h
  5503.     ???
  5504. Return: ???
  5505. SeeAlso: AH=05h
  5506. --------F-6604-------------------------------
  5507. INT 66 - BitFax Scheduler - GET STATUS???
  5508.     AH = 04h
  5509. Return: AX = ??? (0000h or 0001h)
  5510.     DX = BitSched version???  (for versions >= 3.00)
  5511.         9796h (ver. 3.00)
  5512.         97E6h (ver. 3.02)
  5513.         92D0h (ver. 3.04.06)
  5514.         9510h (ver. 3.06.02)
  5515. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  5516. --------F-6605-------------------------------
  5517. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  5518.     AH = 05h
  5519.     BX:CX -> command block (see #1877)
  5520.     ???
  5521. Return: ???
  5522. SeeAlso: AH=03h
  5523.  
  5524. Format of BitFax command block:
  5525. Offset    Size    Description    (Table 1877)
  5526.  00h 18 BYTEs    configuration bytes???
  5527.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  5528.  52h    BYTEs    ASCIZ directory containing BitFax executables
  5529.  92h    BYTEs    ASCIZ telephone number
  5530.  C2h    BYTE    cover page control (00h don't send, 01h do send cover page)
  5531.  C3h 15 BYTEs    configuration bytes???
  5532.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  5533.           configuration information???)
  5534. 122h    BYTEs    configuration bytes???
  5535. 12Ch    BYTE    00h don't send cover page
  5536.         01h send cover page
  5537. 12Dh  7 BYTEs    configuration bytes???
  5538. 134h    BYTEs    ASCIZ path of file to send
  5539. 174h    BYTEs    more configuration bytes???
  5540.     ???
  5541. --------F-6606-------------------------------
  5542. INT 66 - BitFax Scheduler - SET MODE???
  5543.     AH = 06h
  5544. Return: DX = BitSched version??? (same as AH=04h)
  5545. SeeAlso: AH=04h
  5546. --------s-660688-----------------------------
  5547. INT 66 - IBMSND driver - PLAY 8-BIT DIGITIZED SOUND
  5548.     AX = 0688h
  5549.     DS:SI -> SNDSTRUC (see #1878)
  5550. Return: ???
  5551. Program: The IBMSND driver is part of John W. Ratcliff's
  5552.        The IBM Digitized Sound Package
  5553. Note:    the installation check consists of looking for a valid signature
  5554.       string six bytes prior to the interrupt handler; this string may
  5555.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  5556.       determine whether IBMSND is installed)
  5557. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  5558.  
  5559. Format of IBMSND driver SNDSTRUC:
  5560. Offset    Size    Description    (Table 1878)
  5561.  00h    DWORD    -> audio data
  5562.  04h    WORD    length of audio data in bytes
  5563.  06h    DWORD    -> playback status flag
  5564.  0Ah    WORD    playback frequency
  5565. --------s-660689-----------------------------
  5566. INT 66 - IBMSND driver - REPORT SOUND DRIVER STATUS
  5567.     AX = 0689h
  5568. Return: AX = status
  5569.         0000h no sound playing
  5570.         0001h sound effect is currently playing
  5571. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  5572. --------s-66068A-----------------------------
  5573. INT 66 - IBMSND driver - PREFORMAT SOUND
  5574.     AX = 068Ah
  5575.     DS:SI -> SNDSTRUC (see #1878)
  5576. Desc:    convert audio data into output hardware format
  5577. SeeAlso: AX=068Bh
  5578. --------s-66068B-----------------------------
  5579. INT 66 - IBMSND driver - PLAY PREFORMATTED SOUND
  5580.     AX = 068Bh
  5581.     DS:SI -> SNDSTRUC (see #1878)
  5582. Return: AX = ???
  5583. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  5584. --------s-66068C-----------------------------
  5585. INT 66 - IBMSND driver - REPORT AUDIO DRIVER CAPABILITIES
  5586.     AX = 068Ch
  5587. Return: AX = capabilities (see #1879)
  5588.     DX = playback rate if fixed-frequency playback
  5589. SeeAlso: AX=0689h,AX=068Dh
  5590.  
  5591. Bitfields for IBMSND driver capabilities:
  5592. Bit(s)    Description    (Table 1879)
  5593.  0    can play audio in background
  5594.  1    data is massaged
  5595.  2    driver plays at fixed frequency, resampling input data to fit
  5596.  3    driver uses timer interrupt
  5597. --------s-66068D-----------------------------
  5598. INT 66 - IBMSND driver - REPORT CURRENT SAMPLE ADDRESS
  5599.     AX = 068Dh
  5600. Return: AX = current playback address
  5601. Desc:    determine what point in the audio data the playback has reached, for
  5602.       synchronization with video or animation effects
  5603. Notes:    this function applies to background playback only
  5604.     the reported address may be an approximation rather than the exact
  5605.       address
  5606. SeeAlso: AX=068Ch,AX=0691h
  5607. --------s-66068E-----------------------------
  5608. INT 66 - IBMSND driver - SET CALLBACK ADDRESS
  5609.     AX = 068Eh
  5610.     BX:DX -> callback function
  5611.         0000h:0000h to disable callback
  5612.     DS = value to load into DS when calling the callback function
  5613. Desc:    specify the function to be called when playback of a sound effect is
  5614.       completed
  5615. Note:    the callback function will typically be called during a hardware
  5616.       interrupt, so all the usual precautions should be taken except for
  5617.       preserving registers
  5618. SeeAlso: AX=0691h
  5619. --------s-66068F-----------------------------
  5620. INT 66 - IBMSND driver - STOP CURRENT SOUND
  5621.     AX = 068Fh
  5622. Desc:    cause any currently-playing sound effect to be terminated
  5623. SeeAlso: AX=0688h,AX=068Bh
  5624. --------s-660690-----------------------------
  5625. INT 66 - IBMSND driver - "SetAudioHardware" SET UP HARDWARE INFO [obsolete]
  5626.     AX = 0690h
  5627. Note:    this function is no longer implemented
  5628. --------s-660691-----------------------------
  5629. INT 66 - IBMSND driver - REPORT CALLBACK ADDRESS
  5630.     AX = 0691h
  5631. Return: AX:DX -> current callback function
  5632.     BX = original caller's DS register
  5633. Program: The IBMSND driver is part of John W. Ratcliff's
  5634.        The IBM Digitized Sound Package
  5635. SeeAlso: AX=068Eh
  5636. --------s-660701-----------------------------
  5637. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  5638.     AX = 0701h
  5639. Return: AX = digitized sound capabilities
  5640.         0000h if digitized sound driver (functions 06xxh) not available
  5641. Note:    the installation check for the MIDI driver is to test for the signature
  5642.       "MIDI" six bytes before the interrupt handler
  5643. SeeAlso: AX=0688h
  5644. --------n-6610-------------------------------
  5645. INT 66 - PenDOS - TDMOUSE.EXE - GET ???
  5646.     AH = 10h
  5647. Return: CF clear
  5648.     AX = 0000h
  5649.     BX = ??? (0012h)
  5650.     DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
  5651. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  5652.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  5653.       Corporation which makes applications pen-aware
  5654. --------n-6611-------------------------------
  5655. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  5656.     AH = 11h
  5657.     DX:BX -> new handler for ???
  5658. Return: CF clear
  5659.     AX = 0000h
  5660.     DX:BX -> old handler for ??? (points at RETF by default)
  5661. --------n-6612-------------------------------
  5662. INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
  5663.     AH = 12h
  5664. Return:    CF clear
  5665.     AX = 0000h
  5666. Note:    this function calls the old mouse handler with functions 0000h, 0002h,
  5667.       0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
  5668. SeeAlso: AH=13h
  5669. --------n-6613-------------------------------
  5670. INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
  5671.     AH = 13h
  5672. Return: CF clear
  5673.     other register as returned by INT 33/AX=0000h
  5674. SeeAlso: AH=12h
  5675. --------n-6614-------------------------------
  5676. INT 66 - PenDOS - TDMOUSE.EXE - ???
  5677.     AH = 14h
  5678.     BX = ???
  5679.     CX = ???
  5680. Return: CF clear
  5681.     AX = 0000h
  5682. --------n-6615-------------------------------
  5683. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  5684.     AH = 15h
  5685.     DX:BX -> new handler for ???
  5686. Return: CF clear
  5687.     AX = 0000h
  5688.     DX:BX -> old handler (points at RETF by default)
  5689. --------n-6616-------------------------------
  5690. INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
  5691.     AH = 16h to 1Fh
  5692. Return: CF set
  5693. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  5694.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  5695.       Corporation which makes applications pen-aware
  5696. --------n-6621-------------------------------
  5697. INT 66 - PenDOS - PINK - ???
  5698.     AH = 21h
  5699. Return: CF clear if successful
  5700.     CF set on error
  5701. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5702. --------n-6622-------------------------------
  5703. INT 66 - PenDOS - PINK - ???
  5704.     AH = 22h
  5705.     DX:BX -> ???
  5706.     CL = ???
  5707. Return: CF clear if successful
  5708.     CF set on error
  5709.     ???
  5710. SeeAlso: AH=24h
  5711. --------n-6623-------------------------------
  5712. INT 66 - PenDOS - PINK - ???
  5713.     AH = 23h
  5714.     ???
  5715. Return: CF clear if successful
  5716.     CF set on error
  5717.     ???
  5718. --------n-6624-------------------------------
  5719. INT 66 - PenDOS - PINK - ???
  5720.     AH = 24h
  5721.     DX:BX -> ???
  5722.     CL = ???
  5723. Return: CF clear if successful
  5724.     CF set on error
  5725.     ???
  5726. SeeAlso: AH=22h
  5727. --------n-6625-------------------------------
  5728. INT 66 - PenDOS - PINK - ???
  5729.     AH = 25h
  5730.     CL = ??? (NOP if 00h)
  5731.     ???
  5732. Return: CF clear if successful
  5733.     CF set on error
  5734.     ???
  5735. --------n-6627-------------------------------
  5736. INT 66 - PenDOS - PINK - ???
  5737.     AH = 27h
  5738.     BL = ???
  5739.     BH = ???
  5740.     CL = ??? (0-3)
  5741.     DL = ??? (> BL)
  5742.     DH = ??? (> BH)
  5743. Return: ???
  5744. --------n-6628-------------------------------
  5745. INT 66 - PenDOS - PINK - ???
  5746.     AH = 28h
  5747.     ???
  5748. Return: CF clear if successful
  5749.     CF set on error
  5750.     ???
  5751. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5752. --------n-6629-------------------------------
  5753. INT 66 - PenDOS - PINK - ???
  5754.     AH = 29h
  5755.     ???
  5756. Return: ???
  5757. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5758. --------n-662A-------------------------------
  5759. INT 66 - PenDOS - PINK - ???
  5760.     AH = 2Ah
  5761.     DL = ??? (nonzero)
  5762.     DH = ??? (nonzero)
  5763. Return: CF clear if successful
  5764.     CF set on error
  5765.     ???
  5766. --------n-662B-------------------------------
  5767. INT 66 - PenDOS - PINK - ???
  5768.     AH = 2Bh
  5769.     ???
  5770. Return: CF clear if successful
  5771.     CF set on error
  5772.     ???
  5773. --------n-662F-------------------------------
  5774. INT 66 - PenDOS - PINK - INITIALIZE
  5775.     AH = 2Fh
  5776.     ???
  5777. Return: AX = status
  5778.         0000h failed
  5779.         FFFFh successful
  5780.     ???
  5781. Note:    this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
  5782. --------F-663345-----------------------------
  5783. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  5784.     AX = 3345h
  5785. Return: AX = FFFFh error removing TSR
  5786. Note:    the installation check consists of checking for the signature
  5787.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  5788. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  5789. Index:    installation check;BitFax Scheduler
  5790. --------n-6640-------------------------------
  5791. INT 66 - PenDOS - PKEYUS - GET VERSION
  5792.     AH = 40h
  5793. Return: CF clear
  5794.     AX = 0000h
  5795.     BH = major version (02h for version bundled with IBM DOS 6.1)
  5796.     BL = minor version (00h for version bundled with IBM DOS 6.1)
  5797.     DL = ??? (4Eh)
  5798.     DH = ??? (0Eh)
  5799. --------n-6641-------------------------------
  5800. INT 66 - PenDOS - PKEYUS - SET ???
  5801.     AH = 41h
  5802.     BX = ???
  5803.     CL = ??? (08h-20h)
  5804.     DL = screen column??? (<= 50h)
  5805.     DH = screen row???  (<= 3Ch)
  5806. Return: AX = status (0000h successful, 0001h error)
  5807. Note:    this function also sets an internal flag
  5808. SeeAlso: AH=42h,AH=43h
  5809. --------n-6642-------------------------------
  5810. INT 66 - PenDOS - PKEYUS - ???
  5811.     AH = 42h
  5812. Return: CF clear
  5813.     AX = 0000h
  5814. Note:    this function also clears the flag set by AH=41h
  5815. SeeAlso: AH=41h
  5816. --------n-6643-------------------------------
  5817. INT 66 - PenDOS - PKEYUS - ???
  5818.     AH = 43h
  5819.     BX = ???
  5820.     DX = ???
  5821. Return: AX = status
  5822.         0000h if AH=41h flag set
  5823.         else
  5824.         AH = ???
  5825.         AL = ???
  5826.         BX = ???
  5827.         DX = ???
  5828. SeeAlso: AH=41h    
  5829. --------n-6644-------------------------------
  5830. INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
  5831.     AH = 44h to 4Fh
  5832. Return: CF set
  5833. --------n-6650-------------------------------
  5834. INT 66 - PenDOS - PMOUSE - SET ???
  5835.     AH = 50h
  5836.     BX = ???
  5837.     CH = ???
  5838.     DX = ???
  5839. Return: CF clear
  5840.     AX = 0000h
  5841. --------n-6651-------------------------------
  5842. INT 66 - PenDOS - PMOUSE - NOP
  5843.     AH = 51h
  5844. Return: CF set
  5845. --------n-6652-------------------------------
  5846. INT 66 - PenDOS - PMOUSE - ???
  5847.     AH = 52h
  5848.     BX = ???
  5849.     CL = ???
  5850.     DX = ???
  5851. Return: ???
  5852. --------n-6653-------------------------------
  5853. INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
  5854.     AH = 53h to 57h
  5855. Return: CF set
  5856. --------n-66---------------------------------
  5857. INT 66 - PenDOS - PMOUSE - ALTERNATE API
  5858.     AH = function (58h-5Fh)
  5859. Note:    these functions exactly duplicate AH=50h-57h
  5860. ----------66AA02-----------------------------
  5861. INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
  5862.     AX = AA02h
  5863. Return: ES:DI -> 7 byte signature "HelpTSR" if resident
  5864. Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
  5865. --------n-66C5-------------------------------
  5866. INT 66 - PenDOS - VLOAD - API
  5867.     AH = C5h
  5868.     ???
  5869. Return: ???
  5870. --------t-66FFFBBXFFFB-----------------------
  5871. INT 66 - MicroHelp Stay-Res Plus - ???
  5872.     AX = FFFBh
  5873.     BX = FFFBh
  5874.     ???
  5875. Return: ???
  5876. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  5877. --------t-66FFFEBXFFFE-----------------------
  5878. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  5879.     AX = FFFEh
  5880.     BX = FFFEh
  5881. Return: only if unsuccessful
  5882. Notes:    installation check is for the interrupt handler to begin with the bytes
  5883.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  5884.       appear at offset 0005h (older versions) or the offset returned by
  5885.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  5886.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  5887.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  5888. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  5889. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  5890. Index:    installation check;Personal Calendar|installation check;CAL
  5891. --------t-66FFFFBXFFF0-----------------------
  5892. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  5893.     AX = FFFFh
  5894.     BX = FFF0h
  5895. Return: DI = offset of program name in interrupt handler segment
  5896. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  5897. --------d-67---------------------------------
  5898. INT 67 - Adaptec controllers - DRIVE 1 DATA
  5899. Desc:    this vector stores the last four bytes of the parameter table for
  5900.       hard disk 1
  5901. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  5902. --------d-67---------------------------------
  5903. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5904. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  5905. --------I-67---------------------------------
  5906. INT 67 - Sangoma CCPOP 3270 resident module
  5907. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  5908. --------U-67---------------------------------
  5909. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  5910. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  5911.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  5912. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  5913.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  5914.       the signature value 434Ch:4F4Bh ('CLOK')
  5915. --------N-6700-------------------------------
  5916. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  5917.     AH = 00h
  5918.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5919. Return: AL = status (see #1880)
  5920.     AH = semaphore owner if status=02h
  5921. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  5922.  
  5923. (Table 1880)
  5924. Values for PC-NET semaphore function status:
  5925.  00h    successful
  5926.  01h    invalid function
  5927.  02h    semaphore already locked
  5928.  03h    unable to lock semaphore
  5929.  04h    semaphore space exhausted
  5930. --------N-6701-------------------------------
  5931. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  5932.     AH = 01h
  5933.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5934. Return: AL = status (see #1880)
  5935.     AH = semaphore owner if status=02h
  5936. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  5937. --------N-6702-------------------------------
  5938. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  5939.     AH = 02h
  5940.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5941. Return: AL = status (see #1880)
  5942.     AH = semaphore owner if status=02h
  5943. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  5944. --------m-671E-------------------------------
  5945. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  5946.     AH = 1Eh
  5947. Return: AH = 00h if installed
  5948.         AL destroyed
  5949.         ES:DI -> ASCII signature "MemLimit"
  5950. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  5951. --------m-671F-------------------------------
  5952. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  5953.     AH = 1Fh
  5954.     DS:SI -> request packet (see #1881)
  5955. Return: AH = status (00h successful, 84h invalid function code, etc.)
  5956. SeeAlso: AH=1Eh
  5957.  
  5958. Format of 386MAX MEMLIMIT request packet:
  5959. Offset    Size    Description    (Table 1881)
  5960.  00h    WORD    function code (00h-0Fh)
  5961.  02h    WORD    return code (see #1882)
  5962.  04h  4 BYTEs    ???
  5963.  08h    WORD    ???
  5964.     ???
  5965.  
  5966. (Table 1882)
  5967. Values for 386MAX MEMLIMIT return code:
  5968.  00h    unknown request
  5969.  01h    invalid parameter for VCPI limit
  5970.  02h    VCPI limit set
  5971.  03h    invalid parameter for EMS limit
  5972.  04h    EMS limit set
  5973.  05h    DPMI disabled
  5974.  06h    XMS disabled
  5975.  07h    XMS limit set
  5976.  08h    unable to uninstall
  5977.  09h    unloaded
  5978. --------m-673F--CX5145-----------------------
  5979. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  5980.     AH = 3Fh
  5981.     CX = 5145h ("QE")
  5982.     DX = 4D4Dh ("MM")
  5983. Return: AH = 00h if installed
  5984.         ES:DI -> QEMM API entry point
  5985. Notes:    if no other program has hooked INT 67, an alternate installation
  5986.       check is to test for the string
  5987.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  5988.       handler's segment; the word at offset 12h contains the offset in
  5989.       the handler's segment of the API entry point
  5990.     although this function is still undocumented, Quarterdeck has recently
  5991.       documented two alternate methods for determining the QEMM API entry
  5992.       point, as well as several of the API functions
  5993.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  5994.       the alternate QEMM installation check and entry point functions 00h,
  5995.       02h, and 03h; version 4D only provides the signature string if the
  5996.       commandline argument "DV" is provided
  5997.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  5998.       recognize the returned entry point as providing QEMM's capabilities
  5999.       because a) only functions 0Ch (different from QEMM 0Ch) and
  6000.             1000h-1009h are supported,
  6001.           b) status is returned as for EMS functions, not QEMM funcs
  6002.           c) the protected-mode entry point returned by function 1000h
  6003.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  6004.     the string check mentioned above is not supported by 386MAX
  6005. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  6006. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  6007.  
  6008. (Table 1883)
  6009. Call QEMM entry point with:
  6010.     AH = 00h get QEMM state (documented)
  6011.         Return: CF clear
  6012.             AL = QEMM state
  6013.                 bit 0 set if QEMM turned OFF
  6014.                 bit 1 set if in "Auto" mode
  6015.     AH = 01h set QEMM state (documented)
  6016.         AL = new state
  6017.             bit 0 set: place QEMM in OFF state
  6018.         Return: CF clear if successful
  6019.             CF set on error
  6020.     AH = 02h get ???
  6021.         Return: CF clear
  6022.             AX = segment of ??? data structure
  6023.             Data Structure
  6024.             Offset    Size    Description
  6025.              00h    DWORD    page table entry for ???
  6026.                 ???
  6027.     AH = 03h get QEMM version (documented)
  6028.         Return: CF clear
  6029.             AX = BX = version in BCD
  6030.         Notes:    the most recent official docs state that the version is
  6031.               returned in both AX and BX; older documentation only
  6032.               mentions BX
  6033.             MICEMM returns AX=0001h, BX unchanged
  6034.     AH = 04h allocate 4K page and set AUTO/ON mode
  6035.         Return: CF clear if successful
  6036.                 DX = page number of a 4K page
  6037.             CF set if unable to allocate page
  6038.         Note:    QEMM mode unchanged if not AUTO/OFF
  6039.     AH = 05h free 4K page and turn QEMM off
  6040.         DX = page number returned by function 04h
  6041.         Return: CF clear
  6042.         Note:    QEMM mode unchanged if not AUTO/ON
  6043.     AH = 06h make new mapping context???
  6044.         DX = page number of 4K page to hold page table
  6045.         Return: CF clear
  6046.         Note:    copies page table into given page and then sets ???
  6047.               page table entry to point at copy
  6048.     AH = 07h get mapping context
  6049.         Return: CF clear
  6050.             DX = page number of page table for current mapping
  6051.                   context
  6052.     AH = 08h set mapping context???
  6053.         DX = linear page number of page table
  6054.         Return: CF clear
  6055.     AH = 09h get linear page number for page table entry
  6056.         CX = page table index
  6057.         Return: CF clear
  6058.             DX = linear page number
  6059.     AH = 0Ah set linear page number for page table entry
  6060.         CX = page table index
  6061.         DX = linear page number
  6062.         Return: CF clear
  6063.     AH = 0Bh map 4K pages
  6064.         BX = number of pages
  6065.         CX = first page number (must be 0100h to allocate HMA)
  6066.         DX = EMS handle (memory belonging to EMS handle will be mapped
  6067.               into the address space beginning with the first page
  6068.               allocated to the handle)
  6069.         Return: AH = 00h
  6070.     AH = 0Ch get available memory
  6071.         Return: CF clear
  6072.             BX = 0001h
  6073.             CX = total 4K pages???
  6074.             DX = number of 4K pages free
  6075.     AH = 0Dh CRT controller I/O port trapping
  6076.         AL = mode
  6077.             00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
  6078.             01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
  6079.               03D4h, and 03D5h
  6080.             02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
  6081.         Return: CF clear
  6082.     AH = 0Eh set cursor virtualization callbacks
  6083.         DS:BX -> FAR routine for getting hardware cursor address
  6084.         ES:DX -> FAR routine for setting hardware cursor address
  6085.         Return: CF clear
  6086.         Note:    both callbacks are invoked with CL indicating which
  6087.               CRT controller register to access (0Eh for high
  6088.               byte of cursor address, 0Fh for low byte)
  6089.             the DS:BX callback should return BX=cursor address;
  6090.               ES:DX is called with BL or BH (depending on CL)
  6091.               set to the appropriate half of the cursor's address
  6092.     AH = 0Fh unmap 4K pages
  6093.         CX = first page number
  6094.         DX = number of pages
  6095.         Return: CF clear
  6096.             AL = 00h/01h if ???
  6097.         Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  6098.               simulate a disabled A20
  6099.     AX = 1000h get protected-mode interface
  6100.         DS:SI -> 16-byte buffer for two GDT entries
  6101.         ES:DI -> buffer for 4K page table
  6102.         Return: CF clear
  6103.             EAX = offset of protected-mode API entry point
  6104.             DS:SI buffer filled with two GDT descriptors
  6105.                 first is QEMM code segment, second is data???
  6106.             ES:DI buffer filled with 4K page table
  6107.             DI points to first unused page table entry
  6108.         SeeAlso: INT 67/AX=DE01h
  6109.     AX = 1001h get CPU debug registers
  6110.         ES:DI -> buffer for debug registers (8 DWORDs)
  6111.         Return: CF clear
  6112.             BL = INT01 handling (see function 1002h)
  6113.             ES:DI buffer filled
  6114.     AX = 1002h set CPU debug registers
  6115.         BL = INT01 handling
  6116.             00h     reflect all debugging exceptions as V86-mode INT 01's
  6117.             else convert debugging exceptions other than single-step
  6118.               into V86-mode INT 03's, single-step to INT 01's
  6119.         ES:DI -> buffer containing debug registers (8 DWORDs)
  6120.         Return: CF clear
  6121.         Notes:    identical to INT 67/AX=DE09h if BL=01h
  6122.             the INT01 handling flag is set to 01h by the general-
  6123.               protection violation handler for certain privileged
  6124.               instructions
  6125.     AX = 1003h get machine status word CR0
  6126.         Return: CF clear
  6127.             EAX = contents of CR0
  6128.         SeeAlso: INT 67/AX=DE07h
  6129.     AX = 1004h allocate a 4K page
  6130.         Return: CF clear if successful
  6131.                 EDX = linear address of allocated page
  6132.             CF set on error
  6133.         SeeAlso: INT 67/AX=DE04h
  6134.     AX = 1005h free 4K page
  6135.         EDX = linear address of page to free
  6136.         Return: CF clear
  6137.         SeeAlso: INT 67/AX=DE05h
  6138.     AX = 1006h NOP
  6139.         Return: CF set
  6140.     AX = 1007h get maximum physical memory address
  6141.         Return: CF clear
  6142.             EDX = physical address of highest 4K memory page
  6143.         SeeAlso: INT 67/AX=DE02h
  6144.     AX = 1008h get physical address of page in first megabyte
  6145.         CX = page number (linear address shifted right 12 bits)
  6146.         Return: CF clear
  6147.             EDX = linear address of page
  6148.         SeeAlso: function 1F00h
  6149.     AX = 1009h switch to protected mode
  6150.         ESI = linear address in first megabyte of system reg values
  6151.             (see INT 67/AX=DE0Ch)
  6152.         interrupts disabled
  6153.         Return: interrupts disabled
  6154.             GDTR, IDTR, LDTR, TR loaded
  6155.             SS:ESP must have at least 16 bytes space, and the
  6156.                   entry point is required to set up a new stack
  6157.                   before enabling interrupts
  6158.             EAX, ESI, DS, ES, FS, GS destroyed
  6159.     AX = 100Ah switch back to virtual-86 mode
  6160.         DS = selector for data segment from function 1000h
  6161.         SS:ESP in first megabyte of linear memory
  6162.         interrupts disabled
  6163.         STACK:    QWORD  return address from FAR call to 32-bit segment
  6164.             DWORD  EIP
  6165.             DWORD  CS
  6166.             DWORD  reserved for EFLAGS
  6167.             DWORD  ESP
  6168.             DWORD  SS
  6169.             DWORD  ES
  6170.             DWORD  DS
  6171.             DWORD  FS
  6172.             DWORD  GS
  6173.         will switch to virtual86 mode with interrupts disabled, all
  6174.           segment registers loaded, and EAX destroyed.
  6175.     AH = 11h get memory type map
  6176.         AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  6177.               by QEMM 6.00)
  6178.         ES:DI -> 256-byte buffer for memory types
  6179.         Return: CF clear
  6180.             BL = ???
  6181.             ES:DI buffer filled
  6182.         Note:    each byte of the buffer corresponds to a 4K page, and
  6183.               contains the type of that page: 00h = mappable,
  6184.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  6185.               05h = video, 06h = ROM, 07h = adapter ROM,
  6186.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  6187.               0Bh = conventional, 83h = high RAM under MS Windows
  6188.     AH = 12h get HIRAM chain
  6189.         Return: CF clear
  6190.             BX = segment of first MCB in high memory
  6191.                 0000h if no high memory
  6192.     AX = 1300h VIDRAMEGA???
  6193.         BL = 00h copy ???
  6194.              nonzero copy ??? (reverse)
  6195.         Return: CF clear
  6196.             AL = status
  6197.                 00h if all pages clean
  6198.                 01h if any page dirty
  6199.     AX = 1301h check if pages modified
  6200.         DX:DI = start address of range to check
  6201.         CX = length of range in paragraphs
  6202.         Return: CF clear
  6203.             CX = status
  6204.                 0000h none of the indicated pages is dirty
  6205.                 DI destroyed
  6206.                 1000h one or more pages is dirty
  6207.                 DI = low word of first dirty page's linear addr
  6208.     AX = 1302h ???
  6209.         BL = ???
  6210.         BH = ???
  6211.         CX = ???
  6212.         SI = offset of ???
  6213.         DI = offset of ???
  6214.         ???
  6215.         Return: CF clear
  6216.             ???
  6217.         Note:    disables certain interrupts at the two 8259 PICs during
  6218.               execution; also modifies CRT controller during
  6219.               execution under certain circumstances
  6220.     AX = 1303h initialize EGA graphics virtualization
  6221.         BX = number of pages (less 1) of EMS to allocate
  6222.         Return: CF clear if successful
  6223.                 DX = EMS handle
  6224.             CF set on error
  6225.     AX = 1304h shutdown EGA graphics virtualization
  6226.         DX = EMS handle being used for virtualization
  6227.         Return: CF clear
  6228.     AX = 1305h select portion of EGA graphics to virtualize???
  6229.         (related to graphics virtualization, changes memory mappings)
  6230.         CX = start offset within A000h segment of virtualized mem???
  6231.         Return: CF clear
  6232.         Note:    disables certain interrupts at the two 8259 PICs during
  6233.               execution (see func 130Ch) and runs inside a QEMM
  6234.               critical section
  6235.     AX = 1306h set DESQview critical section counter address
  6236.         ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  6237.         Return: CF clear
  6238.         Note:    also sets a pointer in the low-memory part of QEMM to
  6239.               the current value of INT 15 if ES:BX not 0000h:0000h
  6240.     AX = 1307h ??? (changes memory mappings for entire A000h segment)
  6241.         Return: CF clear
  6242.         Note:    disables certain interrupts at the two 8259 PICs during
  6243.               execution (see func 130Ch) and runs inside a QEMM
  6244.               critical section
  6245.     AX = 1308h start/reset CRT controller I/O trapping
  6246.         BL = subfunction
  6247.             00h restore CRTC I/O port trapping to previous state
  6248.             else start trapping all accesses to I/O ports 03B0-03DF
  6249.         Return: CF clear
  6250.         Note: if called more than once in a row with BL nonzero, the
  6251.             original state of the I/O port trapping will be lost
  6252.     AX = 1309h Hercules mode-change support
  6253.         ES:BX -> new address for Hercules mode-change callback
  6254.         Return: CF clear
  6255.         Note:    the callback function is called whenever the CRTC mode
  6256.               register is written, with AL set to the value written
  6257.     AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
  6258.         CX:DX -> DAC register virtualization buffer (see #1890)
  6259.             or 0000h:0000h to disable
  6260.         Return: CF clear
  6261.     AX = 130Bh ???
  6262.         BL = ??? (??? or 00h)
  6263.         Return: CF clear
  6264.             ???
  6265.         Note:    calls AX=130Eh in some cases
  6266.     AX = 130Ch set interrupts to mask
  6267.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  6268.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  6269.         Return: CF clear
  6270.     AX = 130Dh map EGA memory at A0000h
  6271.         ???
  6272.         Return: CF clear
  6273.         Note:    disables certain interrupts at the two 8259 PICs during
  6274.               execution (see func 130Ch) and runs inside a QEMM
  6275.               critical section
  6276.             calls AX=1307h
  6277.     AX = 130Eh ??? (modifies CRT controller setup)
  6278.         ???
  6279.         Return: CF clear
  6280.     AX = 130Fh reset ???
  6281.         Return: CF clear
  6282.     AX = 1310h copy modified pages to physical video RAM???
  6283.         ???
  6284.         Return: CF clear
  6285.         Note:    disables certain interrupts at the two 8259 PICs during
  6286.               execution (see func 130Ch) and runs inside a QEMM
  6287.               critical section
  6288.             also calls AX=130Dh
  6289.     AX = 1311h set ???
  6290.         BL = zero/nonzero???
  6291.         Return: CF clear
  6292.         Note:    certain operations will be performed with interrupts
  6293.               (as set by AX=130Ch) enabled rather than disabled if
  6294.               called with BL nonzero
  6295.     AX = 1312h (v6.02) NOP???
  6296.         Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  6297.     AX = 1400h initialize DESQview "protection level" support
  6298.         ES:DI -> protection level configuration (at least 24 bytes)
  6299.             (see #1884)
  6300.         BL = highest ??? to return (one less than number of words)
  6301.         Return: CF clear
  6302.             AX = ??? (4204h for v6.00)
  6303.         Note:    QEMM also sets the protected mode INT 02 and INT 06
  6304.               vectors to alternate handlers in certain cases
  6305.     AX = 1401h turn off DESQview protection level support
  6306.         Return: CF clear
  6307.             ???
  6308.         Notes:    clears the DV critical-section flag address set with
  6309.               function 1306h
  6310.             QEMM also sets the protected mode INT 02 and INT 06
  6311.               vectors to the default handlers if they had been
  6312.               revectored by function 1400h
  6313.     AX = 1402h set protection level???
  6314.         BL = protection level???
  6315.             00h NOP
  6316.             01h ???
  6317.             02h ???
  6318.             other (03h) ???
  6319.         ES:DI -> ???
  6320.         Return: CF clear
  6321.             ???
  6322.         Format of Data structure:
  6323.         Offset    Size    Description
  6324.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  6325.          02h    WORD    segment of ??? (word at X:0124h set to this)
  6326.          04h    WORD    number of paragraphs of ???
  6327.          06h  3 WORDs    ??? (copied to X:0000h)
  6328.          0Ch    WORD    ???
  6329.     AX = 1403h add ??? to end of list and ??? (execute func 1406h)
  6330.         ES:DI -> ??? structure added to end of ??? list
  6331.             (at least 31 bytes, DWORD at offset 06h used for
  6332.              storing pointer to next struc, WORD at offset 00h
  6333.              seems to be a key or index)
  6334.         Return: CF clear
  6335.     AX = 1404h NOP
  6336.         Return: CF clear
  6337.     AX = 1405h remove ??? from ??? list
  6338.         BX = key???
  6339.         Return: CF clear
  6340.     AX = 1406h ???
  6341.         ???
  6342.         Return: CF clear
  6343.             ???
  6344.         Notes:    this function is a NOP unless protection level 2 or 3
  6345.               is active
  6346.             when not a NOP, one of the actions is to write-protect
  6347.               certain memory pages
  6348.     AX = 1407h ???
  6349.         ???
  6350.         Return: CF clear
  6351.             ???
  6352.         Note:    same as function 1406h, but only does anything if
  6353.               protection level 2 is active
  6354.     AX = 1408h unprotect???
  6355.         ???
  6356.         Return: CF clear
  6357.             ???
  6358.     AX = 1409h abort program causing protection violation???
  6359.         ???
  6360.         Return: CF clear
  6361.             ???
  6362.     AX = 140Ah set ???
  6363.         BX = index of ???
  6364.         Return: CF clear
  6365.             ???
  6366.         Notes:    no range checking is performed on BX
  6367.             this function is a NOP unless protection level 3 active
  6368.     AX = 140Bh get ???
  6369.         BX = index of ???
  6370.         SI = 0000h
  6371.         Return: CF clear
  6372.             SI = segment of 256-byte buffer??? or 0000h
  6373.         Notes:    no range checking is performed on BX
  6374.             this function is a NOP unless protection level 3 active
  6375.     AH = 15h set timer channel 0 virtualization buffer
  6376.         ES:BX -> WORD buffer for timer channel 0 divisor
  6377.             0000h:0000h to disable virtualization
  6378.         Return: CF clear
  6379.      ---QEMM v5.00+ ---
  6380.     AX = 1600h get memory access status
  6381.         ES:DI -> 256-byte buffer
  6382.         Return: ES:DI buffer filled
  6383.         Note:    each byte of the buffer indicates the status of a 4K
  6384.               page (bit 0 set if read, bit 1 set if written)
  6385.     AX = 1601h set memory access status
  6386.         ES:DI -> 256-byte buffer containing access statuses (see above)
  6387.     AH = 17h get memory usage statistics
  6388.         ES:DI -> 81-byte buffer for memory statistics (see #1888)
  6389.         Return: CF clear
  6390.      ---QEMM v5.11+ ---
  6391.     AH = 18h check whether conventional memory mapped into address range
  6392.         ES:BX = starting address
  6393.         CX = number of 4K pages
  6394.         Return: CF clear
  6395.             AL = 00h one or more pages is remapped
  6396.                  01h all pages in range are conventional memory
  6397.                 (physical address == virtual address)
  6398.     AH = 19h NOP
  6399.         Return: CF set
  6400.     AH = 1Ah I/O port access
  6401.         AL = subfunction
  6402.             00h get byte from I/O port
  6403.             Return: BL = port value
  6404.             01h send byte to I/O port
  6405.             BL = value to send
  6406.             02h send byte to I/O port, get byte from following port
  6407.             BH = value to send
  6408.             Return: BL = value read
  6409.             03h send bytes to two consecutive I/O ports
  6410.             BH = value for first I/O port (DX)
  6411.             BL = value for second I/O port (DX+1)
  6412.         DX = port number
  6413.         Return: CF clear
  6414.     AH = 1Bh MS Windows 3.x support
  6415.         AL = subfunction
  6416.             00h get EMM Import Structure address
  6417.             ES:DI -> buffer for EMM import data structure
  6418.                   (see #1886)
  6419.             Return: CF set on error
  6420.                 CF clear if successful
  6421.             SeeAlso: INT 21/AX=4402h/SF=01h
  6422.             01h disable V86 mode
  6423.             Return: CF set on error
  6424.                     (i.e. no Global EMM Import rec. allocated)
  6425.                 CF clear if successful
  6426.             Note:    shuts down EMS and initializes Global EMM
  6427.                   Import record; this function is invoked from
  6428.                   the callback supplied by INT 2F/AX=1605h
  6429.             02h enable V86 mode
  6430.             Return: CF set on error
  6431.                 CF clear if successful
  6432.             Note:    restarts EMS and frees Global EMM Import
  6433.                   record; this function is invoked from the
  6434.                   callback supplied by INT 2F/AX=1605h
  6435.             03h MS Windows initializing
  6436.             CX = segment from which Windows init broadcast made???
  6437.             DX = Windows startup flags
  6438.             DI = Windows version number (major in upper byte)
  6439.             Return: CF clear if successful
  6440.                     DS:SI -> V86 mode enable/disable callback
  6441.                       (see INT 2F/AX=1605h)
  6442.                     ES:BX -> startup info structure
  6443.                       (see INT 2F/AX=1605h)
  6444.                 CF set on error (unable to start Windows)
  6445.             SeeAlso: INT 2F/AX=1605h
  6446.             04h MS Windows terminating
  6447.             Return: CF clear
  6448.             05h determine whether program is driver
  6449.             DS:DX -> ASCIZ filename
  6450.             Return: CF clear
  6451.                 AL = status
  6452.                     01h if string ends in ".DRV"
  6453.                     FFh if string ends in "GDI.EXE"
  6454.                     00h otherwise
  6455.             Note:    when MS Windows 3.0 standard mode starts,
  6456.                   QEMM patches all drivers until GDI.EXE is
  6457.                   loaded
  6458.             06h patch protected-mode check in Windows driver
  6459.             CX = length of data pointed at by DS:DX
  6460.             DS:DX -> buffer containing Windows driver code
  6461.             Return: CF clear
  6462.             Note:    patches all SMSW x/TEST x,1 instruction
  6463.                   sequences into MOV x,CS/VERW x sequences,
  6464.                   which has the effect that the protected-mode
  6465.                   check will only indicate protected mode in
  6466.                   native protected mode and not in V86 mode
  6467.             07h BUG: QEMM 6.00-7.01 accept this and branch randomly
  6468.             else Return: CF set
  6469.     AH = 1Ch hardware interrupt V86-mode calldowns
  6470.         AL = subfunction
  6471.             00h disable IRQ0-7 calldowns
  6472.             01h set V86-mode IRQ0-7 handlers
  6473.             ES:DI -> 8 DWORDs containing V86-mode handler addresses
  6474.             02h disable IRQ8-15 handlers
  6475.             03h set V86-mode IRQ8-15 handlers
  6476.             ES:DI -> 8 DWORDs containing V86-mode handler addresses
  6477.         BUG:    although the jump table only contains four entries,
  6478.               QEMM 6.00 will attempt to use it for any value of
  6479.               AL between 00h and 2Ah, thus branching unpredictably
  6480.               for AL=04h-2Ah; QEMM v7.01 behaves similarly for
  6481.               AL=04h-1Bh
  6482.         Note:    when enabled, the appropriate IRQs are reflected back
  6483.               to the specified handlers in virtual-86 mode after
  6484.               the CPU automatically invokes the protected-mode
  6485.               handler inside QEMM
  6486.      ---QEMM v6.00+ ---
  6487.     AH = 1Dh Stealth interrupts
  6488.         AL = subfunction
  6489.             00h switch to pre-Stealth interrupt vector table
  6490.             Note:    also switches VGA Save table pointer
  6491.                   (0040h:00A8h) and overwrites the vectors
  6492.                   currently assigned for use by the two
  6493.                   interrupt controllers (see INT 67/AX=DE0Ah)
  6494.                   with the vectors for INT 08-0F and 70-77 (to
  6495.                   avoid crashing the system).
  6496.             01h restore user interrupt vector table
  6497.             Notes:    interrupts should be disabled around the
  6498.                   AX=1D00h and AX=1D01h calls because QEMM does
  6499.                   not modify the memory maps to map in ROM, so
  6500.                   an interrupt could be disastrous
  6501.                 clears any pending IRQ7 at end of function
  6502.             else
  6503.             Return: CF set
  6504.         Note:    functions 1Dxxh are not supported by QEMM v7.01, and
  6505.               always return CF set
  6506.     AH = 1Eh Stealth information (partially documented)
  6507.         AL = subfunction
  6508.             00h "QEMM_GET_INFO" get Stealth configuration
  6509.             Return: BL = memory configuration flags
  6510.                       (documented as "reserved") (see #1887)
  6511.                 BH = reserved (always 00h for v6.00)
  6512.                 CL = stealth type
  6513.                     (00h none,46h Frame,4Dh Map, 50h Protect)
  6514.                 CH = suspend/resume interrupt (00h none)
  6515.                 DX = reserved (always 0000h for v6.00)
  6516.                 SI = reserved (always 0000h for v6.00)
  6517.                 DI = reserved (always 0000h for v6.00)
  6518.             01h "QEMM_GET_STEALTH_COUNT" get number of Stealth'ed ROMs
  6519.             Return: CF clear
  6520.                 BX = number of Stealth'ed ROMs
  6521.             02h "QEMM_GET_STEALTH_LIST" get Stealth'ed ROM info
  6522.             ES:DI -> buffer for Stealth ROM info (see #1889)
  6523.             Return: CF clear
  6524.                 BX = number of Stealth'ed ROMs
  6525.                 ES:DI buffer filled
  6526.             else
  6527.             Return: CF set
  6528.     AH = 1Fh page table manipulation (documented)
  6529.         AL = subfunction
  6530.             00h "QEMM_GET_PTE" get page table entry
  6531.             CX = page number
  6532.             Return: EDX = page table entry
  6533.                 CF clear
  6534.             01h "QEMM_SET_PTE" set page table entry
  6535.             CX = page number
  6536.             EDX = new page table entry
  6537.             Return: CF clear
  6538.             SeeAlso: function 1008h
  6539.             else
  6540.             Return: CF set
  6541.     AH = 20h asynchronous disk access support (documented)
  6542.         AL = subfunction
  6543.             00h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  6544.             Return: CF clear
  6545.                 BL = flags
  6546.                     bit 7: VirtualHDIRQ setting respected
  6547.                       (set if Stealth active)
  6548.                     bits 6-1 reserved
  6549.                     bit 0: VirtualHDIRQ currently enabled
  6550.                     (INT 15/AH=90h suppressed when enabled)
  6551.             01h "QEMM_SET_VHI_FINO" set VirtualHDIRQ state
  6552.             BL bit 0 = new VirtualHDIRQ state
  6553.             Return: CF clear
  6554.                 BL = old VHI setting (bits 0 and 7, see above)
  6555.             else
  6556.             Return: CF set
  6557.     AH = 21h Stealth support (documented)
  6558.         AL = subfunction
  6559.             00h "QEMM_COPY_STEALTH_ROMS" copy data from Stealthed addr
  6560.             DS:SI -> start address of hidden memory to copy
  6561.             ES:DI -> buffer for copied data
  6562.             ECX = number of bytes to copy
  6563.             Return: CF clear if successful
  6564.                 CF set on error (DS:SI < C000h:0000h or
  6565.                           DS:SI + ECX > 1M)
  6566.             else
  6567.             Return: CF set
  6568.     ---QEMM v6.03+ ---
  6569.     AH = 22h DESQview/X support
  6570.         AL = subfunction
  6571.             00h get ???
  6572.             Return: CF clear
  6573.                 ES:DI -> ???
  6574.             01h set ???
  6575.             ES:DI -> ??? or 0000h:0000h
  6576.             Return: CF clear if successful
  6577.                 CF set on error
  6578.     ---QEMM v6.04+ ---
  6579.     AH = 23h ???
  6580.         AL = subfunction
  6581.             00h get ???
  6582.             BX = which ??? to get (must be 0000h for v6.04)
  6583.             Return: CF clear if successful
  6584.                     ES:DI -> ???
  6585.                 CF set on error
  6586.             01h set ???
  6587.             BX = which ??? to set (must be 0000h for v6.04)
  6588.             ES:DI -> ???
  6589.             Return: CF clear if successful
  6590.                 CF set on error
  6591.             02h clear specified ???
  6592.             BX = which ??? to clear (must be 0000h for v6.04)
  6593.             Return: CF clear if successful
  6594.                 CF set on error
  6595.             FFh clear all ???
  6596.             else
  6597.             Return: CF set
  6598.     ---QEMM v7.01 only---
  6599.     AH = 24h ST-DBL support
  6600.         AL = subfunction
  6601.             00h set ???
  6602.             EDX -> information table
  6603.                 (EDX = segment SHL 16 + offset)
  6604.             01h ???
  6605.     other
  6606.         Return: CF set
  6607.  
  6608. Format of QEMM protection level configuration:
  6609. Offset    Size    Description    (Table 1884)
  6610.  00h    WORD    segment of 128 breakpoint (INT 3) instructions for use in
  6611.           DESQview protection level 3 interrupt vector checking, or
  6612.           0000h to disable; in pl3, INTs 00-7F are pointed at these
  6613.           breakpoints
  6614.  02h    DWORD    -> array of actual interrupt handler addresses for INT 00-7F
  6615.           when interrupt vectors are pointed at protection level 3
  6616.           breakpoints
  6617.  06h    DWORD    far pointer to ??? region list (see #1885)
  6618.  0Ah    DWORD    far pointer to buffer for returned ???
  6619.  0Eh    DWORD    seg:ofs of function to call on protection violation???
  6620.  12h    WORD    segment of ???
  6621.  14h    DWORD    far pointer to DWORD containing number of paragraphs of
  6622.           ??? for segment at offset 12h
  6623.     ???
  6624.  
  6625. Format of protection level Region List:
  6626. Offset    Size    Description    (Table 1885)
  6627.  00h    WORD    number of PAIRS of pointers to follow
  6628.  02h 2N DWORDs    start/end seg:ofs addresses of ??? regions
  6629. Note:    QEMM converts the segmented addresses into linear addresses in place
  6630.  
  6631. Format of EMM Import structure:
  6632. Offset    Size    Description    (Table 1886)
  6633.  00h    DWORD    physical address of EMM import struct
  6634.  04h    BYTE    major version (v6.00 sets to 01h)
  6635.  05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  6636. SeeAlso: INT 21/AX=4402h/SF=01h
  6637.  
  6638. Bitfields for memory configuration flags:
  6639. Bit(s)    Description    (Table 1887)
  6640.  0    conventional memory sorted
  6641.  1    conventional memory filled
  6642.  2    ???
  6643.  3    ???
  6644.  4    expanded memory is in use
  6645.  5    ???
  6646.  
  6647. Format of QEMM 6.0 memory statistics:
  6648. Offset    Size    Description    (Table 1888)
  6649.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  6650.  01h    DWORD    initial conventional memory in bytes
  6651.  05h    DWORD    initial extended memory in bytes
  6652.  09h    DWORD    initial expanded memory in bytes
  6653.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  6654.  11h    DWORD    Unavailable conventional memory in bytes
  6655.  15h    DWORD    Unavailable extended memory in bytes
  6656.  19h    DWORD    Unavailable expanded memory in bytes
  6657.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  6658.         Add to offset 49h for Total unavailable top/shadow.
  6659.  21h    DWORD    QEMM code size in bytes
  6660.  25h    DWORD    QEMM data size in bytes
  6661.  29h    DWORD    bytes used for TASKS=
  6662.  2Dh    DWORD    DMA buffer size
  6663.  31h    DWORD    bytes used for MAPS=
  6664.  35h    DWORD    bytes of high RAM
  6665.  39h    DWORD    bytes used by mapped ROMs
  6666.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  6667.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  6668.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  6669.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  6670.         Add to offset 1Dh for Total unavailable top/shadow.
  6671.  4Dh    DWORD    conventional memory overhead in bytes
  6672.         (set to 0 by QEMM.COM prior to call)
  6673.  
  6674. Format of Stealth ROM info [array]:
  6675. Offset    Size    Description    (Table 1889)
  6676.  00h    WORD    starting segment of ROM
  6677.  02h    WORD    length of ROM in paragraphs
  6678.  
  6679. Format of QEMM EGA/VGA DAC register virtualization buffer:
  6680. Offset    Size    Description    (Table 1890)
  6681.  00h    BYTE    (temp) current color register number
  6682.  01h    BYTE    (temp) number of bytes written so far for current color reg
  6683.  02h 768 BYTEs    three bytes per color register
  6684. --------m-6740-------------------------------
  6685. INT 67 - LIM EMS - GET MANAGER STATUS
  6686.     AH = 40h
  6687. Return: AH = status (00h,80h,81h,84h) (see #1891)
  6688. Note:    this call can be used only after establishing that the EMS driver is in
  6689.       fact present
  6690. SeeAlso: AH=3Fh,AX=FFA5h
  6691.  
  6692. (Table 1891)
  6693. Values for EMS function status:
  6694.  00h    successful
  6695.  80h    internal error
  6696.  81h    hardware malfunction
  6697.  83h    invalid handle
  6698.  84h    undefined function requested by application
  6699.  85h    no more handles available
  6700.  86h    error in save or restore of mapping context
  6701.  87h    insufficient memory pages in system
  6702.  88h    insufficient memory pages available
  6703.  89h    zero pages requested
  6704.  8Ah    invalid logical page number encountered
  6705.  8Bh    invalid physical page number encountered
  6706.  8Ch    page-mapping hardware state save area is full
  6707.  8Dh    save of mapping context failed
  6708.  8Eh    restore of mapping context failed
  6709.  8Fh    undefined subfunction
  6710.  90h    undefined attribute type
  6711.  91h    feature not supported
  6712.  92h    successful, but a portion of the source region has been overwritten
  6713.  93h    length of source or destination region exceeds length of region
  6714.       allocated to either source or destination handle
  6715.  94h    conventional and expanded memory regions overlap
  6716.  95h    offset within logical page exceeds size of logical page
  6717.  96h    region length exceeds 1M
  6718.  97h    source and destination EMS regions have same handle and overlap
  6719.  98h    memory source or destination type undefined
  6720.  9Ah    specified alternate map register or DMA register set not supported
  6721.  9Bh    all alternate map register or DMA register sets currently allocated
  6722.  9Ch    alternate map register or DMA register sets not supported
  6723.  9Dh    undefined or unallocated alternate map register or DMA register set
  6724.  9Eh    dedicated DMA channels not supported
  6725.  9Fh    specified dedicated DMA channel not supported
  6726.  A0h    no such handle name
  6727.  A1h    a handle found had no name, or duplicate handle name
  6728.  A2h    attempted to wrap around 1M conventional address space
  6729.  A3h    source array corrupted
  6730.  A4h    operating system denied access
  6731. --------m-6741-------------------------------
  6732. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  6733.     AH = 41h
  6734. Return: AH = status (see also AH=40h)
  6735.         00h function successful
  6736.         BX = segment of page frame
  6737. SeeAlso: AH=58h,AH=68h
  6738. --------m-6742-------------------------------
  6739. INT 67 - LIM EMS - GET NUMBER OF PAGES
  6740.     AH = 42h
  6741. Return: AH = status (see also AH=40h)
  6742.         00h function successful
  6743.         BX = number of unallocated pages
  6744.         DX = total number of pages
  6745. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  6746.       when this call is made; use AH=46h to ensure that EMM386 is ON
  6747.       before making this call
  6748. SeeAlso: INT 2F/AX=2702h
  6749. --------m-6743-------------------------------
  6750. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  6751.     AH = 43h
  6752.     BX = number of logical pages to allocate
  6753. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #1891)
  6754.     DX = handle if AH=00h
  6755. SeeAlso: AH=45h
  6756. --------m-6744-------------------------------
  6757. INT 67 - LIM EMS - MAP MEMORY
  6758.     AH = 44h
  6759.     AL = physical page number (0-3)
  6760.     BX = logical page number
  6761.         or FFFFh to unmap (QEMM)
  6762.     DX = handle
  6763. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #1891)
  6764. SeeAlso: AH=69h
  6765. --------m-6745-------------------------------
  6766. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  6767.     AH = 45h
  6768.     DX = EMM handle
  6769. Return: AH = status (00h,80h,81h,83h,84h,86h) (see #1891)
  6770. SeeAlso: AH=43h
  6771. --------m-6746-------------------------------
  6772. INT 67 - LIM EMS - GET EMM VERSION
  6773.     AH = 46h
  6774. Return: AH = status (00h,80h,81h,84h) (see #1891)
  6775.     AL = EMM version number if AH=00h
  6776. --------m-6747-------------------------------
  6777. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  6778.     AH = 47h
  6779.     DX = handle
  6780. Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #1891)
  6781. SeeAlso: AH=48h
  6782. --------m-6748-------------------------------
  6783. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  6784.     AH = 48h
  6785.     DX = handle
  6786. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #1891)
  6787. SeeAlso: AH=47h
  6788. --------m-6749-------------------------------
  6789. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  6790.     AH = 49h
  6791. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  6792. --------m-674A-------------------------------
  6793. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  6794.     AH = 4Ah
  6795. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  6796. --------m-674B-------------------------------
  6797. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  6798.     AH = 4Bh
  6799. Return: AH = status (00h,80h,81h,83h,84h) (see #1891)
  6800.     BX = number of EMM handles if AH=00h
  6801. --------m-674C-------------------------------
  6802. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  6803.     AH = 4Ch
  6804.     DX = EMM handle
  6805. Return: AH = status (see #1328)
  6806.     BX = number of logical pages if AH=00h
  6807. SeeAlso: AH=4Dh
  6808. --------m-674D-------------------------------
  6809. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  6810.     AH = 4Dh
  6811.     ES:DI -> array to receive information
  6812. Return: AH = status (00h,80h,81h,84h) (see #1891)
  6813.     ---if AH=00h---
  6814.     BX = number of active EMM handles
  6815.     array filled with 2-word entries, consisting of a handle and the
  6816.       number of pages allocated to that handle
  6817. SeeAlso: AH=4Ch
  6818. --------m-674E-------------------------------
  6819. INT 67 - LIM EMS - GET OR SET PAGE MAP
  6820.     AH = 4Eh
  6821.     AL = subfunction
  6822.         00h get mapping registers
  6823.         01h set mapping registers
  6824.         02h get and set mapping registers at once
  6825.         03h get size of page-mapping array
  6826.     DS:SI -> array holding information (AL=01h/02h)
  6827.     ES:DI -> array to receive information (AL=00h/02h)
  6828. Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
  6829.         00h successful
  6830.         AL = bytes in page-mapping array (AL=03h only)
  6831.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  6832. Notes:    this function was designed to be used by multitasking operating systems
  6833.       and should not ordinarily be used by appplication software.
  6834.     MD386 returns the size of the page-mapping array in AX instead of AL
  6835. SeeAlso: AH=4Fh
  6836. --------m-674F-------------------------------
  6837. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  6838.     AH = 4Fh
  6839.     AL = subfunction
  6840.         00h get partial page map
  6841.            DS:SI -> structure containing list of segments whose mapping
  6842.             contexts are to be saved
  6843.            ES:DI -> array to receive page map
  6844.         01h set partial page map
  6845.            DS:SI -> structure containing saved partial page map
  6846.         02h get size of partial page map
  6847.            BX = number of mappable segments in the partial map to be saved
  6848. Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
  6849.         8Bh one of the specified segments is not mappable
  6850.         A3h contents of partial page map corrupted or count of mappable
  6851.         segments exceeds total number of mappable segments in system
  6852.     AL = size of partial page map for subfunction 02h
  6853. SeeAlso: AH=4Eh
  6854. --------m-6750-------------------------------
  6855. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  6856.     AH = 50h
  6857.     AL = subfunction
  6858.         00h use physical page numbers
  6859.         01h use segment addresses
  6860.     DX = handle
  6861.     CX = number of entries in array
  6862.     DS:SI -> mapping array (see #1892)
  6863. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #1891)
  6864. SeeAlso: AH=40h
  6865.  
  6866. Format of EMS mapping array entry:
  6867. Offset    Size    Description    (Table 1892)
  6868.  00h    WORD    logical page number or FFFFh to unmap physical page
  6869.  02h    WORD    physical page number or segment address
  6870. --------m-6751-------------------------------
  6871. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  6872.     AH = 51h
  6873.     DX = handle
  6874.     BX = number of pages to be allocated to handle
  6875. Return:    AH = status (00h,80h,81h,83h,84h,87h,88h) (see #1893)
  6876.     BX = actual number of pages allocated to handle
  6877.  
  6878. (Table 1893)
  6879. Values for EMS function status:
  6880.  00h    successful
  6881.  80h    internal error
  6882.  81h    hardware malfunction
  6883.  83h    invalid handle
  6884.  84h    undefined function requested
  6885.  87h    more pages requested than present in system
  6886.  88h    more pages requested than currently available
  6887.  8Ah    invalid logical page number encountered
  6888.  8Bh    invalid physical page number encountered
  6889.  8Fh    undefined subfunction
  6890.  90h    undefined attribute type
  6891.  91h    feature not supported
  6892.  A0h    no such handle name
  6893.  A1h    duplicate handle name
  6894. --------m-6752-------------------------------
  6895. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  6896.     AH = 52h
  6897.     AL = subfunction
  6898.         00h get handle attributes
  6899.         Return: AL = attribute
  6900.                 00h handle is volatile
  6901.                 01h handle is nonvolatile
  6902.         01h set handle attributes
  6903.         BL = new attribute (see returned AL)
  6904.         02h get attribute capability
  6905.         Return: AL = attribute capability
  6906.                 00h only volatile handles supported
  6907.                 01h both volatile and non-volatile supported
  6908.     DX = handle
  6909. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #1891)
  6910. SeeAlso: AH=53h
  6911. --------m-6753-------------------------------
  6912. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  6913.     AH = 53h
  6914.     AL = subfunction
  6915.         00h get handle name
  6916.            ES:DI -> 8-byte buffer for handle name
  6917.         01h set handle name
  6918.            DS:SI -> 8-byte handle name
  6919.     DX = handle
  6920. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #1891)
  6921. SeeAlso: AH=52h
  6922. --------m-6754-------------------------------
  6923. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  6924.     AH = 54h
  6925.     AL = subfunction
  6926.         00h get handle directory
  6927.            ES:DI -> buffer for handle directory (see #1894)
  6928.         01h search for named handle
  6929.            DS:SI -> 8-byte name
  6930.         02h get total number of handles
  6931. Return: AL = number of entries in handle directory (subfunction 00h)
  6932.     DX = value of named handle (subfunction 01h)
  6933.     BX = total number of handles (subfunction 02h)
  6934.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #1893)
  6935.         A1h a handle found had no name
  6936.  
  6937. Format of EMS handle directory entry:
  6938. Offset    Size    Description    (Table 1894)
  6939.  00h    WORD    handle
  6940.  02h  8 BYTEs    handle's name
  6941. --------m-6755-------------------------------
  6942. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  6943.     AH = 55h
  6944.     AL = subfunction
  6945.         00h physical page numbers provided by caller
  6946.         01h segment addresses provided by caller
  6947.     DX = handle
  6948.     DS:SI -> structure containing map and jump address
  6949. Return: (at target address unless error)
  6950.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #1891)
  6951. SeeAlso: AH=56h
  6952. --------m-6756-------------------------------
  6953. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  6954.     AH = 56h
  6955.     AL = subfunction
  6956.         00h physical page numbers provided by caller
  6957.         DX = handle
  6958.         DS:SI -> structure containing page map and call address
  6959.         01h segment addresses provided by caller
  6960.         DX = handle
  6961.         DS:SI -> structure containing page map and call address
  6962.         02h get page map stack space required
  6963.         Return: BX = stack space required
  6964. Return: (if successful, the target address is called.  Use a RETF to return and
  6965.      restore mapping context)
  6966.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #1891)
  6967. SeeAlso: AH=55h
  6968. --------m-6756FF-----------------------------
  6969. INT 67 - RM386 v6.00 - ???
  6970.     AX = 56FFh
  6971.     DS:SI -> ???
  6972.     ???
  6973. Return: ???
  6974. --------m-6757-------------------------------
  6975. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  6976.     AH = 57h
  6977.     AL = subfunction
  6978.         00h move memory region
  6979.         01h exchange memory region
  6980.     DS:SI -> structure describing source and destination (see #1896)
  6981. Return: AH = status (see #1895)
  6982. Note:    source and destination may overlap for a move, in which case the copy
  6983.       direction is chosen such that the destination receives an intact copy
  6984.       of the source region
  6985.  
  6986. (Table 1895)
  6987. Values for EMS function status:
  6988.  00h    successful
  6989.  80h    internal error
  6990.  81h    hardware failure
  6991.  83h    invalid handle
  6992.  84h    undefined function requested
  6993.  8Ah    invalid logical page number encountered
  6994.  8Fh    undefined subfunction
  6995.  92h    successful, but a portion of the source region has been overwritten
  6996.  93h    length of source or destination region exceeds length of region
  6997.       allocated to either source or destination handle
  6998.  94h    conventional and expanded memory regions overlap
  6999.  95h    offset within logical page exceeds size of logical page
  7000.  96h    region length exceeds 1M
  7001.  97h    source and destination EMS regions have same handle and overlap
  7002.  98h    memory source or destination type undefined
  7003.  A2h    attempted to wrap around 1M conventional address space
  7004.  
  7005. Format of EMS copy data:
  7006. Offset    Size    Description    (Table 1896)
  7007.  00h    DWORD    region length in bytes
  7008.  04h    BYTE    source memory type
  7009.         00h conventional
  7010.         01h expanded
  7011.  05h    WORD    source handle (0000h if conventional memory)
  7012.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  7013.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  7014.  0Bh    BYTE    destination memory type
  7015.         00h conventional
  7016.         01h expanded
  7017.  0Ch    WORD    destination handle
  7018.  0Eh    WORD    destination initial offset
  7019.  10h    WORD    destination initial segment or page
  7020. --------m-6758-------------------------------
  7021. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  7022.     AH = 58h
  7023.     AL = subfunction
  7024.         00h get mappable physical address array
  7025.         ES:DI -> buffer to be filled with array
  7026.         01h get number of entries in m.p.a. array
  7027. Return: CX = number of entries in array
  7028.     AH = status (00h,80h,81h,84h,8Fh) (see #1895)
  7029. Note:    the returned array for subfunction 00h is filled in physical segment
  7030.       address order
  7031.  
  7032. Format of EMS mappable physical address entry:
  7033. Offset    Size    Description    (Table 1897)
  7034.  00h    WORD    physical page segment
  7035.  02h    WORD    physical page number
  7036. --------m-675857-----------------------------
  7037. INT 67 U - NETROOM??? - ???
  7038.     AX = 5857h
  7039.     BX = function??? (0057h,0059h,0159h seen)
  7040.     ???
  7041. Return: ???
  7042. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  7043.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  7044.       AX=580xh or AX=5857h/BX=0x59h should be used
  7045. SeeAlso: AX=5BF0h
  7046. --------m-6759-------------------------------
  7047. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  7048.     AH = 59h
  7049.     AL = subfunction
  7050.         00h get hardware configuration array
  7051.         ES:DI -> buffer to be filled with array (see #1898)
  7052.         01h get unallocated raw page count
  7053.         Return: BX = unallocated raw pages
  7054.             DX = total raw pages
  7055. Return: AH = status (see also AH=58h"EMS 4.0")
  7056.         A4h access denied by operating system
  7057. Note:    subfunction 00h is for use by operating systems only, and can be
  7058.       enabled or disabled at any time by the operating system
  7059.  
  7060. Format of EMS hardware configuration array:
  7061. Offset    Size    Description    (Table 1898)
  7062.  00h    WORD    size of raw EMM pages in paragraphs
  7063.  02h    WORD    number of alternate register sets
  7064.  04h    WORD    size of mapping-context save area in bytes
  7065.  06h    WORD    number of register sets assignable to DMA
  7066.  08h    WORD    DMA operation type
  7067.         0000h DMA with alternate register sets
  7068.         0001h only one DMA register set
  7069. --------m-675A-------------------------------
  7070. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  7071.     AH = 5Ah
  7072.     AL = subfunction
  7073.         00h allocate standard pages
  7074.         01h allocate raw pages
  7075.     BX = number of pages to allocate
  7076. Return: DX = handle
  7077.     AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #1891)
  7078. --------m-675B-------------------------------
  7079. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  7080.     AH = 5Bh
  7081.     AL = subfunction
  7082.         00h get alternate map register set
  7083.         Return: BL = current active alternate map register set number
  7084.             ES:DI -> map register context save area if BL=00h
  7085.         01h set alternate map register set
  7086.         BL = new alternate map register set number
  7087.         ES:DI -> map register context save area if BL=0
  7088.         02h get alternate map save array size
  7089.         Return: DX = array size in bytes
  7090.         03h allocate alternate map register set
  7091.         Return: BL = number of map register set; 00h = not supported
  7092.         04h deallocate alternate map register set
  7093.         BL = number of alternate map register set
  7094. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #1899)
  7095. Note:    this function is for use by operating systems only, and can be
  7096.       enabled or disabled at any time by the operating system
  7097.  
  7098. (Table 1899)
  7099. Values for EMS function status:
  7100.  00h    successful
  7101.  80h    internal error
  7102.  81h    hardware malfunction
  7103.  84h    undefined function requested
  7104.  8Fh    undefined subfunction
  7105.  9Ah    specified alternate map register or DMA register set not supported
  7106.  9Bh    all alternate map register or DMA register sets currently allocated
  7107.  9Ch    alternate map register or DMA register sets not supported
  7108.  9Dh    undefined or unallocated alternate map register/DMA register set
  7109.  9Eh    dedicated DMA channels not supported
  7110.  9Fh    specified dedicated DMA channel not supported
  7111.  A3h    source array corrupted
  7112.  A4h    operating system denied access
  7113. --------m-675B-------------------------------
  7114. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  7115.     AH = 5Bh
  7116.     AL = subfunction
  7117.         05h allocate DMA register set
  7118.         Return: BL = DMA register set number, 00h if not supported
  7119.         06h enable DMA on alternate map register set
  7120.            BL = DMA register set number
  7121.            DL = DMA channel number
  7122.         07h disable DMA on alternate map register set
  7123.            BL = DMA register set number
  7124.         08h deallocate DMA register set
  7125.            BL = DMA register set number
  7126. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #1899)
  7127. Note:    this function is for use by operating systems only, and can be
  7128.       enabled or disabled at any time by the operating system
  7129. --------m-675BE0-----------------------------
  7130. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  7131.     AX = 5BE0h
  7132.     ES:BX -> memory for which to get linear address
  7133. Return: AH = 00h
  7134.     CX:DX = linear address of physical memory corresponding to ES:BX
  7135. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  7136.       MICEMM is a memory manager for some Micronics motherboards
  7137. Note:    this has been superceded by AX=DE06h, which should be used instead
  7138. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  7139. --------m-675BE1-----------------------------
  7140. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  7141.     AX = 5BE1h
  7142. Return: AH = 00h
  7143.     CX = code and data size in bytes
  7144.     DX:BX = physical address of RM386 code
  7145.     DI:SI = total size of RM386 area including handle tables
  7146.     BP = number of additional pages (high DOS, etc.)
  7147. SeeAlso: AX=5BE0h,AX=5BE2h
  7148. --------m-675BE2-----------------------------
  7149. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  7150.     AX = 5BE2h
  7151. Return: DS:SI -> V86-mode table (see #1900)
  7152.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  7153. SeeAlso: AX=5BE0h,AX=5BE1h
  7154.  
  7155. Format of RM386 V86-mode table:
  7156. Offset    Size    Description    (Table 1900)
  7157.  00h    DWORD    original INT 13 vector
  7158.  04h    DWORD    original INT 15 vector
  7159.  08h    DWORD    original INT 19 vector
  7160.  0Ch    DWORD    original INT 21 vector
  7161.  10h    DWORD    original INT 4B vector
  7162.  14h    DWORD    original INT 67 vector
  7163. --------m-675BF0-----------------------------
  7164. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  7165.     AX = 5BF0h
  7166. Return: AH = 00h if MICEMM or RM386 present
  7167.         BX = code segment of driver
  7168. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  7169.       manager included in Helix Software's Netroom
  7170. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  7171. --------m-675BF1-----------------------------
  7172. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  7173.     AX = 5BF1h
  7174.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  7175. Return: AH = 00h
  7176.     ES:BX buffer filled (see #1901)
  7177. Note:    each byte in the buffer specifies the type of a 4K page of memory
  7178. SeeAlso: AX=5BE0h,AX=5BF0h
  7179.  
  7180. (Table 1901)
  7181. Values for MICEMM/RM386 memory type:
  7182.  00h    unused (MICEMM), RAM/available (RM386)
  7183.  02h    DOS extension (XMS UMB)
  7184.  04h    shadowed ROM
  7185.  08h    mappable EMS
  7186.  10h    page frame
  7187.  20h    ROM
  7188.  40h    reserved (video memory, etc)
  7189.  80h    RAM (MICEMM), Windows UMB (RM386)
  7190. --------m-675BF2-----------------------------
  7191. INT 67 - RM386 - GET RM386 INTERNAL DATA
  7192.     AX = 5BF2h
  7193.     CX = size of buffer
  7194.     DS:SI -> buffer for internal data
  7195.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  7196. Return: buffer filled
  7197. Note:    the data returned by this function is release-specific
  7198. SeeAlso: AX=5BF0h
  7199. --------m-675BF3-----------------------------
  7200. INT 67 - RM386 - RETURN TO REAL MODE
  7201.     AX = 5BF3h
  7202. Return: nothing
  7203. Note:    use AX=5DE0h instead of this functin
  7204. SeeAlso: AX=5BF0h,AX=5DE0h
  7205. --------m-675BF4-----------------------------
  7206. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  7207.     AX = 5BF4h
  7208. Return: AH = 00h
  7209.     BX = global flags 1 (see #1902)
  7210.     CX = global flags 2 (see #1903)
  7211.     DX = global flags 3 (see #1904)
  7212.     SI = global flags 4 (see #1905)
  7213. SeeAlso: AX=5BF0h
  7214.  
  7215. Bitfields for RM386 global flags 1:
  7216. Bit(s)    Description    (Table 1902)
  7217.  0-3    reserved
  7218.  4    V86 mode
  7219.  5    reserved
  7220.  6    80386 or higher CPU
  7221.  7,8    reserved
  7222.  9    A20 enabled at startup
  7223.  10    "HIGH_IO"
  7224.  11    ROM
  7225.  12    large frame
  7226.  13,14    reserved
  7227.  15    PS/2-style A20 control
  7228.  
  7229. Bitfields for RM386 global flags 2:
  7230. Bit(s)    Description    (Table 1903)
  7231.  0    HMA in use
  7232.  1    XMS present
  7233.  2    using XMS driver memory
  7234.  3    HIGH (NEAT only)
  7235.  4-7    reserved
  7236.  8    NOBKTRAP
  7237.  9    NORESET
  7238.  10    ALTMAP
  7239.  11    NOFRAME
  7240.  12-15    reserved
  7241.  
  7242. Bitfields for RM386 global flags 3:
  7243. Bit(s)    Description    (Table 1904)
  7244.  0    NOTEST
  7245.  1    NOEBDA
  7246.  2    Windows3 support
  7247.  3    system board mouse
  7248.  4    DISKBUF
  7249.  5    EBDALOW
  7250.  6    A20 global enable flag
  7251.  7    A20 flag
  7252.  8    EBDA moved to stub
  7253.  9    VXD file was found
  7254.  10    reserved
  7255.  11    NOBOOTMAP
  7256.  12    AUTO
  7257.  13    PS/2 machine
  7258.  14    Compaq ROM merge active
  7259.  15    NOHMA set
  7260.  
  7261. Bitfields for RM386 global flags 4:
  7262. Bit(s)    Description    (Table 1905)
  7263.  0    "NOV8259" don't virtualize interrupt controller
  7264.  1    NOSCSI
  7265.  2    NOSCAN
  7266.  3    NOTR
  7267.  4    ALTBOOT
  7268.  5    NOCOMPQ
  7269.  6    KB2TRAP
  7270.  7    DESHADOW
  7271.  8    Video 7 VGA detected
  7272.  9    reserved
  7273.  10    NOVGA
  7274.  11    NOPS2
  7275.  12    DEBUG
  7276.  13    NOVKB
  7277.  14,15    reserved
  7278. --------m-675BF5-----------------------------
  7279. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  7280.     AX = 5BF5h
  7281. Return: AH = status
  7282.         00h successful
  7283.         BX = current number of allocated EMS handles
  7284.         84h function not available
  7285. SeeAlso: AX=5BF0h
  7286. --------m-675C-------------------------------
  7287. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  7288.     AH = 5Ch
  7289. Return: AH = status (see #1906)
  7290.  
  7291. (Table 1906)
  7292. Values for EMS function status:
  7293.  00h    successful
  7294.  80h    internal error
  7295.  81h    hardware malfunction
  7296.  84h    undefined function requested
  7297. --------m-675D-------------------------------
  7298. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  7299.     AH = 5Dh
  7300.     AL = subfunction
  7301.         00h enable OS Function Set
  7302.         01h disable OS Function Set
  7303.         02h return access key (resets memory manager, returns access key at
  7304.         next invocation)
  7305.     BX,CX = access key returned by first invocation
  7306. Return: BX,CX = access key, returned only on first invocation of function
  7307.     AH = status (see also AH=5Ch)
  7308.         8Fh undefined subfunction
  7309.         A4h operating system denied access
  7310. --------m-675D03-----------------------------
  7311. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  7312.     AX = 5D03h
  7313.     ???
  7314. Return: ???
  7315. Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
  7316.       for use with the MultiDOS Plus multitasker
  7317. SeeAlso: AX=5D04h,AX=5E00h
  7318. --------m-675D04-----------------------------
  7319. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  7320.     AX = 5D04h
  7321.     BX = alternate register set number
  7322.     ES:DI -> 1024-byte buffer for map structure
  7323. Return: AH = status (see #1891)
  7324.     buffer filled if AH=00h
  7325. Note:    used for debugging purposes
  7326. SeeAlso: AX=5D05h
  7327. --------m-675D05-----------------------------
  7328. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  7329.     AX = 5D05h
  7330.     BX = handle number
  7331.     ES:DI -> 1024-byte buffer for handle table
  7332. Return: AH = status (see #1891)
  7333.     buffer filled if AH=00h
  7334. Note:    used for debugging purposes
  7335. SeeAlso: AX=5D04h
  7336. --------m-675DE0-----------------------------
  7337. INT 67 - RM386 - DISABLE RM386
  7338.     AX = 5DE0h
  7339. Note:    RM386 traps this function on the initial transition to protected
  7340.       mode caused by the INT instruction, which means it can not be
  7341.       overridden simply by hooking the interrupt
  7342. SeeAlso: AX=5DE1h
  7343. --------m-675DE1-----------------------------
  7344. INT 67 - RM386 - ENABLE RM386
  7345.     AX = 5DE1h
  7346. Note:    RM386 traps this function on the initial transition to protected
  7347.       mode caused by the INT instruction, which means it can not be
  7348.       overridden simply by hooking the interrupt
  7349. SeeAlso: AX=5DE0h
  7350. --------m-675DE2-----------------------------
  7351. INT 67 - RM386 - GET PAGE TABLE
  7352.     AX = 5DE2h
  7353.     ES:DI -> 1088-byte buffer for page table
  7354. Return: ES:DI buffer filled
  7355. Note:    RM386 traps this function on the initial transition to protected
  7356.       mode caused by the INT instruction, which means it can not be
  7357.       overridden simply by hooking the interrupt
  7358. SeeAlso: AX=5DE3h
  7359. --------m-675DE3-----------------------------
  7360. INT 67 - RM386 - SET PAGE TABLE
  7361.     AX = 5DE3h
  7362.     ES:DI -> 1088-byte buffer containing page table
  7363. Notes:    only the access bits of the page table are used, the remainder is
  7364.       ignored
  7365.     RM386 traps this function on the initial transition to protected
  7366.       mode caused by the INT instruction, which means it can not be
  7367.       overridden simply by hooking the interrupt
  7368. SeeAlso: AX=5DE2h
  7369. --------m-675DE4-----------------------------
  7370. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  7371.     AX = 5DE4h
  7372.     BL = page number
  7373.     BH = access (00h read-only, 01h read-write)
  7374. Note:    RM386 traps this function on the initial transition to protected
  7375.       mode caused by the INT instruction, which means it can not be
  7376.       overridden simply by hooking the interrupt
  7377. --------m-675DE5-----------------------------
  7378. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  7379.     AX = 5DE5h
  7380.     EBX = physical page number
  7381.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  7382. Return: AH = status
  7383.         00h successful
  7384.         8Bh invalid destination page (not in first megabyte)
  7385. Note:    RM386 traps this function on the initial transition to protected
  7386.       mode caused by the INT instruction, which means it can not be
  7387.       overridden simply by hooking the interrupt
  7388. SeeAlso: AX=5DE6h
  7389. --------m-675DE6-----------------------------
  7390. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  7391.     AX = 5DE6h
  7392.     BX = logical page number in 4K pages from beginning of memory for EMS
  7393.           handle
  7394.     CX = segment in first megabyte to be remapped
  7395.     DX = previously-allocated EMS handle
  7396. Return: AH = status
  7397.         00h successful
  7398.         83h invalid handle
  7399.         8Ah invalid logical page (out of handle's range)
  7400.         8Bh invalid destination page (not in first megabyte)
  7401. Note:    RM386 traps this function on the initial transition to protected
  7402.       mode caused by the INT instruction, which means it can not be
  7403.       overridden simply by hooking the interrupt
  7404. SeeAlso: AX=5DE5h
  7405. --------m-675DE7-----------------------------
  7406. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  7407.     AX = 5DE7h
  7408.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  7409.     CX = number of pages to set
  7410.     DX = first page number to set (in first megabyte)
  7411. Return: AH = status
  7412.         00h successful
  7413.         8Bh invalid destination page (not in first megabyte)
  7414.         A5h invalid page bits
  7415.         A6h invalid page count (overflows first megabyte)
  7416. Note:    RM386 traps this function on the initial transition to protected
  7417.       mode caused by the INT instruction, which means it can not be
  7418.       overridden simply by hooking the interrupt
  7419. --------m-675DE8-----------------------------
  7420. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  7421.     AX = 5DE8h
  7422.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  7423.     CX = number of page table entries to get
  7424.     ES:DI -> buffer for DWORD page table entries
  7425. Return: AH = status (00h successful, 8Bh invalid page)
  7426. Note:    RM386 traps this function on the initial transition to protected
  7427.       mode caused by the INT instruction, which means it can not be
  7428.       overridden simply by hooking the interrupt
  7429. SeeAlso: AX=5DE9h
  7430. --------m-675DE9-----------------------------
  7431. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  7432.     AX = 5DE9h
  7433.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  7434.     CX = number of page table entries to get
  7435.     DS:SI -> buffer of DWORD page table entries
  7436. Return: AH = status (00h successful, 8Bh invalid destination page)
  7437. Note:    RM386 traps this function on the initial transition to protected
  7438.       mode caused by the INT instruction, which means it can not be
  7439.       overridden simply by hooking the interrupt
  7440. SeeAlso: AX=5DE8h
  7441. --------m-675DEA-----------------------------
  7442. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  7443.     AX = 5DEAh
  7444.     BX = function
  7445.         00h globally disable V86-mode trapping
  7446.         01h globally enable V86-mode trapping
  7447.         CL = interrupt to use for trapping
  7448.         02h get I/O trapping state
  7449. Return: AH = status
  7450.         00h successful
  7451.         BX = current trapping state (function 02h)
  7452.             0000h disabled, 0001h enabled
  7453.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  7454. Notes:    RM386 traps this function on the initial transition to protected
  7455.       mode caused by the INT instruction, which means it can not be
  7456.       overridden simply by hooking the interrupt
  7457.     when I/O trapping is enabled and I/O port access occurs, RM386
  7458.       simulates an INT instruction for the specified interrupt; the
  7459.       interrupt handler is responsible for decoding the trapped instruction
  7460.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  7461.       similar but more-easily used interface.
  7462. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  7463. --------m-675DEB-----------------------------
  7464. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  7465.     AX = 5DEBh
  7466.     BX = function
  7467.         00h disable V86-mode trapping for specified port
  7468.         01h enable V86-mode trapping for specified port
  7469.         02h get V86-mode trapping state for specified port
  7470.     DX = port for which to enable/disable/query trapping
  7471. Return: AH = status
  7472.         00h successful
  7473.         BX = current trapping state (00h off, 01h on) (function 02)
  7474.         A7h invalid port ID
  7475.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  7476. Notes:    RM386 traps this function on the initial transition to protected
  7477.       mode caused by the INT instruction, which means it can not be
  7478.       overridden simply by hooking the interrupt
  7479. SeeAlso: AX=5DEAh
  7480. --------m-675DFD-----------------------------
  7481. INT 67 U - RM386 v6.00 - ???
  7482.     AX = 5DFDh
  7483.     ???
  7484. Return: ???
  7485. Note:    RM386 traps this function on the initial transition to protected
  7486.       mode caused by the INT instruction, which means it can not be
  7487.       overridden simply by hooking the interrupt
  7488. SeeAlso: AX=5DFEh
  7489. --------m-675DFE-----------------------------
  7490. INT 67 U - RM386 v6.00 - ???
  7491.     AX = 5DFEh
  7492.     ???
  7493. Return: ???
  7494. Note:    RM386 traps this function on the initial transition to protected
  7495.       mode caused by the INT instruction, which means it can not be
  7496.       overridden simply by hooking the interrupt
  7497. SeeAlso: AX=5DFDh
  7498. --------m-675DFF-----------------------------
  7499. INT 67 U - RM386 v6.00 - ???
  7500.     AX = 5DFFh
  7501.     ???
  7502. Return: ???
  7503. Note:    RM386 traps this function on the initial transition to protected
  7504.       mode caused by the INT instruction, which means it can not be
  7505.       overridden simply by hooking the interrupt
  7506. SeeAlso: AX=5DFDh,AX=5DFEh
  7507. --------m-675E00-----------------------------
  7508. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  7509.     AX = 5E00h
  7510.     DH = breakpoint number (0-3)
  7511.     DL = breakpoint attributes (used to set DR7)
  7512.     CX:BX = linear address of breakpoint
  7513. SeeAlso: AX=5D03h,AX=5E01h
  7514. --------m-675E01-----------------------------
  7515. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  7516.     AX = 5E01h
  7517.     BL = register number (0-3,7)
  7518. Return: CX:BX = value of specified DRx register
  7519. SeeAlso: AX=5E00h
  7520. --------m-675E02-----------------------------
  7521. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  7522.     AX = 5E02h
  7523.     CX:BX -> exception handler
  7524. Note:    the specified exception handler is called with a simulated interrupt
  7525.       whenever a debug exception occurs which was caused by a hardware
  7526.       breakpoint set with the debug registers
  7527. SeeAlso: AX=5E04h,AX=5E05h
  7528. --------m-675E03-----------------------------
  7529. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  7530.     AX = 5E03h
  7531.     BL = register map set number
  7532.     BH = new state (00h read-only, else read-write)
  7533.     CX = linear page number (linear address SHR 12)
  7534. Note:    setting write protection in map set 0 will cause the setting to become
  7535.       the default for newly-allocated map sets
  7536. --------m-675E04-----------------------------
  7537. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  7538.     AX = 5E04h
  7539. Return: BL = debug exception (low byte of DR6 register)
  7540. SeeAlso: AX=5E02h,AX=5E05h
  7541. --------m-675E05-----------------------------
  7542. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  7543.     AX = 5E05h
  7544. Note:    may be required when using AX=5E02h for handling instruction
  7545.       breakpoints
  7546. SeeAlso: AX=5E02h,AX=5E04h
  7547. --------m-6760-------------------------------
  7548. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  7549.     AH = 60h
  7550.     ES:DI -> buffer
  7551. Return: AH = status (see also AH=40h)
  7552.     AL = number of entries
  7553.     buffer at ES:DI filled
  7554. --------m-6761-------------------------------
  7555. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  7556.     AH = 61h
  7557.     ???
  7558. Return: ???
  7559. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  7560.       ensuring that the cache accurately reflects what the processor would
  7561.       see without the cache.
  7562. --------m-6768-------------------------------
  7563. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  7564.     AH = 68h
  7565.     ES:DI -> buffer
  7566. Return: AH = status (see also AH=40h)
  7567.     AL = number of entries
  7568.     buffer at ES:DI filled
  7569. Note:    equivalent to LIM 4.0 function 58h
  7570. --------m-6769-------------------------------
  7571. INT 67 - EEMS - MAP PAGE INTO FRAME
  7572.     AH = 69h
  7573.     AL = frame number
  7574.     BX = page number
  7575.     DX = handle
  7576. Return: AH = status (see also AH=40h)
  7577. Note:    similar to EMS function 44h
  7578. SeeAlso: AH=44h,AH=50h,AH=6Ah
  7579. --------m-676A-------------------------------
  7580. INT 67 - EEMS - PAGE MAPPING
  7581.     AH = 6Ah
  7582.     AL = subfunction
  7583.         00h save partial page map
  7584.         CH = first page frame
  7585.         CL = number of frames
  7586.         ES:DI -> buffer which is to be filled
  7587.         01h restore partial page map
  7588.         CH = first page frame
  7589.         CL = number of frames
  7590.         DI:SI -> previously saved page map
  7591.         02h save and restore partial page map
  7592.         CH = first page frame
  7593.         CL = number of frames
  7594.         ES:DI = buffer for current page map
  7595.         DI:SI = new page map
  7596.         03h get size of save array
  7597.         CH = first page frame
  7598.         CL = number of frames
  7599.         Return: AL = size of array in bytes
  7600.         04h switch to standard map register setting
  7601.         05h switch to alternate map register setting
  7602.         06h deallocate pages mapped to frames in conventional memory
  7603.         CH = first page frame
  7604.         CL = number of frames
  7605. Return: AH = status (see #1891)
  7606. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  7607.       specified
  7608. SeeAlso: AH=69h
  7609. --------m-676B-------------------------------
  7610. INT 67 - DESQview 2.42-2.53 - BUG
  7611.     AH = 6Bh
  7612. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  7613.       function due to a fencepost error
  7614. --------m-67DD-------------------------------
  7615. INT 67 - Quadtel QMAPS - API
  7616.     AH = DDh
  7617.     AL = function
  7618.     ???
  7619. Return: ???
  7620. Notes:    details are not yet available
  7621.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  7622.       supports this API
  7623. SeeAlso: AH=3Fh,AX=FFA5h
  7624. --------E-67DE00-----------------------------
  7625. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  7626.     AX = DE00h
  7627. Return: AH = status
  7628.         00h VCPI is present
  7629.         BH = major version number
  7630.         BL = minor version number
  7631.         nonzero  VCPI not present
  7632. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  7633. SeeAlso: INT 2F/AX=1687h
  7634. --------E-67DE01-----------------------------
  7635. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  7636.     AX = DE01h
  7637.     ES:DI -> 4K page table buffer
  7638.     DS:SI -> three descriptor table entries in GDT
  7639.         first becomes code segment descriptor, other two for use by
  7640.           main control program
  7641. Return: AH = 00h successful
  7642.         DI -> first unused page table entry in buffer
  7643.         EBX -> protected mode entry point in code segment
  7644.     AH = nonzero  failed
  7645. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  7646.       AX=DE0Ch (in each case, all other registers as appropriate for
  7647.       the function)
  7648. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  7649.  
  7650. (Table 1907)
  7651. Call QEMM v6.03 protected mode entry point additionally with:
  7652.     AX = DF00h ???
  7653.         ???
  7654.         Return: ???
  7655.     AX = DF01h ???
  7656.         ???
  7657.         Return: ???
  7658. --------E-67DE02-----------------------------
  7659. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  7660.     AX = DE02h
  7661. Return: AH = 00h  successful
  7662.         EDX = physical address of highest 4K memory page
  7663.     AH nonzero: failed
  7664. SeeAlso: AH=3Fh
  7665. --------E-67DE03-----------------------------
  7666. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  7667.     AX = DE03h
  7668. Return: AH = 00h  successful
  7669.         EDX = number of free 4K pages
  7670.     AH nonzero: failed
  7671. Notes:    returns total number of pages available to ALL tasks in system
  7672.     also available in protected mode by calling the protected-mode VCPI
  7673.       entry point (see AX=DE01h,#1907)
  7674. SeeAlso: AX=DE04h
  7675. --------E-67DE04-----------------------------
  7676. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  7677.     AX = DE04h
  7678. Return: AH = 00h successful
  7679.         EDX = physical address of allocated page
  7680.     AH nonzero: failed
  7681. Notes:    the client program is responsible for freeing all memory allocated
  7682.       with this call before terminating
  7683.     also available in protected mode by calling the protected-mode VCPI
  7684.       entry point (see AX=DE01h,#1907)
  7685. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  7686. --------E-67DE05-----------------------------
  7687. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  7688.     AX = DE05h
  7689.     EDX = physical address of 4K page
  7690. Return: AH = status
  7691.         00h successful
  7692.         nonzero failed
  7693. Note:    also available in protected mode by calling the protected-mode VCPI
  7694.       entry point (see AX=DE01h,#1907)
  7695. SeeAlso: AH=3Fh,AX=DE04h
  7696. --------E-67DE06-----------------------------
  7697. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  7698.     AX = DE06h
  7699.     CX = page number (linear address shifted right 12 bits)
  7700. Return: AH = status
  7701.         00h successful
  7702.         EDX = physical address of page
  7703.         nonzero invalid page number (AH = 8Bh recommended)
  7704. SeeAlso: AX=5BE0h
  7705. --------E-67DE07-----------------------------
  7706. INT 67 - Virtual Control Program Interface - READ CR0
  7707.     AX = DE07h
  7708. Return: AH = 00h
  7709.     EBX = value of Control Register 0
  7710. SeeAlso: AH=3Fh,AX=DE07h
  7711. --------E-67DE08-----------------------------
  7712. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  7713.     AX = DE08h
  7714.     ES:DI -> array of 8 DWORDs
  7715. Return: AH = 00h
  7716.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  7717. SeeAlso: AH=3Fh,AX=DE09h
  7718. --------E-67DE09-----------------------------
  7719. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  7720.     AX = DE09h
  7721.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  7722. Return: AH = 00h
  7723. Note:    values for DR4 and DR5 ignored
  7724. SeeAlso: AH=3Fh,AX=DE08h
  7725. --------E-67DE0A-----------------------------
  7726. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  7727.     AX = DE0Ah
  7728. Return: AH = 00h successful
  7729.         BX = first vector used by master 8259 (IRQ0)
  7730.         CX = first vector used by slave 8259 (IRQ8)
  7731.     AH nonzero: failed
  7732. Note:    CX is undefined in systems without a slave 8259
  7733. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  7734. --------E-67DE0B-----------------------------
  7735. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  7736.     AX = DE0Bh
  7737.     BX = first vector used by master 8259
  7738.     CX = first vector used by slave 8259
  7739.     interrupts disabled
  7740. Return: AH = 00h successful
  7741.     AH nonzero: failed
  7742. Notes:    This call merely informs the server that the client has changed the
  7743.       interrupt mappings.  The client may not change the mappings if they
  7744.       have already been changed by the server or another client, and is
  7745.       responsible for restoring the original mappings before terminating.
  7746. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  7747. --------E-67DE0C-----------------------------
  7748. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  7749.     AX = DE0Ch
  7750.     ESI = linear address in first megabyte of values for system registers
  7751.     interrupts disabled
  7752. Return: interrupts disabled
  7753.     GDTR, IDTR, LDTR, TR loaded
  7754.     SS:ESP must have at least 16 bytes space, and the entry point is
  7755.           required to set up a new stack before enabling interrupts
  7756.     EAX, ESI, DS, ES, FS, GS destroyed
  7757. Note:    in protected mode, calling the protected-mode VCPI entry point with
  7758.       AX = DE0Ch
  7759.       DS = segment selector mapping entire linear address space obtained
  7760.           via AX=DE01h
  7761.       SS:ESP in first megabyte of linear memory
  7762.       STACK:QWORD  return address from FAR call to 32-bit segment
  7763.         DWORD  EIP
  7764.         DWORD  CS
  7765.         DWORD  reserved for EFLAGS
  7766.         DWORD  ESP
  7767.         DWORD  SS
  7768.         DWORD  ES
  7769.         DWORD  DS
  7770.         DWORD  FS
  7771.         DWORD  GS
  7772.       and interrupts disabled, will switch to virtual86 mode with
  7773.         interrupts disabled, all segment registers loaded, and EAX
  7774.         destroyed.
  7775. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  7776.  
  7777. Format of system register values for switch to protected mode:
  7778. Offset    Size    Description    (Table 1908)
  7779.  00h    DWORD    value for CR3
  7780.  04h    DWORD    linear address in first megabyte of value for GDTR
  7781.  08h    DWORD    linear address in first megabyte of value for IDTR
  7782.  0Ch    WORD    value for LDTR
  7783.  0Eh    WORD    value for TR
  7784.  10h    PWORD    CS:EIP of protected mode entry-point
  7785. --------m-67DE0F-----------------------------
  7786. INT 67 - Netroom3 - ???
  7787.     AX = DE0Fh
  7788.     ???
  7789. Return: ???
  7790. Note:    called by Netroom's DPMI.EXE
  7791. --------m-67EF-------------------------------
  7792. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  7793.     AH = EFh
  7794.     AL = function (00h-12h,80h-8Fh)
  7795.     other register as appropriate for XMS function
  7796. Return: varies by function (see INT 2F/AX=4310h)
  7797. Note:    these functions appear to be equivalent to the XMS functions with the
  7798.       same numbers
  7799. SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h
  7800. --------m-67FFA5-----------------------------
  7801. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  7802.     AX = FFA5h
  7803. Return: AX = 845Ah/84A5h if loaded
  7804.         BX:CX -> API entry point
  7805. Notes:    this call is available even if EMM386 is not providing EMS
  7806.     the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
  7807.     if no other program has hooked INT 67, an alternate installation
  7808.       check is to test for the string
  7809.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  7810.       handler's segment; the word immediately preceding this string
  7811.       contains the offset of the API entry point
  7812. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  7813.  
  7814. (Table 1909)
  7815. Call EMM386.EXE API entry point with:
  7816.     AH = 00h get memory manager's status
  7817.         Return: AH = status
  7818.             bit 0: not active (OFF)
  7819.             bit 1: in "Auto" mode
  7820.     AH = 01h set memory manager's state
  7821.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  7822.     AH = 02h Weitek coprocessor support
  7823.         AL = subfunction
  7824.         00h get Weitek support state
  7825.             Return: AL = status
  7826.                 bit 0: Weitek coprocessor is present
  7827.                 bit 1: Weitek support is enabled
  7828.         01h turn on Weitek support
  7829.         02h turn off Weitek support
  7830.      --- v4.20-4.41 only ---
  7831.     AH = 03h Windows support???
  7832.         AL = subfunction (00h, 01h)
  7833.     AH = 04h print copyright notice to standard output
  7834.          (using INT 21/AH=09h)
  7835.     AH = 05h print available report
  7836.          (the one shown when running EMM386 from the DOS prompt)
  7837. SeeAlso: #0621 at INT 21/AX=4402h/SF=02h,#1256 at INT 2F/AX=12FFh/BX=0106h
  7838. --------m-67FFA5BX4345-----------------------
  7839. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  7840.     AX = FFA5h
  7841.     BX = 4345h ("CE")
  7842.     DX = subfunction
  7843.         0000h unshadow video ROM???
  7844.         0001h shadow video ROM???
  7845.         0002h map pages
  7846.         CX = number of pages (00h=one)
  7847.         ESI = linear address of first page to map into address space
  7848.         EDI = linear starting address at which pages are to be visible
  7849.         0003h get ???
  7850.         Return: DX = ??? (0-2)
  7851.         0004h BUG: crashes system due to fencepost error
  7852. Return: AH = 84h
  7853.     AL = status (84h = error, FFh = success)
  7854. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  7855.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  7856. SeeAlso: AX=FFA5h"EMM386",#0621 at INT 21/AX=4402h/SF=02h,#1909
  7857. --------I-68---------------------------------
  7858. INT 68 - Sangoma CCPOP 3270 resident module
  7859. SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
  7860. --------N-68---------------------------------
  7861. INT 68 - Novell NetWare LU6.2
  7862. Note:    the installation check consists of testing for the signature string
  7863.       "APPC/PC" nine bytes before the interrupt handler
  7864. SeeAlso: AH=01h/SF=1B00h,AH=FAh
  7865. --------N-6801--SF1B00-----------------------
  7866. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
  7867.     AH = 01h subfn 1B00h
  7868.     DS:DX -> control block (see #1910)
  7869. Return: control block updated
  7870. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"
  7871.  
  7872. Format of APPC/PC "DISPLAY" control block:
  7873. Offset    Size    Description    (Table 1910)
  7874.  00h 12 BYTEs    reserved
  7875.  0Ch    WORD    1B00h (verb "DISPLAY")
  7876.  0Eh  6 BYTEs    00h
  7877.  14h    DWORD    (big-endian) return code (see #1911)
  7878.  18h    WORD    00h
  7879.  1Ah  8 BYTEs    (big-endian) logical unit ID
  7880.  22h  8 BYTEs    (big-endian) partner logical unit name
  7881.  2Ah  8 BYTEs    (big-endian) mode name
  7882.  32h    BYTE    logical unit session limit
  7883.  33h    BYTE    partner logical unit session limit
  7884.  34h    BYTE    node maximum negotiable session limit
  7885.  35h    BYTE    current session limit
  7886.  36h    BYTE    minimum negotiated winner limit
  7887.  37h    BYTE    maximum negotiated loser limit
  7888.  38h    BYTE    active session count
  7889.  39h    BYTE    active CONWINNER session count
  7890.  3Ah    BYTE    active CONLOSER session count
  7891.  3Bh    BYTE    session termination count
  7892.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  7893.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  7894.  
  7895. (Table 1911)
  7896. Values for APPC/PC return code:
  7897.  0000h    successful
  7898.  0001h    BAD_TP_ID
  7899.  0002h    BAD_CONV_ID
  7900.  0003h    bad logical unit ID
  7901.  0008h    no physical unit attached
  7902.  0110h    bad state
  7903.  01B1h    BAD_PART_LUNAME
  7904.  01B2h    bad mode name
  7905.  0201h    physical unit already active
  7906.  0211h    logical unit already active
  7907.  0212h    BAD_PART_SESS
  7908.  0213h    BAD_RU_SIZES
  7909.  0214h    BAD_MODE_SESS
  7910.  0216h    BAD_PACING_CNT
  7911.  0219h    EXTREME_RUS
  7912.  021Ah    SNASVCMG_1
  7913.  0223h    SSCP_CONNECTED_LU
  7914.  0230h    invalid change
  7915.  0243h    too many TPs
  7916.  0272h    adapter close failure
  7917.  0281h    GET_ALLOC_BAD_TYPE
  7918.  0282h    unsuccessful
  7919.  0283h    DLC failure
  7920.  0284h    unrecognized DLC
  7921.  0286h    duplicate DLC
  7922.  0301h    SSCP_PU_SESSION_NOT_ACTIVE
  7923.  0302h    data exceeds RU size
  7924.  0401h    invalid direction
  7925.  0402h    invalid type
  7926.  0403h    segment overlap
  7927.  0404h    invalid first character
  7928.  0405h    table error
  7929.  0406h    conversion error
  7930.  F0010000h    APPC disabled
  7931.  F0020000h    APPC busy
  7932.  F0030000h    APPC abended
  7933.  F0040000h    incomplete
  7934. --------N-6801--SF2000-----------------------
  7935. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
  7936.     AH = 01h subfn 2000h
  7937.     DS:DX -> control block (see #1912)
  7938. Return: control block updated
  7939. SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
  7940.  
  7941. Format of APPC/PC "Attach Physical Unit" control block:
  7942. Offset    Size    Description    (Table 1912)
  7943.  00h 12 BYTEs    reserved
  7944.  0Ch    WORD    2000h (verb "Attach Physical Unit")
  7945.  0Eh  6 BYTEs    00h
  7946.  14h    DWORD    (big-endian) return code (see #1911)
  7947.  18h    WORD    00h
  7948.  1Ah    BYTE    version
  7949.  1Bh    BYTE    release
  7950.  1Ch  8 BYTEs    (big-endian) net name
  7951.  24h  8 BYTEs    (big-endian) physical unit name
  7952.  2Ch  8 BYTEs    00h
  7953.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  7954.         (see also AH=01h/SF=2100h)
  7955.  38h    DWORD    00h
  7956.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  7957.         01h RETURN_CONTROL: INCOMPLETE
  7958. --------N-6801--SF2100-----------------------
  7959. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
  7960.     AH = 01h subfn 2100h
  7961.     DS:DX -> control block (see #1913)
  7962. Return: control block updated
  7963. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
  7964.  
  7965. Format of APPC/PC "Attach Logical Unit" control block:
  7966. Offset    Size    Description    (Table 1913)
  7967.  00h 12 BYTEs    reserved
  7968.  0Ch    WORD    2100h (verb "Attach Logical Unit")
  7969.  0Eh  6 BYTEs    00h
  7970.  14h    DWORD    (big-endian) return code (see #1911)
  7971.  18h    WORD    70  offset to partner logical unit record
  7972.  1Ah  8 BYTEs    (big-endian) logical unit name
  7973.  22h  8 BYTEs    (big-endian) logical unit ID
  7974.  2Ah    BYTE    logical unit local address
  7975.  2Bh    BYTE    logical unit session limit
  7976.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  7977.         FFFFFFFFh = reject incoming ALLOCATEs
  7978.         00000000h = queue ALLOCATEs
  7979.  30h    DWORD    00h
  7980.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  7981.  38h    DWORD    00h
  7982.  3Ch    BYTE    maximum TPs
  7983.  3Dh    BYTE    queue depth
  7984.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  7985.  42h    DWORD    00h
  7986.  46h    WORD    total length of partner records
  7987.  48h    var    array of partner logical unit records (see #1914)
  7988.  
  7989. Format of APPC/PC partner logical unit record:
  7990. Offset    Size    Description    (Table 1914)
  7991.  00h    WORD    length of this partner logical unit record
  7992.  02h    WORD    42  offset to mode records
  7993.  04h  8 BYTEs    (big-endian) partner logical unit name
  7994.  0Ch    BYTE    partner logical unit security capabilities
  7995.         bit 7: already verified
  7996.         bit 6: conversation level security
  7997.         bit 5: session level security
  7998.  0Dh    BYTE    partner logical unit session limit
  7999.  0Eh    WORD    partner logical unit maximum MC_SEND_LL
  8000.  10h  8 BYTEs    (big-endian) partner logical unit DLC name
  8001.  18h    BYTE    partner logical unit adapter number
  8002.  19h 17 BYTEs    (counted string) partner logical unit adapter address
  8003.  2Ah    WORD    total length of mode records
  8004.  2Ch 16N BYTEs    array of mode records (see #1915)
  8005.  
  8006. Format of mode record:
  8007. Offset    Size    Description    (Table 1915)
  8008.  00h    WORD    16  length of this mode record
  8009.  02h  8 BYTEs    (big-endian) mode name
  8010.  0Ah    WORD    RU_SIZE high bound
  8011.  0Ch    WORD    RU_SIZE low bound
  8012.  0Eh    BYTE    mode maximum negotiable session limit
  8013.  0Fh    BYTE    pacing size for receive
  8014.  
  8015. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  8016. pointers are called by pushing the DWORD pointer to the verb on the stack and
  8017. then performing a FAR call.
  8018.  
  8019. Format of ACCESS_LU_LU_PW verb:
  8020. Offset    Size    Description    (Table 1916)
  8021.  00h 12 BYTEs    reserved
  8022.  0Ch    WORD    1900h (verb "ACCESS_LU_LU_PW")
  8023.  0Eh  8 BYTEs    (big-endian) logical unit ID
  8024.  16h  8 BYTEs    (big-endian) logical unit name
  8025.  1Eh  8 BYTEs    (big-endian) partner logical unit name
  8026.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  8027.  37h    BYTE    password available (0=no, 1=yes)
  8028.  38h  8 BYTEs    password
  8029.  
  8030. Format of CREATE_TP verb:
  8031. Offset    Size    Description    (Table 1917)
  8032.  00h 12 BYTEs    reserved
  8033.  0Ch    WORD    2300h (verb "CREATE_TP")
  8034.  0Eh  6 BYTEs    00h
  8035.  14h    DWORD    (big-endian) sense code (see #1918)
  8036.  18h  8 BYTEs    (big-endian) TP ID
  8037.  20h  8 BYTEs    (big-endian) logical unit ID
  8038.  28h    DWORD    (big-endian) conversation ID
  8039.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  8040.  2Dh    BYTE    0 no sync level, 1 confirm
  8041.  2Eh    BYTE    reserved
  8042.  2Fh 65 BYTEs    (counted string) transaction program name
  8043.  70h  6 BYTEs    00h
  8044.  76h    WORD    length of ERROR_LOG_DATA to return
  8045.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  8046.  7Ch  8 BYTEs    (big-endian) partner logical unit name
  8047.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  8048.  96h  8 BYTEs    (big-endian) mode name
  8049.  9Eh 12 BYTEs    00h
  8050.  AAh 11 BYTEs    (counted string) password
  8051.  B5h 11 BYTEs    (counted string) user ID
  8052.  C0h    BYTE    0 verification should be performed
  8053.         1 already verified
  8054.  
  8055. (Table 1918)
  8056. Values for APPC/PC sense code:
  8057.  00000000h    Ok
  8058.  080F6051h    SECURITY_NOT_VALID
  8059.  084B6031h    TP_NOT_AVAIL_RETRY
  8060.  084C0000h    TP_NOT_AVAIL_NO_RETRY
  8061.  10086021h    TP_NAME_NOT_RECOGNIZED
  8062.  10086034h    CONVERSATION_TYPE_MISMATCH
  8063.  10086041h    SYNC_LEVEL_NOT_SUPPORTED
  8064.  
  8065. Format of SYSLOG verb:
  8066. Offset    Size    Description    (Table 1919)
  8067.  00h 12 BYTEs    reserved
  8068.  0Ch    WORD    2600h (verb "SYSLOG")
  8069.  0Eh 10 BYTEs    00h
  8070.  18h    WORD    (big-endian) type
  8071.  1Ah    DWORD    (big-endian) subtype
  8072.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  8073.  22h    DWORD    (big-endian) conversation ID
  8074.  26h  8 BYTEs    (big-endian) TP ID
  8075.  2Eh  8 BYTEs    (big-endian) physical unit or logical unit name
  8076.  36h    WORD    length of data
  8077.  38h    DWORD    pointer to data
  8078.  3Ch    BYTE    00h
  8079. --------N-6801--SF2200-----------------------
  8080. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
  8081.     AH = 01h subfn 2200h
  8082.     DS:DX -> control block (see #1920)
  8083. Return: control block updated
  8084. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
  8085.  
  8086. Format of APPC/PC "Detach Logical Unit" control block:
  8087. Offset    Size    Description    (Table 1920)
  8088.  00h 12 BYTEs    reserved
  8089.  0Ch    WORD    2200h (verb "Detach Logical Unit")
  8090.  0Eh  6 BYTEs    00h
  8091.  14h    DWORD    (big-endian) return code (see #1911)
  8092.  18h  8 BYTEs    (big-endian) logical unit ID
  8093.  20h    BYTE    00h
  8094. --------N-6801--SF2700-----------------------
  8095. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
  8096.     AH = 01h subfn 2700h
  8097.     DS:DX -> control block (see #1921)
  8098. Return: control block updated
  8099. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
  8100.  
  8101. Format of APPC/PC "Detach Physical Unit" control block:
  8102. Offset    Size    Description    (Table 1921)
  8103.  00h 12 BYTEs    reserved
  8104.  0Ch    WORD    2700h (verb "Detach Physical Unit")
  8105.  0Eh  6 BYTEs    00h
  8106.  14h    DWORD    (big-endian) return code (see #1911)
  8107.  18h    BYTE    00h  type: hard
  8108.         01h  type: soft
  8109. --------N-6801--SF2B00-----------------------
  8110. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
  8111.     AH = 01h subfn 2B00h
  8112.     DS:DX -> control block (see #1922)
  8113. Return: control block updated
  8114. SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
  8115.  
  8116. Format of APPC/PC "Activate DLC" control block:
  8117. Offset    Size    Description    (Table 1922)
  8118.  00h 12 BYTEs    reserved
  8119.  0Ch    WORD    2B00h (verb "Activate DLC")
  8120.  0Eh  6 BYTEs    00h
  8121.  14h    DWORD    (big-endian) return code (see #1911)
  8122.  18h  8 BYTEs    (big-endian) DLC name
  8123.  20h    BYTE    adapter number
  8124. --------N-6802--SF0100-----------------------
  8125. INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
  8126.     AH = 02h subfn 0100h
  8127.     DS:DX -> control block (see #1923)
  8128. Return: control block updated
  8129. SeeAlso: AH=02h/SF=0500h
  8130.  
  8131. Format of APPC/PC "Allocate" control block:
  8132. Offset    Size    Description    (Table 1923)
  8133.  00h 12 BYTEs    reserved
  8134.  0Ch    WORD    0100h (verb "Allocate" or "MC_Allocate")
  8135.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8136.         0 if basic verb
  8137.  0Fh  5 BYTEs    reserved (0)
  8138.  14h    WORD    (big-endian) primary return code (see #1924)
  8139.  16h    DWORD    (big-endian) error code (see #1925)
  8140.  1Ah  8 BYTEs    (big-endian) TP_ID
  8141.  22h    DWORD    (big-endian) conversation ID
  8142.  26h    BYTE    (MC_Allocate only) conversation type
  8143.         0 basic conversation
  8144.         1 mapped conversation
  8145.  27h    BYTE    SYNC_LEVEL (00h none, 01h confirm)
  8146.  28h    WORD    0000h
  8147.  2Ah    BYTE    RETURN_CONTROL
  8148.         00h when session allocated
  8149.         01h immediate
  8150.         02h when session free
  8151.  2Bh  8 BYTEs    00h
  8152.  33h  8 BYTEs    (big-endian) partner logical unit name
  8153.  3Bh  8 BYTEs    (big-endian) mode name
  8154.  43h 65 BYTEs    (counted string) TP name
  8155.  84h    BYTE    security (00h none, 01h same, 02h pgm)
  8156.  85h 11 BYTEs    00h
  8157.  90h 11 BYTEs    (counted string) password
  8158.  9Bh 11 BYTEs    (counted string) user ID
  8159.  A6h    WORD    PIP_DATA length
  8160.  A8h    DWORD    pointer to PIP_DATA
  8161.  
  8162. (Table 1924)
  8163. Values for APPC/PC primary return code:
  8164.  0000h    successful
  8165.  0001h    parameter check
  8166.  0002h    state check
  8167.  0003h    allocation error
  8168.  0005h    deallocate abended
  8169.  0006h    deallocate abended program
  8170.  0007h    deallocate abended SVC
  8171.  0008h    deallocate abended timer
  8172.  0009h    deallocate normal return
  8173.  000Ah    data posting blocked
  8174.  000Bh    posting not active
  8175.  000Ch    PROG_ERROR_NO_TRUNC
  8176.  000Dh    PROG_ERROR_TRUNC
  8177.  000Eh    PROG_ERROR_PURGING
  8178.  000Fh    CONV_FAILURE_RETRY
  8179.  0010h    CONV_FAILURE_NO_RETRY
  8180.  0011h    SVC_ERROR_NO_TRUNC
  8181.  0012h    SVC_ERROR_TRUNC
  8182.  0013h    SVC_ERROR_PURGING
  8183.  0014h    unsuccessful
  8184.  0018h    CNOS partner logical unit reject
  8185.  0019h    conversation type mixed
  8186.  F001h    APPC disabled
  8187.  F002h    APPC busy
  8188.  F003h    APPC abended
  8189.  F004h    incomplete
  8190.  
  8191. (Table 1925)
  8192. Values for APPC/PC error code:
  8193.  0001h    bad TP ID
  8194.  0002h    bad conversation ID
  8195.  0004h    allocation error, no retry
  8196.  0005h    allocation error, retry
  8197.  0006h    data area crosses segment boundary
  8198.  0010h    bad TPN length
  8199.  0011h    bad CONV length
  8200.  0012h    bad SYNC level
  8201.  0013h    bad security selection
  8202.  0014h    bad return control
  8203.  0015h    SEC_TOKENS too big
  8204.  0016h    PIP_LEN incorrect
  8205.  0017h    no use of SNASVCMG
  8206.  0018h    unknown partner mode
  8207.  0031h    confirm: SYNC_NONE
  8208.  0032h    confirm: bad state
  8209.  0033h    confirm: NOT_LL_BDY
  8210.  0041h    confirmed: bad state
  8211.  0051h    deallocate: bad type
  8212.  0052h    deallocate: flush bad state
  8213.  0053h    deallocate: confirm bad state
  8214.  0055h    deallocate: NOT_LL_BDY
  8215.  0057h    deallocate: log LL_WRONG
  8216.  0061h    flush: not send state
  8217.  0091h    post on receipt: invalid length
  8218.  0092h    post on receipt: not in receive state
  8219.  0093h    post on receipt: bad fill
  8220.  00A1h    prepare to receive:invalid type
  8221.  00A2h    prepare to receive: unfinished LL
  8222.  00A3h    prepare to receive: not in send state
  8223.  00B1h    receive and wait: bad state
  8224.  00B2h    receive and wait: NOT_LL_BDY
  8225.  00B5h    receive and wait: bad fill
  8226.  00C1h    receive immediate: not in receive state
  8227.  00C4h    receive immediate: bad fill
  8228.  00E1h    request to send: not in receive state
  8229.  00F1h    send data: bad LL
  8230.  00F2h    send data: not in send state
  8231.  0102h    send error: log LL wrong
  8232.  0103h    send error: bad type
  8233.  0121h    test: invalid type
  8234.  0122h    test: not in receive state
  8235. --------N-6802--SF0300-----------------------
  8236. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
  8237.     AH = 02h subfn 0300h
  8238.     DS:DX -> control block (see #1926)
  8239. Return: control block updated
  8240. SeeAlso: AH=02h/SF=0400h
  8241.  
  8242. Format of APPC/PC "Confirm" control block:
  8243. Offset    Size    Description    (Table 1926)
  8244.  00h 12 BYTEs    reserved
  8245.  0Ch    WORD    0300h (verb "Confirm" or "MC_Confirm")
  8246.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8247.         0 if basic verb
  8248.  0Fh  5 BYTEs    reserved (0)
  8249.  14h    WORD    (big-endian) primary return code (see #1924)
  8250.  16h    DWORD    (big-endian) error code (see #1925)
  8251.  1Ah  8 BYTEs    (big-endian) TP_ID
  8252.  22h    DWORD    (big-endian) conversation ID
  8253.  26h    BYTE    request to send received (0=no, 1=yes)
  8254. --------N-6802--SF0400-----------------------
  8255. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
  8256.     AH = 02h subfn 0400h
  8257.     DS:DX -> control block (see #1927)
  8258. Return: control block updated
  8259. SeeAlso: AH=02h/SF=0300h
  8260.  
  8261. Format of APPC/PC "Confirmed" control block:
  8262. Offset    Size    Description    (Table 1927)
  8263.  00h 12 BYTEs    reserved
  8264.  0Ch    WORD    0400h (verb "Confirmed" or "MC_Confirmed")
  8265.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8266.         0 if basic verb
  8267.  0Fh  5 BYTEs    reserved (0)
  8268.  14h    WORD    (big-endian) primary return code (see #1924)
  8269.  16h    DWORD    (big-endian) error code (see #1925)
  8270.  1Ah  8 BYTEs    (big-endian) TP_ID
  8271.  22h    DWORD    (big-endian) conversation ID
  8272. --------N-6802--SF0500-----------------------
  8273. INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
  8274.     AH = 02h subfn 0500h
  8275.     DS:DX -> control block (see #1928)
  8276. Return: control block updated
  8277. SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
  8278.  
  8279. Format of APPC/PC "Deallocate" control block:
  8280. Offset    Size    Description    (Table 1928)
  8281.  00h 12 BYTEs    reserved
  8282.  0Ch    WORD    0500h (verb "Deallocate" or "MC_Deallocate")
  8283.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8284.         0 if basic verb
  8285.  0Fh  5 BYTEs    reserved (0)
  8286.  14h    WORD    (big-endian) primary return code (see #1924)
  8287.  16h    DWORD    (big-endian) error code (see #1925)
  8288.  1Ah  8 BYTEs    (big-endian) TP_ID
  8289.  22h    DWORD    (big-endian) conversation ID
  8290.  26h    BYTE    00h
  8291.  27h    BYTE    type
  8292.         00h SYNC_LEVEL
  8293.         01h FLUSH
  8294.         02h ABEND_PROC
  8295.         03h ABEND_SVC
  8296.         04h ABEND_TIMER
  8297.         05h ABEND
  8298.  28h    WORD    (MC_Deallocate only) length of error log data
  8299.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  8300. --------N-6802--SF0600-----------------------
  8301. INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
  8302.     AH = 02h subfn 0600h
  8303.     DS:DX -> control block (see #1929)
  8304. Return: control block updated
  8305. SeeAlso: AH=02h/SF=0300h
  8306.  
  8307. Format of APPC/PC "Flush" control block:
  8308. Offset    Size    Description    (Table 1929)
  8309.  00h 12 BYTEs    reserved
  8310.  0Ch    WORD    0600h (verb "Flush" or "MC_Flush")
  8311.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8312.         0 if basic verb
  8313.  0Fh  5 BYTEs    reserved (0)
  8314.  14h    WORD    (big-endian) primary return code (see #1924)
  8315.  16h    DWORD    (big-endian) error code (see #1925)
  8316.  1Ah  8 BYTEs    (big-endian) TP_ID
  8317.  22h    DWORD    (big-endian) conversation ID
  8318. --------N-6802--SF0700-----------------------
  8319. INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
  8320.     AH = 02h subfn 0700h
  8321.     DS:DX -> control block (see #1930)
  8322. Return: control block updated
  8323. SeeAlso: AH=02h/SF=0300h
  8324.  
  8325. Format of APPC/PC "Get_Attributes" control block:
  8326. Offset    Size    Description    (Table 1930)
  8327.  00h 12 BYTEs    reserved
  8328.  0Ch    WORD    0700h (verb "Get_Attributes" or "MC_Get_Attributes")
  8329.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8330.         0 if basic verb
  8331.  0Fh  5 BYTEs    reserved (0)
  8332.  14h    WORD    (big-endian) primary return code (see #1924)
  8333.  16h    DWORD    (big-endian) error code (see #1925)
  8334.  1Ah  8 BYTEs    (big-endian) TP_ID
  8335.  22h    DWORD    (big-endian) conversation ID
  8336.  26h  8 BYTEs    (big-endian) logical unit ID
  8337.  2Eh    BYTE    00h
  8338.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  8339.  30h  8 BYTEs    (big-endian) mode name
  8340.  38h  8 BYTEs    (big-endian) own net name
  8341.  40h  8 BYTEs    (big-endian) own logical unit name
  8342.  48h  8 BYTEs    (big-endian) partner logical unit name
  8343.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  8344.  62h    BYTE    00h
  8345.  63h 11 BYTEs    (counted string) user ID
  8346. --------N-6802--SF0800-----------------------
  8347. INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
  8348.     AH = 02h subfn 0800h
  8349.     DS:DX -> control block (see #1931)
  8350. Return: control block updated
  8351. SeeAlso: AH=02h/SF=0300h
  8352.  
  8353. Format of APPC/PC "Get_Type" control block:
  8354. Offset    Size    Description    (Table 1931)
  8355.  00h 12 BYTEs    reserved
  8356.  0Ch    WORD    0800h (verb "Get_Type")
  8357.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8358.         0 if basic verb
  8359.  0Fh  5 BYTEs    reserved (0)
  8360.  14h    WORD    (big-endian) primary return code (see #1924)
  8361.  16h    DWORD    (big-endian) error code (see #1925)
  8362.  1Ah  8 BYTEs    (big-endian) TP_ID
  8363.  22h    DWORD    (big-endian) conversation ID
  8364.  26h    BYTE    (return) type (0=basic conversation, 1=mapped conversation)
  8365. --------N-6802--SF0900-----------------------
  8366. INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
  8367.     AH = 02h subfn 0900h
  8368.     DS:DX -> control block (see #1932)
  8369. Return: control block updated
  8370. SeeAlso: AH=02h/SF=0A00h
  8371.  
  8372. Format of APPC/PC "Post_on_Receipt" control block:
  8373. Offset    Size    Description    (Table 1932)
  8374.  00h 12 BYTEs    reserved
  8375.  0Ch    WORD    0900h (verb "Post_on_Receipt")
  8376.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8377.         0 if basic verb
  8378.  0Fh  5 BYTEs    reserved (0)
  8379.  14h    WORD    (big-endian) primary return code (see #1924)
  8380.  16h    DWORD    (big-endian) error code (see #1925)
  8381.  1Ah  8 BYTEs    (big-endian) TP_ID
  8382.  22h    DWORD    (big-endian) conversation ID
  8383.  26h    WORD    maximum length
  8384.  28h    BYTE    fill (0=buffer, 1=LL)
  8385. --------N-6802--SF0A00-----------------------
  8386. INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
  8387.     AH = 02h subfn 0A00h
  8388.     DS:DX -> control block (see #1933)
  8389. Return: control block updated
  8390. SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
  8391.  
  8392. Format of APPC/PC "Prepare_to_Receive" control block:
  8393. Offset    Size    Description    (Table 1933)
  8394.  00h 12 BYTEs    reserved
  8395.  0Ch    WORD    0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
  8396.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8397.         0 if basic verb
  8398.  0Fh  5 BYTEs    reserved (0)
  8399.  14h    WORD    (big-endian) primary return code (see #1924)
  8400.  16h    DWORD    (big-endian) error code (see #1925)
  8401.  1Ah  8 BYTEs    (big-endian) TP_ID
  8402.  22h    DWORD    (big-endian) conversation ID
  8403.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  8404.  27h    BYTE    locks (0=short, 1=long)
  8405. --------N-6802--SF0B00-----------------------
  8406. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
  8407.     AH = 02h subfn 0B00h
  8408.     DS:DX -> control block (see #1934)
  8409. Return: control block updated
  8410. SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
  8411.  
  8412. Format of APPC/PC "Receive_and_Wait" control block:
  8413. Offset    Size    Description    (Table 1934)
  8414.  00h 12 BYTEs    reserved
  8415.  0Ch    WORD    0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
  8416.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8417.         0 if basic verb
  8418.  0Fh  5 BYTEs    reserved (0)
  8419.  14h    WORD    (big-endian) primary return code (see #1924)
  8420.  16h    DWORD    (big-endian) error code (see #1925)
  8421.  1Ah  8 BYTEs    (big-endian) TP_ID
  8422.  22h    DWORD    (big-endian) conversation ID
  8423.  26h    BYTE    type of information received (see #1935)
  8424.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  8425.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  8426.  29h    WORD    maximum length
  8427.  2Bh    WORD    data length
  8428.  2Dh    DWORD    pointer to data
  8429.  
  8430. (Table 1935)
  8431. Values for type of information received:
  8432.  00h    data
  8433.  01h    data complete
  8434.  02h    data incomplete
  8435.  03h    confirm
  8436.  04h    confirm send
  8437.  05h    confirm deallocate
  8438.  06h    send
  8439. --------N-6802--SF0C00-----------------------
  8440. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
  8441.     AH = 02h subfn 0C00h
  8442.     DS:DX -> control block (see #1936)
  8443. Return: control block updated
  8444. SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
  8445.  
  8446. Format of APPC/PC "Receive_Immediate" control block:
  8447. Offset    Size    Description    (Table 1936)
  8448.  00h 12 BYTEs    reserved
  8449.  0Ch    WORD    0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
  8450.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8451.         0 if basic verb
  8452.  0Fh  5 BYTEs    reserved (0)
  8453.  14h    WORD    (big-endian) primary return code (see #1924)
  8454.  16h    DWORD    (big-endian) error code (see #1925)
  8455.  1Ah  8 BYTEs    (big-endian) TP_ID
  8456.  22h    DWORD    (big-endian) conversation ID
  8457.  26h    BYTE    type of information received (see #1935)
  8458.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  8459.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  8460.  29h    WORD    maximum length
  8461.  2Bh    WORD    data length
  8462.  2Dh    DWORD    pointer to data
  8463. --------N-6802--SF0E00-----------------------
  8464. INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
  8465.     AH = 02h subfn 0E00h
  8466.     DS:DX -> control block (see #1937)
  8467. Return: control block updated
  8468. SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
  8469.  
  8470. Format of APPC/PC "Request_to_Send" control block:
  8471. Offset    Size    Description    (Table 1937)
  8472.  00h 12 BYTEs    reserved
  8473.  0Ch    WORD    0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
  8474.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8475.         0 if basic verb
  8476.  0Fh  5 BYTEs    reserved (0)
  8477.  14h    WORD    (big-endian) primary return code (see #1924)
  8478.  16h    DWORD    (big-endian) error code (see #1925)
  8479.  1Ah  8 BYTEs    (big-endian) TP_ID
  8480.  22h    DWORD    (big-endian) conversation ID
  8481. --------N-6802--SF0F00-----------------------
  8482. INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
  8483.     AH = 02h subfn 0F00h
  8484.     DS:DX -> control block (see #1938)
  8485. Return: control block updated
  8486. SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
  8487.  
  8488. Format of APPC/PC "Send_Data" control block:
  8489. Offset    Size    Description    (Table 1938)
  8490.  00h 12 BYTEs    reserved
  8491.  0Ch    WORD    0F00h (verb "Send_Data" or "MC_Send_Data")
  8492.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8493.         0 if basic verb
  8494.  0Fh  5 BYTEs    reserved (0)
  8495.  14h    WORD    (big-endian) primary return code (see #1924)
  8496.  16h    DWORD    (big-endian) error code (see #1925)
  8497.  1Ah  8 BYTEs    (big-endian) TP_ID
  8498.  22h    DWORD    (big-endian) conversation ID
  8499.  26h    BYTE    request to send received (0=no, 1=yes)
  8500.  27h    BYTE    00h
  8501.  28h    WORD    data length
  8502.  2Ah    DWORD    pointer to data
  8503. --------N-6802--SF1000-----------------------
  8504. INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
  8505.     AH = 02h subfn 1000h
  8506.     DS:DX -> control block (see #1939)
  8507. Return: control block updated
  8508. SeeAlso: AH=02h/SF=0F00h
  8509.  
  8510. Format of APPC/PC "Send_Error" control block:
  8511. Offset    Size    Description    (Table 1939)
  8512.  00h 12 BYTEs    reserved
  8513.  0Ch    WORD    1000h (verb "Send_Error" or "MC_Send_Error")
  8514.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8515.         0 if basic verb
  8516.  0Fh  5 BYTEs    reserved (0)
  8517.  14h    WORD    (big-endian) primary return code (see #1924)
  8518.  16h    DWORD    (big-endian) error code (see #1925)
  8519.  1Ah  8 BYTEs    (big-endian) TP_ID
  8520.  22h    DWORD    (big-endian) conversation ID
  8521.  26h    BYTE    request to send received (0=no, 1=yes)
  8522.  27h    BYTE    type (0=program, 1=SVC)
  8523.  28h    DWORD    00h
  8524.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  8525.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  8526. --------N-6802--SF1200-----------------------
  8527. INT 68 - APPC/PC - CONNECTION CONTROL - TEST
  8528.     AH = 02h subfn 1200h
  8529.     DS:DX -> control block (see #1940)
  8530. Return: control block updated
  8531. SeeAlso: AH=02h/SF=1300h
  8532.  
  8533. Format of APPC/PC "Test" control block:
  8534. Offset    Size    Description    (Table 1940)
  8535.  00h 12 BYTEs    reserved
  8536.  0Ch    WORD    1200h (verb "Test" or "MC_Test")
  8537.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8538.         0 if basic verb
  8539.  0Fh  5 BYTEs    reserved (0)
  8540.  14h    WORD    (big-endian) primary return code (see #1924)
  8541.  16h    DWORD    (big-endian) error code (see #1925)
  8542.  1Ah  8 BYTEs    (big-endian) TP_ID
  8543.  22h    DWORD    (big-endian) conversation ID
  8544.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  8545. Note:    error code has different interpretations for:
  8546.     0 posted data
  8547.     1 posted not data (primary return code = 0)
  8548.     1 bad TP_ID (primary return code = 1)
  8549. --------N-6802--SF1300-----------------------
  8550. INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
  8551.     AH = 02h subfn 1300h
  8552.     DS:DX -> control block (see #1941)
  8553. Return: control block updated
  8554. SeeAlso: AH=02h/SF=1200h
  8555.  
  8556. Format of APPC/PC "Wait" control block:
  8557. Offset    Size    Description    (Table 1941)
  8558.  00h 12 BYTEs    reserved
  8559.  0Ch    WORD    1300h (verb "Wait")
  8560.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8561.         0 if basic verb
  8562.  0Fh  5 BYTEs    reserved (0)
  8563.  14h    WORD    (big-endian) primary return code (see #1924)
  8564.  16h    DWORD    (big-endian) error code (see #1925,#1940)
  8565.  1Ah  8 BYTEs    (big-endian) TP_ID
  8566.  22h    DWORD    (big-endian) conversation ID
  8567.  26h    BYTE    number of conversations to wait on
  8568.         Note: error codes have interpretations as for AH=02h/SF=1200h
  8569. --------N-6803--SF2400-----------------------
  8570. INT 68 - APPC/PC - TP STARTED
  8571.     AH = 03h subfn 2400h
  8572.     DS:DX -> control block (see #1942)
  8573. Return: control block updated
  8574.  
  8575. Format of APPC/PC "TP Started" control block:
  8576. Offset    Size    Description    (Table 1942)
  8577.  00h 12 BYTEs    reserved
  8578.  0Ch    WORD    2400h (verb "TP Started")
  8579.  0Eh  6 BYTEs    00h
  8580.  14h    DWORD    (big-endian) return code (see #1911)
  8581.  18h    WORD    00h
  8582.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8583.  22h  8 BYTEs    (big-endian) TP ID
  8584. --------N-6803--SF2800-----------------------
  8585. INT 68 - APPC/PC - GET ALLOCATE
  8586.     AH = 03h subfn 2800h
  8587.     DS:DX -> control block (see #1943)
  8588. Return: control block updated
  8589.  
  8590. Format of APPC/PC "Get ALLOCATE" control block:
  8591. Offset    Size    Description    (Table 1943)
  8592.  00h 12 BYTEs    reserved
  8593.  0Ch    WORD    2800h (verb "Get ALLOCATE")
  8594.  0Eh  6 BYTEs    00h
  8595.  14h    DWORD    (big-endian) return code (see #1911)
  8596.  18h    WORD    00h
  8597.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8598.  22h    BYTE    type (00h dequeue, 01h test)
  8599.  23h    DWORD    pointer to CREATE_TP record
  8600. --------N-6803--SF2A00-----------------------
  8601. INT 68 - APPC/PC - CHANGE LOGICAL UNIT
  8602.     AH = 03h subfn 2A00h
  8603.     DS:DX -> control block (see #1944)
  8604. Return: control block updated
  8605.  
  8606. Format of APPC/PC "Change Logical Unit" control block:
  8607. Offset    Size    Description    (Table 1944)
  8608.  00h 12 BYTEs    reserved
  8609.  0Ch    WORD    2A00h (verb "Change Logical Unit")
  8610.  0Eh  6 BYTEs    00h
  8611.  14h    DWORD    (big-endian) return code (see #1911)
  8612.  18h    WORD    00h
  8613.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8614.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  8615.         00000000h queue ALLOCATEs
  8616.         FFFFFFFFh reject incoming ALLOCATEs
  8617.  26h    DWORD    00000000h
  8618.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  8619.  2Eh    DWORD    00000000h
  8620.  32h    BYTE    maximum TPs
  8621.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  8622.         01h resume QUEUE_ALLOCATEs
  8623.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  8624.  38h    DWORD    00000000h
  8625. --------N-6804-------------------------------
  8626. INT 68 - APPC/PC - TRANSACTION PROCESSING
  8627.     AH = 04h
  8628.     DS:DX -> control block (see #1945)
  8629. Return: control block updated
  8630.  
  8631. Format of APPC/PC control block:
  8632. Offset    Size    Description    (Table 1945)
  8633.  00h 12 BYTEs    reserved
  8634.  0Ch    WORD    verb (action)
  8635.         2500h TP_ENDED
  8636.         2900h TP_VALID
  8637.  0Eh  6 BYTEs    00h
  8638.  14h    DWORD    (big-endian) return code (see #1911)
  8639.  18h    WORD    00h
  8640.  1Ah  8 BYTEs    (big-endian) TP_ID
  8641.  22h    DWORD    -> CREATE_TP record (only if verb = 2900h)
  8642. --------N-6805-------------------------------
  8643. INT 68 - APPC/PC - TRANSFER MESSAGE DATA
  8644.     AH = 05h
  8645.     DS:DX -> control block (see #1946)
  8646. Return: control block updated
  8647.  
  8648. Format of APPC/PC "Transfer Message Data" control block:
  8649. Offset    Size    Description    (Table 1946)
  8650.  00h 12 BYTEs    reserved
  8651.  0Ch    WORD    1C00h (verb "Transfer Message Data")
  8652.  0Eh    BYTE    data type
  8653.         00h user defined
  8654.         01h NMVT
  8655.         02h alert subvectors
  8656.         03h PDSTATS subvectors
  8657.  0Fh  5 BYTEs    00h
  8658.  14h    DWORD    (big-endian) return code (see #1911)
  8659.  18h 12 BYTEs    00h
  8660.  24h    BYTE    flags
  8661.         bit 0: don't add correlation subvector
  8662.         bit 1: don't add product set ID subvector
  8663.         bit 2: don't do SYSLOG
  8664.         bit 3: don't send SSCP_PU_SESSION
  8665.  25h    BYTE    00h
  8666.  26h    WORD    length of data
  8667.  28h  N BYTEs    data
  8668. --------N-6806-------------------------------
  8669. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  8670.     AH = 06h
  8671.     DS:DX -> control block (see #1947)
  8672. Return: control block updated
  8673.  
  8674. Format of APPC/PC "Change Number of Sessions" control block:
  8675. Offset    Size    Description    (Table 1947)
  8676.  00h 12 BYTEs    reserved
  8677.  0Ch    WORD    1500h (verb "Change Number of Sessions")
  8678.  0Eh  6 BYTEs    00h
  8679.  14h    WORD    (big-endian) primary return code (see #1924)
  8680.  16h    DWORD    (big-endian) secondary return code (see #1911,#1948)
  8681.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8682.  22h  8 BYTEs    blanks
  8683.  2Ah  8 BYTEs    (big-endian) partner logical unit name
  8684.  32h  8 BYTEs    (big-endian) mode name
  8685.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  8686.         bit 6: set negotiable values
  8687.  3Bh    BYTE    partner logical unit mode session limit
  8688.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  8689.  3Dh    BYTE    maximum CONWINNERS_TARGET
  8690.  3Eh    BYTE    automatic activation
  8691.  3Fh    BYTE    00h
  8692.  40h    BYTE    flags
  8693.         bit 7: drain target
  8694.         bit 6: drain source
  8695.         bit 5: target responsible, not source
  8696.  
  8697. (Table 1948)
  8698. Values for secondary return code (see also AH=01h/SF=1B00h):
  8699.  0000h    accepted
  8700.  0001h    negotiated
  8701.  0003h    bad logical unit ID
  8702.  0004h    allocation failure, no retry
  8703.  0005h    allocation failure, retry
  8704.  0151h    can't raise limits
  8705.  0153h    all modes must reset
  8706.  0154h    bad SNASVCMG limits
  8707.  0155h    minimum greater than total
  8708.  0156h    mode closed (primary return code = 1)
  8709.     CNOS mode closed (primary return code = 18h)
  8710.  0157h    bad mode name (primary return code = 1)
  8711.     CNOS bad mode name (primary return code = 18h)
  8712.  0159h    reset SNA drains
  8713.  015Ah    single not SRC response
  8714.  015Bh    bad partner logical unit
  8715.  015Ch    exceeds maximum allowed
  8716.  015Dh    change SRC drains
  8717.  015Eh    logical unit detached
  8718.  015Fh    CNOS command race reject
  8719. --------N-6807-------------------------------
  8720. INT 68 - APPC/PC - PASSTHROUGH
  8721.     AH = 07h
  8722.     DS:DX -> control block (format depends on application subsystem)
  8723. Return: control block updated
  8724. SeeAlso: AH=FFh
  8725. ----------684300-----------------------------
  8726. INT 68 U - ??? - INSTALLATION CHECK???
  8727.     AX = 4300h
  8728. Return: AX = F386h if ???
  8729.     ???
  8730. Note:    called by Novell DOS 7.0 EMM386.EXE
  8731. SeeAlso: AX=4400h,INT 41/AX=004Fh
  8732. ----------684300-----------------------------
  8733. INT 68 U - ???
  8734.     AX = 4400h
  8735.     BX = ???
  8736.     CX = ???
  8737.     DX = ???
  8738.     DS:SI = real-mode address of protected-mode GDT
  8739.     ES:DI = real-mode address of protected-mode IDT
  8740. Return: ???
  8741. Note:    called by Novell DOS 7.0 EMM386.EXE if AX=4300h returns AX=F386h
  8742. SeeAlso: AX=4300h
  8743. ----------6847-------------------------------
  8744. INT 68 - MS Windows debugging kernel - OUTPUT STRING
  8745.     AH = 47h
  8746.     ES:SI -> string
  8747. Notes:    output a string (to inform a debugger of some events)
  8748.     KERNEL outputs "Windows Kernel Entry\r\n" on startup
  8749. SeeAlso: INT 41/AX=0012h
  8750. --------N-68FA-------------------------------
  8751. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  8752.     AH = FAh
  8753.     AL bit 0 = new state (0 enable, 1 disable)
  8754. SeeAlso: AH=FDh,INT 68"Novell"
  8755. --------N-68FB-------------------------------
  8756. INT 68 - APPC/PC - CONVERT
  8757.     AH = FBh
  8758.     DS:DX -> control block (see #1949)
  8759. Return: control block updated
  8760.  
  8761. Format of APPC/PC "CONVERT" control block:
  8762. Offset    Size    Description    (Table 1949)
  8763.  00h 12 BYTEs    reserved
  8764.  0Ch    WORD    1A00h (verb "CONVERT")
  8765.  0Eh  6 BYTEs    00h
  8766.  14h    DWORD    (big-endian) return code
  8767.  18h    BYTE    conversion
  8768.         00h ASCII to EBCDIC
  8769.         01h EBCDIC to ASCII
  8770.  19h    BYTE    character set
  8771.         00h AE
  8772.         01h A
  8773.         02h G
  8774.  1Ah    WORD    length of string to convert
  8775.  1Ch    DWORD    pointer to source
  8776.  20h    DWORD    pointer to target
  8777. --------N-68FC-------------------------------
  8778. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  8779.     AH = FCh
  8780.     AL = new state
  8781.         00h disable tracing
  8782.         01h enable tracing
  8783.         DX = number of bytes to keep (0=all)
  8784. SeeAlso: AH=FDh,AH=FEh
  8785. --------N-68FD-------------------------------
  8786. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  8787.     AH = FDh
  8788.     AL = new tracing state (00h disabled, 01h enabled)
  8789. SeeAlso: AH=FAh,AH=FCh,AH=FEh
  8790. --------N-68FE-------------------------------
  8791. INT 68 - APPC/PC - SET TRACE DESTINATION
  8792.     AH = FEh
  8793.     AL = trace destinations (see #1950)
  8794.     DS:DX -> trace stats record if AL bit 0 set (see #1951)
  8795. SeeAlso: AH=FCh,AH=FDh
  8796.  
  8797. Bitfields for trace destinations:
  8798. Bit(s)    Description    (Table 1950)
  8799.  0    storage (DS:DX -> trace stats record)
  8800.  1    display
  8801.  2    file (trace written to file OUTPUT.PC)
  8802.  3    printer
  8803.  
  8804. Format of APPC/PC Trace Statistics Record:
  8805. Offset    Size    Description    (Table 1951)
  8806.  00h    DWORD    pointer to storage trace buffer
  8807.  04h    WORD    max number of 80-byte records in trace
  8808.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  8809.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  8810.  0Ch    DWORD    reserved
  8811. Note:    do not move record while trace is active
  8812. --------N-68FF-------------------------------
  8813. INT 68 - APPC/PC - SET PASSTHROUGH
  8814.     AH = FFh
  8815.     DS:DX -> passthrough exit routine
  8816. SeeAlso: AH=07h,INT 68"Novell"
  8817. --------b-69---------------------------------
  8818. INT 69 - Zenith AT BIOS - ???
  8819. Note:    called by INT 09 handler
  8820. --------N-690100-----------------------------
  8821. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  8822.     AX = 0100h
  8823. Return: AL = FFh if present
  8824. SeeAlso: AX=010Fh
  8825. --------N-690101-----------------------------
  8826. INT 69 - DECnet DOS CTERM - SEND BYTE
  8827.     AX = 0101h
  8828.     BL = character
  8829.     DX = session handle
  8830. Return: AH >= 80h on error
  8831. SeeAlso: AX=0102h
  8832. --------N-690102-----------------------------
  8833. INT 69 - DECnet DOS CTERM - READ BYTE
  8834.     AX = 0102h
  8835.     DX = session handle
  8836. Return: AH >= 80h on error
  8837.     AH < 80h if successful
  8838.         AL = character
  8839. SeeAlso: AX=0101h
  8840. --------N-690103-----------------------------
  8841. INT 69 - DECnet DOS CTERM - STATUS
  8842.     AX = 0103h
  8843.     DX = session handle
  8844. Return: AH status flags (see #1952)
  8845.     AL = reason code if DECnet error (see #1953)
  8846. SeeAlso: AX=0104h
  8847.  
  8848. Bitfields for DECnet DOS CTERM status flags:
  8849. Bit(s)    Description    (Table 1952)
  8850.  7    session has been aborted
  8851.  6    DECnet error
  8852.  1    trace data available
  8853.  0    receive data available
  8854.  
  8855. (Table 1953)
  8856. Values for reason code:
  8857.  00h    normal disconnect
  8858.  01h    unknown message from host
  8859.  02h    protocol violation from host
  8860.  03h    could not process the initiate message
  8861.  04h    error receiving message from host
  8862.  05h    error sending message to host
  8863.  06h    error checking for message from host
  8864.  07h    remote system does not support CTERM
  8865.  08h    remote system does not support correct protocol version
  8866.  09h    did not receive BIND message from host
  8867.  0Ah    could not send BIND message to host
  8868.  0Bh    no more sessions available
  8869.  0Ch    session does not exist
  8870.  0Dh    not enough memory to complete operation
  8871.  0Eh    connection has broken
  8872. Index:    error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
  8873. --------N-690104-----------------------------
  8874. INT 69 - DECnet DOS CTERM - DECnet STATUS
  8875.     AX = 0104h
  8876.     DX = session handle
  8877. Return: AX = reason code (see #1953)
  8878. Note:    use this call when AX=0103h returns a DECnet error
  8879. SeeAlso: AX=0103h
  8880. --------N-690105-----------------------------
  8881. INT 69 - DECnet DOS CTERM - OPEN SESSION
  8882.     AX = 0105h
  8883.     DS:BX -> ASCIZ node name
  8884.     ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
  8885. Return: AX <= 0 on error
  8886.     AX > 0 session handle
  8887. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  8888. --------N-690106-----------------------------
  8889. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  8890.     AX = 0106h
  8891.     DX = session handle
  8892. Return: AH = status
  8893.         00h good close
  8894.         other error code (see #1953)
  8895. SeeAlso: AX=0103h,AX=0105h
  8896. --------N-69010A-----------------------------
  8897. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  8898.     AX = 010Ah
  8899. Return: AX = length of session control block in bytes
  8900. SeeAlso: AX=0105h
  8901. --------N-69010B-----------------------------
  8902. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  8903.     AX = 010Bh
  8904.     DX = session handle
  8905. Return: AX > 0    DECnet socket for the session
  8906.     AX = 0    no match for handle
  8907. --------N-69010F-----------------------------
  8908. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  8909.     AX = 010Fh
  8910. Return: AH = status
  8911.         00h successful uninstall
  8912.         other error code (see #1953)
  8913. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  8914. SeeAlso: AX=0100h
  8915. Index:    uninstall;DECnet DOS CTERM
  8916. --------N-690A-------------------------------
  8917. INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
  8918.     AH = 0Ah
  8919.     AL = function number (see #1954)
  8920.     ES:BX -> Datalink Communication Block
  8921. Return: AX = status (see #1955)
  8922. SeeAlso: INT 6D"DECnet"
  8923.  
  8924. (Table 1954)
  8925. Values for DECnet DOS Data Link Layer function:
  8926.  00h    initialize
  8927.  01h    open portal
  8928.  02h    close portal
  8929.  03h    enable multicast address
  8930.  04h    disable multicast address
  8931.  05h    transmit
  8932.  06h    request transmit buffer
  8933.  07h    deallocate transmit buffer
  8934.  08h    read channel status
  8935.  09h    read datalink portal list
  8936.  0Ah    read information about a datalink portal
  8937.  0Bh    read and/or clear counters
  8938.  0Ch    request to boot from a network server
  8939.  0Dh    enable Ethernet channel
  8940.  0Eh    disable Ethernet channel
  8941.  0Fh    start MOP/send a System ID message
  8942.  10h    stop MOP
  8943.  11h    get DECPARM
  8944.  12h    set DECPARM
  8945.  13h    external loopback
  8946.  
  8947. (Table 1955)
  8948. Values for DECnet DOS Data Link Layer status:
  8949.  00h    successful
  8950.  01h    hardware failed to initialize
  8951.  02h    channel state was not off (must be off to execute that command)
  8952.  03h    channel state is off (must be on to execute that command)
  8953.  04h    address not set
  8954.  05h    hardware missing
  8955.  06h    buffer too small
  8956.  07h    no more buffers available
  8957.  08h    no more resources available
  8958.  09h    promiscuous receiver active
  8959.  0Ah    non exclusive
  8960.  0Bh    unrecognized portal
  8961.  0Ch    protocol type in use
  8962.  0Dh    not a valid Multicast address
  8963.  0Eh    outstanding calls
  8964.  0Fh    hardware doesn't support receiving bad frames
  8965.  10h    none outstanding
  8966.  11h    no events
  8967.  12h    broken
  8968.  13h    buffer quota exceeded
  8969.  14h    already initialized
  8970.  15h    loopback failure
  8971. Index:    error codes;DECnet DOS|DECnet DOS;error codes
  8972.  
  8973. Format of Datalink Communication Block:
  8974. Offset    Size    Description    (Table 1956)
  8975.  00h    WORD    portal ID
  8976.  02h  6 BYTEs    source address
  8977.  08h  6 BYTEs    destination address
  8978.  0Eh    DWORD    buffer pointer
  8979.  12h    WORD    buffer length
  8980.  14h    WORD    operation
  8981.  16h    BYTE    pad flag (used on open)
  8982.         00h no pad
  8983.         01h pad
  8984.  17h    BYTE    mode flag (used on open)
  8985.         00h 802.3
  8986.         01h Ethernet
  8987.         02h promiscuous
  8988.  18h    DWORD    line status change function
  8989.  1Ch    DWORD    received data function
  8990.  20h    DWORD    transmitted data function
  8991.  24h    BYTE    maximum outstanding transmits/receives
  8992.  25h  2 BYTEs    protocol type
  8993.  27h    WORD    buffers lost
  8994. --------N-694001-----------------------------
  8995. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8996.     AX = 4001h
  8997. Return: CF clear
  8998.     AX = 0000h
  8999.     ES:SI -> ???
  9000. Range:    INT 60 to INT 7F, selected by configuration
  9001. Note:    the signature "SYSV" immediately before the interrupt handler serves
  9002.       as the installation check
  9003. SeeAlso: AX=4002h
  9004. Index:    installation check;10NET SYSSVC
  9005. --------N-694002-----------------------------
  9006. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  9007.     AX = 4002h
  9008.     ???
  9009. Return: ???
  9010. Range:    INT 60 to INT 7F, selected by configuration
  9011. Note:    the signature "SYSV" immediately before the interrupt handler serves
  9012.       as the installation check
  9013. --------N-694101-----------------------------
  9014. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  9015.     AX = 4101h
  9016. Return: CF clear
  9017.     ES:SI -> ???
  9018. Range:    INT 60 to INT 7F, selected by configuration
  9019. SeeAlso: AX=4102h,AX=4103h,AX=4104h
  9020. --------N-694102-----------------------------
  9021. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  9022.     AX = 4102h
  9023.     ???
  9024. Return: ???
  9025. --------N-694103-----------------------------
  9026. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  9027.     AX = 4103h
  9028.     ???
  9029. Return: ???
  9030. --------N-694104-----------------------------
  9031. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  9032.     AX = 4104h
  9033.     ???
  9034. Return: ???
  9035. --------N-6942-------------------------------
  9036. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  9037.     AH = 42h
  9038.     AL = function (01h-14h)
  9039.     ???
  9040. Return: ???
  9041. Range:    INT 60 to INT 7F, selected by configuration
  9042. --------N-6943-------------------------------
  9043. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  9044.     AH = 43h
  9045.     AL = function (01h-05h)
  9046.     ???
  9047. Return: ???
  9048. --------N-6944-------------------------------
  9049. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  9050.     AH = 44h
  9051.     AL = function (01h-03h)
  9052.     ???
  9053. Return: ???
  9054. Range:    INT 60 to INT 7F, selected by configuration
  9055. --------N-6949-------------------------------
  9056. INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
  9057.     AH = 49h
  9058. Note:    due to a fencepost error, this function branches to hyperspace
  9059. SeeAlso: AX=4001h,AH=FFh
  9060. --------G-696996-----------------------------
  9061. INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
  9062.     AX = 6996h
  9063.     DS:DX -> interrupt handler or 0000h:0000h to disable
  9064. Return: AX = 9669h
  9065. Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
  9066.       a program to provide hardware interrupt handlers even while being
  9067.       debugged with a debugger that swaps interrupt vectors during
  9068.       debugging.
  9069. Note:    the interrupt vector which is to be reflected is set at installation
  9070.       time and cannot be changed
  9071. --------N-69FF-------------------------------
  9072. INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
  9073.     AH = FFh
  9074. Return: never???
  9075. Desc:    displays "System Error" message and register dump, then halts system
  9076. Range:    INT 60 to INT 7F, selected by configuration
  9077. Notes:    the signature "SYSV" immediately before the interrupt handler serves
  9078.       as the installation check
  9079. SeeAlso: AX=4001h,AH=49h
  9080. --------U-6A---------------------------------
  9081. INT 6A - OPTHELP.COM
  9082. Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  9083.       assembler
  9084. Range:    INT 60h to INT 7Fh, selected by configuration
  9085. --------N-6A---------------------------------
  9086. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
  9087. Note:    the installation check consists of testing for a signature area
  9088.       immediately preceding the interrupt handler
  9089. SeeAlso: AH=01h/DH=FFh,INT 6B"DECnet",INT 6D"DECnet"
  9090. Index:    installation check;DECnet DOS Local Area Transport
  9091.  
  9092. Format of DECnet DOS signature area:
  9093. Offset    Size    Description    (Table 1957)
  9094.  -5    BYTE    major version number
  9095.  -4    BYTE    minor version number
  9096.  -3   3 BYTEs    signature (ASCII "LAT")
  9097. --------N-6A0000-----------------------------
  9098. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - INSTALLATION CHECK
  9099.     AX = 0000h
  9100. Return: AX = 4357h ('CW')
  9101. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  9102. Note:    an alternate installation check is to test for the ASCIZ signature
  9103.       "FTC Super-TCP" three bytes past the interrupt handler
  9104. SeeAlso: AX=0001h,AX=0002h,AX=000Fh,AX=0010h,INT 21/AH=3Fh"BW-TCP"
  9105. SeeAlso: INT 61"PCTCP",INT 62/AH=00h"ETHDEV"
  9106. --------N-6A0001-----------------------------
  9107. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  9108.     AX = 0001h
  9109.     BH = function number
  9110.         01h ???
  9111.         DS:SI -> ??? 24-byte record1 (see #1959)
  9112.         ES:DI -> buffer containing ???
  9113.         02h ???
  9114.         DS:SI -> ??? 18-byte record2 (see #1960)
  9115.         ES:DI -> buffer containing ???
  9116.         04h ???
  9117.         BL = subfunction
  9118.             01h
  9119.             DS:SI -> ??? 28-byte record3 (see #1961)
  9120.             ES:DI -> buffer containing ???
  9121.             02h
  9122.             DS:SI -> ??? 28-byte record3 (see #1961)
  9123.             ES:DI -> buffer containing ???
  9124.             03h
  9125.             DS:SI -> ??? 28-byte record3 (see #1961)
  9126.             else Return: AX = 0005h
  9127.         05h ???
  9128.         DS:SI -> ??? 20-byte record4 (see #1962)
  9129.         ES:DI -> buffer containing ???
  9130.         06h ???
  9131.         BL = subfunction
  9132.             01h
  9133.             DS:SI -> ??? 40-byte record5 (see #1963)
  9134.             02h
  9135.             DS:SI -> ??? 20-byte record6 (see #1964)
  9136.             ES:DI -> ???
  9137.             03h
  9138.             DS:SI -> ??? 20-byte record6 (see #1964)
  9139.             04h
  9140.             DS:SI -> ??? 46-byte record7 (see #1965)
  9141.             else Return: AX = 0005h
  9142.         11h ???
  9143.         DS:SI -> ??? 28-byte record8 (see #1966)
  9144.         ES:DI -> ???
  9145. Return: AX = function status (see #1958)
  9146. SeeAlso: AX=0000h
  9147.  
  9148. (Table 1958)
  9149. Values for Super-TCP function status:
  9150.  0000h    successful
  9151.  0005h    unsupported function
  9152.  000Ah    out of memory
  9153.  
  9154. Format of record1:
  9155. Offset    Size    Description    (Table 1959)
  9156.  00h  4 BYTEs    ???
  9157.  04h    WORD    size of ES:DI buffer
  9158.  06h 18 BYTEs    ???
  9159.  
  9160. Format of record2:
  9161. Offset    Size    Description    (Table 1960)
  9162.  00h  4 BYTEs    ???
  9163.  04h    WORD    size of ES:DI buffer
  9164.  06h 12 BYTEs    ???
  9165.  
  9166. Format of record3:
  9167. Offset    Size    Description    (Table 1961)
  9168.  00h  2 BYTEs    ???
  9169.  02h    WORD    ???
  9170.  04h    WORD    size of ES:DI buffer
  9171.  06h    WORD    ???
  9172.  08h    WORD    operation number (for function 0401h)
  9173.  0Ah    DWORD    -> ???
  9174.  0Eh    WORD    (return) ???
  9175.  10h 12 BYTEs    ???
  9176.  
  9177. Format of record4:
  9178. Offset    Size    Description    (Table 1962)
  9179.  00h  4 BYTEs    ???
  9180.  04h    WORD    size of ES:DI buffer
  9181.  06h 14 BYTEs    ???
  9182.  
  9183. Format of record5:
  9184. Offset    Size    Description    (Table 1963)
  9185.  00h    BYTE    operation??? (00h-07h)
  9186.  01h    BYTE    ???
  9187.  02h    WORD    (return) ???
  9188.  04h    DWORD    -> ???
  9189.  08h  4 BYTEs    ???
  9190.  0Ch    DWORD    -> ??? or 0000h:0000h
  9191.  10h 16 BYTEs    ???
  9192.  20h    DWORD    ???
  9193.  24h  4 BYTEs    ???
  9194.  
  9195. Format of record6:
  9196. Offset    Size    Description    (Table 1964)
  9197.  00h  4 BYTEs    ???
  9198.  04h    WORD    size of ES:DI buffer
  9199.  06h 14 BYTEs    ???
  9200.  
  9201. Format of record7:
  9202. Offset    Size    Description    (Table 1965)
  9203.  00h    WORD    ???
  9204.  02h    WORD    ???
  9205.  04h    WORD    ???
  9206.  06h 40 BYTEs    ???
  9207.  
  9208. Format of record8:
  9209. Offset    Size    Description    (Table 1966)
  9210.  00h  4 BYTEs    ???
  9211.  04h    WORD    size of ES:DI buffer
  9212.  06h  6 BYTEs    ???
  9213.  0Ch    WORD    (return) ???
  9214.  0Eh    WORD    operation??? (01h-03h)
  9215.  10h 12 BYTEs    ???
  9216. --------N-6A0002-----------------------------
  9217. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  9218.     AX = 0002h
  9219.     BX = ??? (zero/nonzero)
  9220.     CX = ??? identifier (see AX=0004h)
  9221.     DS:SI -> 40-byte buffer for ??? or 0000h:0000h
  9222.     ES:DI -> buffer for ??? or 0000h:0000h
  9223. Return: AX = 0000h (successful) ???
  9224.     BL = ???
  9225.     BH = ???
  9226.     CX = ???
  9227.     DX = ???
  9228. --------N-6A0003-----------------------------
  9229. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - GET ??? DATA AREA
  9230.     AX = 0003h
  9231. Return: CX:DX -> data area (see #1967)
  9232.  
  9233. Format of Super-TCP data area:
  9234. Offset    Size    Description    (Table 1967)
  9235.  00h  2 BYTEs    ???
  9236.  02h    DWORD    original INT 6A vector
  9237.  06h  2 BYTEs    ???
  9238.  08h 96 BYTEs    array of 16 6-byte ???
  9239.  68h    WORD    number of elements of above array in use
  9240.  6Ah    WORD    ???
  9241.     ???
  9242. --------N-6A0004-----------------------------
  9243. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ALLOCATE ???
  9244.     AX = 0004h
  9245.     CX = size in ???
  9246. Return: AX = 0000h (successful)
  9247.     CX = DX = ???
  9248. SeeAlso: AX=0005h,AX=000Fh
  9249. --------N-6A0005-----------------------------
  9250. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ???
  9251.     AX = 0005h
  9252.     CX = ??? identifier (from AX=0004h)
  9253. Return: AX = status (0000h successful, FFFFh failed)
  9254. SeeAlso: AX=0004h,AX=000Fh
  9255. --------N-6A000F-----------------------------
  9256. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ALL ???
  9257.     AX = 000Fh
  9258. Return: AX = 0000h (successful)
  9259. SeeAlso: AX=0000h,AX=0004h,AX=0005h
  9260. --------N-6A0010-----------------------------
  9261. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - UNINSTALL
  9262.     AX = 0010h
  9263. Return: AX = status
  9264.         0000h successful
  9265.         0002h can't uninstall, interrupt vector hooked by another program
  9266. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  9267. Note:    if AX is not one of the values listed here on entry, Super-TCP
  9268.       returns AX=FFFEh
  9269. SeeAlso: AX=0000h
  9270. --------N-6A01--DHFF-------------------------
  9271. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  9272.     AH = 01h
  9273.     DH = FFh
  9274.     AL = character
  9275.     DL = handle
  9276. Return: AH >= 80h on error
  9277. SeeAlso: AH=02h
  9278. --------N-6A02--DHFF-------------------------
  9279. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  9280.     AH = 02h
  9281.     DH = FFh
  9282.     DL = handle
  9283. Return: AH < 80h if successful
  9284.         AL = character
  9285.     AH >= 80h on error
  9286. SeeAlso: AH=01h
  9287. --------N-6A03--DHFF-------------------------
  9288. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  9289.     AH = 03h
  9290.     DH = FFh
  9291.     DL = handle
  9292. Return: AH = status flags (see #1968)
  9293.  
  9294. Bitfields for DECnet DOS LAT status flags:
  9295. Bit(s)    Description    (Table 1968)
  9296.  5    transmit buffer empty
  9297.  3    session in start state
  9298.  2    session not active
  9299.  1    unable to queue transmit data
  9300.  0    receive data available
  9301. --------N-6AD0--DHFF-------------------------
  9302. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  9303.     AH = D0h
  9304.     DH = FFh
  9305.     AL = password flag
  9306.         FFh no password
  9307.         0Fh password at ES:DI
  9308.     ES:BX -> LAT session control block (see #1969)
  9309.     ES:DI -> 16-byte blank-padded password (optional)
  9310. Return: AH = 00h success
  9311.         DL = handle
  9312. SeeAlso: AX=D000h
  9313.  
  9314. Format of LAT Session Control Block:
  9315. Offset    Size    Description    (Table 1969)
  9316.  00h 18 BYTEs    service name
  9317.  12h 18 BYTEs    node name (future use)
  9318.  24h 18 BYTEs    port name (future use)
  9319.  36h    DWORD    -> session stopped post routine
  9320.  3Ah    DWORD    -> service table overflow post routine
  9321.  3Eh    DWORD    -> transmit post routine
  9322.  42h    DWORD    -> receive post routine
  9323.  46h    WORD    session status
  9324.         04h circuit failure
  9325.         08h stop slot received
  9326. ---LAT v???---
  9327.  48h    WORD    slot state (LAT driver use)
  9328.  4Ah    WORD    local credits (LAT driver use)
  9329.  4Ch    DWORD    -> VCB (LAT driver use)
  9330.  50h    WORD    backward slot (LAT driver use)
  9331.  52h    WORD    forward slot (LAT driver use)
  9332.  54h    WORD    remote slot ID (LAT driver use)
  9333.  56h    WORD    local slot ID (LAT driver use)
  9334.  58h    WORD    slot byte count (LAT driver use)
  9335.  5Ah    BYTE    remote credits (LAT driver use)
  9336.  5Bh 255 BYTEs    transmitted data slot
  9337. 15Ah    BYTE    number of receive data slots (4 recommended)
  9338. 15Bh    BYTE    number of occupied slots
  9339. 15Ch    BYTE    index of next receive slot to use
  9340. 15Dh    BYTE    index of current receive slot
  9341. 15Eh    WORD    pointer to first received character
  9342. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  9343.      259N BYTEs    buffers
  9344. Note:    set post routines to 0000h:0000h if polled operation will be used
  9345. ---LAT v4.1.17---
  9346.  48h    WORD    session state (LAT driver use)
  9347.  4Ah    BYTE    local credits (LAT driver use)
  9348.  4Bh    DWORD    -> VCB (LAT driver use)
  9349.  4Fh    WORD    backward slot (LAT driver use)
  9350.  51h    WORD    forward slot (LAT driver use)
  9351.  53h    BYTE    remote slot ID (LAT driver use)
  9352.  54h    BYTE    local slot ID (LAT driver use)
  9353.  55h    BYTE    slot byte count (LAT driver use)
  9354.  56h    BYTE    remote credits (LAT driver use)
  9355.  57h 255 BYTEs    transmitted data slot
  9356. 156h    BYTE    number of receive data slots (4 recommended)
  9357. 157h    BYTE    number of occupied slots
  9358. 158h    BYTE    index of next receive slot to use
  9359. 159h    BYTE    index of current receive slot
  9360. 15Ah    WORD    pointer to first received character
  9361. 15Ch  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  9362.      259N BYTEs    buffers
  9363. Note:    set post routines to 0000h:0000h if polled operation will be used
  9364. --------N-6AD000DHFF-------------------------
  9365. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  9366.     AX = D000h
  9367.     DH = FFh
  9368.     DL = handle
  9369. Return: AX = status (see #1970)
  9370. SeeAlso: AH=D0h
  9371.  
  9372. (Table 1970)
  9373. Values for DECnet DOS LAT function status:
  9374.  0000h    successful
  9375.  0001h    no such session
  9376.  0002h    session not running, try again later
  9377. --------N-6AD100DHFF-------------------------
  9378. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  9379.     AX = D100h
  9380.     DH = FFh
  9381.     DL = handle
  9382. Return: AX = 0000h if successful
  9383.     AH bit 7 set if unable to send break
  9384. --------N-6AD300DHFF-------------------------
  9385. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  9386.     AX = D300h
  9387.     DH = FFh
  9388. SeeAlso: AX=D400h
  9389. --------N-6AD400DHFF-------------------------
  9390. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  9391.     AX = D400h
  9392.     DH = FFh
  9393.     CX = buffer size
  9394.     ES:BX -> buffer for LAT counters
  9395. Return: AX = status
  9396.         0000h counters copied into buffer
  9397.         FFFFh buffer too small
  9398. SeeAlso: AX=D300h
  9399. --------N-6AD500DHFF-------------------------
  9400. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  9401.     AX = D500h
  9402.     DH = FFh
  9403.     ES:BX -> 17-byte buffer for name
  9404. Return: AH = 00h if successful
  9405.        ES:BX buffer filled
  9406.     AX = FFFFh if end of table or no name available
  9407. Notes:    use this function to get the names of the hosts on the network
  9408.     successive calls are necessary to get all names
  9409. SeeAlso: AX=D600h
  9410. --------N-6AD600DHFF-------------------------
  9411. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  9412.     AX = D600h
  9413.     DH = FFh
  9414. Return: AX = number of service table entries
  9415.     BX = status
  9416.         0000h service table has not overflowed
  9417.         FFFFh service table has overflowed
  9418. SeeAlso: AX=D500h
  9419. --------!---Section--------------------------
  9420.