home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 7 / POWERCD7.ISO / prgmming / inter43 / interrup.j < prev    next >
Text File  |  1994-11-06  |  319KB  |  8,363 lines

  1. Interrupt List, part 10 of 12
  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. --------U-61---------------------------------
  30. INT 61 - PC-Magazin - PAGE, SWAPx
  31.     details not yet available
  32. Program: PAGE and SWAPx are utilities from PC-Magazin, the German edition of
  33.       PC Magazine, issue 47/85, page 31
  34. SeeAlso: INT 66"INCA"
  35. --------N-61---------------------------------
  36. INT 61 - TCPOpen kernel - API
  37.     ES:BX -> request packet (see #1826)
  38. Program: TCPOpen is a TCP/IP protocol stack by Lanera
  39. Range:    INT 60 to INT 7F, selected by configuration file
  40. Note:    there does not appear to be an installation check, though function
  41.       FFFFh can be used to verify that the software is indeed functioning
  42.  
  43. Format of TCPOpen request packet:
  44. Offset    Size    Description    (Table 1826)
  45.  00h  8 BYTEs    ???
  46.  08h    WORD    function number (0000h-001Ah or FFF9h-FFFFh)
  47.  0Ah    WORD    ???
  48.  0Ch  2 BYTEs    ???
  49.  0Eh    WORD    (return) return code
  50.  10h  2 BYTEs    ???
  51.  12h    WORD    ???
  52.  14h    WORD    (return) 0001h if requested function complete
  53.  16h    WORD    (return) ???
  54.  18h  6 BYTEs    ???
  55.  1Eh    DWORD    -> ???
  56.  22h    WORD    ??? or 0000h
  57.  24h    WORD    (return) ???
  58.  
  59. (Table 1827)
  60. Call TCPOpen Function FFFFh: installation verification
  61. Return: offset 10h = BEEFh
  62.     offset 14h = 0001h
  63.     offset 24h = ???
  64. Index:    installation check;TCPOpen kernel
  65. --------N-61---------------------------------
  66. INT 61 - XFS v1.76 - XFSKRNL.EXE - API
  67.     AX = function
  68.         8000h installation check???
  69.         Return: AX = 0000h
  70.         8001h ???
  71.         ES:DI -> DWORD ???
  72.         Return: AX = status???
  73.         8002h ???
  74.         BX = ???
  75.         CX = ???
  76.         ES:DI -> ???
  77.         Return: AX = status???
  78.         8003h ???
  79.         BX = ???
  80.         CX = ???
  81.         ES:DI -> ???
  82.         Return: AX = status???
  83.         8004h ???
  84.         BX = ???
  85.         Return: AX = status???
  86.         8005h wait until ???
  87.         Return: DX:AX = ???
  88.         8006h get ???
  89.         Return: DX:AX -> ??? record
  90.         8007h set IP address??? (or htonl/ntohl)
  91.         DX:BX = IP address???
  92.         Return: DX:AX = byte-swapped IP address
  93.         8008h set IP address??? (or htonl/ntohl)
  94.         DX:AX = IP address???
  95.         Return: DX:AX = byte-swapped IP address
  96.         8009h ???
  97.         ES:DI -> ???
  98.         Return: DX:AX = ???
  99.         800Ah ???
  100.         800Bh ???
  101.         Return: DX:AX = ???
  102.         800Ch ???
  103.         800Dh ???
  104.         800Eh ???
  105.         800Fh ???
  106.         8010h get ??? record
  107.         Return: DX:AX -> ??? record
  108.         8011h ???
  109.         8012h ???
  110.         BX = ???
  111.         Return: DX:AX = ???
  112.         8013h get ??? record
  113.         Return: DX:AX -> ??? record
  114.         8014h ???
  115.         ES:DI -> ???
  116.         Return: nothing
  117.         8015h get ??? record
  118.         Return: DX:AX -> 8-byte ??? record
  119.         8016h get ??? record
  120.         Return: DX:AX -> 6-byte ??? record
  121.         8017h ???
  122.         ES:DI -> ???
  123.         Return: DX:AX = ???
  124.         8018h get ??? record
  125.         Return: DX:AX -> ??? record
  126.         8019h get ??? record
  127.         Return: DX:AX -> 14-byte ??? record
  128.         801Ah get ??? record
  129.         Return: DX:AX -> ??? record (max 98 bytes)
  130.         801Bh get ??? record
  131.         Return: DX:AX -> ??? record
  132.         801Ch ???
  133.         Return: nothing
  134.         801Dh get ???
  135.         Return: AL = ???
  136.         801Eh ???
  137.         Return: AX = ???
  138.         801Fh uninstall
  139.         Return: AX = status
  140.                 0000h successful
  141.                 other interrupt which could not be released
  142.     AX = other
  143.         Return: AX:BX = ??? (0000h:0000h by default)
  144. Program: XFS is a shareware Network File System client by Robert Juhasz
  145. Range:    INT 60 to INT 65, selected by scanning for two consecutive free
  146.       vectors and hooking the first
  147. SeeAlso: INT 62"XFS"
  148. --------N-61---------------------------------
  149. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  150.     AH = system call number (see also entries below)
  151.         01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
  152.         02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
  153. Return: CF clear if successful
  154.     CF set on error
  155.         AL = basic error (see #1828)
  156.         AH = suberror number (see #1829,#1830)
  157. Range:    INT 20h to INT E0h, selected by configuration
  158. Notes:    the installation check consists of testing for the signature "TCPTSR"
  159.       three bytes beyond the start of the interrupt handler
  160. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  161.       greater than 54h in AH may crash the system.    Other kernels may have
  162.       this bug as well.
  163. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  164. Index:    installation check;PC/TCP
  165.  
  166. (Table 1828)
  167. Values for PC/TCP error code:
  168.  00h "NET_NOERR" successful
  169.  01h "NET_ERR_INUSE" protocol or socket already in use
  170.  02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
  171.  03h "NET_ERR_NOMEM" out of memory
  172.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  173.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  174.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  175.  07h "NET_ERR_NOHOST" no host bound to specified connection
  176.  08h "NET_ERR_CANTOPEN" unable to open file
  177.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  178.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see subcodes below)
  179.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  180.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  181.  0Dh "NET_ERR_TIMEOUT" operation timed out
  182.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  183.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  184.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  185.     Subcodes: 0= no error, 1 = Host unreachable
  186.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  187.             is zero
  188.  12h "NET_ERR_BADARG" invalid argument
  189.  13h "NET_ERR_EOF" foreign host closed its end of connection
  190.  14h "NET_ERR_RESET" connection has been reset
  191.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  192.             with no data available
  193.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  194.  17h "NET_ERR_NODESC" could not allocate network descriptor
  195.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  196.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  197.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  198.  1Bh kernel busy, try again later
  199.  1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
  200.     (see subcodes below)
  201. ---v2.1+---
  202.  1Dh "NET_ERR_TERMINATING" internal kernel fatal error
  203.  1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
  204.  1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
  205.  20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
  206.  21h "NET_ERR_EMM" expanded memory error
  207.  22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
  208.  23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
  209.  24h "NET_ERR_NOQIOS" ran out of resources; try again later
  210.  25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
  211.  
  212. (Table 1829)
  213. Values for subcodes of PC/TCP error 0Ah "NET_ERR_HOST_UNREACHABLE":
  214.  00h    no error
  215.  01h    host unreachable
  216.  02h    ARP failed
  217.  03h    hardware failure
  218.  04h    link failure
  219.  05h    no route
  220.  06h    gateway down
  221.  
  222. (Table 1830)
  223. Values for subcodes of PC/TCP error 1Ch "NET_ERR_ICMPMESG":
  224.  07h    unrecognised
  225.  08h    can't fragment
  226.  09h    srcr_fail
  227.  0Ah    source quench
  228.  0Bh    time exceeded
  229.  0Ch    parameter problem
  230.  0Dh    admin_prohib. see also code 0Ah
  231. --------N-6100-------------------------------
  232. INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
  233.     AH = 00h
  234.     DS:SI -> 216-byte buffer for network debugging information (see #1831)
  235. Return: CF clear
  236.     AX = 0000h
  237.     buffer filled
  238. Notes:    this call is not documented by FTP, Inc. for any version
  239.     most of the information returned by this call is available via the
  240.       documented get_kernel_info or net_info commands.
  241.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  242. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  243.  
  244. Format of network debugging information:
  245. Offset    Size    Description    (Table 1831)
  246.  00h    DWORD    number of interrupts
  247.  04h    DWORD    receive buffer low-water mark
  248.  08h    DWORD    transmit buffer low-water mark
  249.  0Ch    DWORD    number of packets received
  250.  10h    DWORD    number of packets transmitted
  251.  14h    DWORD    total receive errors
  252.  18h    DWORD    total transmit errors
  253.  1Ch  4 BYTEs    ???
  254.  20h    DWORD    receive resets
  255.  24h    DWORD    transmit resets
  256.  28h    DWORD    number of "runts" received
  257.  2Ch    DWORD    number of alignment errors on received packets
  258.  30h    DWORD    number of CRC errors on received packets
  259.  34h    DWORD    number of parity errors on received packets
  260.  38h    DWORD    number of receive overflow errors
  261.  3Ch    DWORD    number of oversized packets received
  262.  40h    DWORD    number of packets lost due to lack of buffers
  263.  44h    DWORD    receive timeouts
  264.  48h 32 BYTEs    ???
  265.  68h    DWORD    number of transmit collisions
  266.  6Ch    DWORD    number of transmit timeouts
  267.  70h    DWORD    number of transmit underflows
  268.  74h    DWORD    number of lost "crs" on transmit
  269.  78h    DWORD    number of times heartbeat failed on transmit
  270.  7Ch 24 BYTEs    ???
  271.  94h    WORD    free packet buffers
  272.  96h    WORD    total packet buffers
  273.  98h    WORD    minimum number of packet buffers free since kernel started
  274.  9Ah 24 BYTEs    ???
  275.  B2h    DWORD    pointer to TCP connection list???
  276.  B6h    DWORD    pointer to IP routing table???
  277.  BAh 30 BYTEs    ???
  278. --------V-610000-----------------------------
  279. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
  280.     AX = 0000h
  281.     BX = zoom factor (0-7)
  282. Desc:    zooms the display based on the given zoom factor
  283. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  284.       obtained by calling INT 16/AH=FFh
  285.     not all vendors include the Tseng TSR which supports these functions
  286. SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  287. SeeAlso: INT 16/AH=FFh"OPTIMA"
  288. --------N-610001SF0001-----------------------
  289. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  290.     AX = 0001h subfn 0001h
  291.     DS:DX -> communications control block (function 0001h)
  292. Return: AX = status (0000h-0002h,0098h,009Eh-00A2h) (see #1832)
  293. Range:    INT 60h to INT 66h
  294. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  295.       the four bytes immediately preceding the interrupt handler
  296. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
  297.  
  298. (Table 1832)
  299. Values for VINES status:
  300.  0000h    successful
  301.  0001h    service not installed
  302.  0002h    invalid service ID
  303.  0098h    resource already in use
  304.  0003h-000Ah reserved for BANV interface errors
  305.  0097h    invalid socket identifier
  306.  009Bh    destination node unreachable
  307.  009Ch    message overflow
  308.  009Dh    destination socket nonexistent
  309.  009Eh    address family does not exist
  310.  009Fh    socket type does not exist
  311.  00A0h    protocol does not exist
  312.  00A1h    no more sockets available
  313.  00A2h    no more buffer space available
  314.  00A3h    timeout
  315.  00A5h    resource not available
  316.  00A6h    internal communication failure
  317.  00B1h    resource disconnect
  318.  
  319. Format of VINES control block to open socket:
  320. Offset    Size    Description    (Table 1833)
  321.  00h    WORD    0001h
  322.  02h    WORD    pointer to argument block
  323.  04h    WORD    error return code
  324.  06h  4 BYTEs    reserved
  325.  
  326. Format of VINES argument block for opening socket:
  327. Offset    Size    Description    (Table 1834)
  328.  00h    WORD    pointer to 2-byte buffer for socket identifier
  329.  02h    WORD    address family
  330.         0003h Banyan
  331.  04h    WORD    socket type
  332.         in address family 0003h
  333.             0001h IPC socket
  334.             0002h SPP socket
  335.  06h    WORD    protocol number
  336.         FFFFh default
  337.  08h    WORD    pointer to 16-byte buffer for socket address
  338.  0Ah    WORD    local port number
  339.         0000h if service should assign transient port number
  340.         0001h to 01FFh well-known port number (assigned by Banyan)
  341.  
  342. Format of IPC port:
  343. Offset    Size    Description    (Table 1835)
  344.  00h    WORD    address family (always 0003h for Banyan ports)
  345.  04h  4 BYTEs    network number (server's serial number)
  346.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  347.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  348.  0Ah    BYTE    hop count
  349.  0Bh  5 BYTEs    filler
  350. --------N-610001SF0002-----------------------
  351. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  352.     AX = 0001h subfn 0002h
  353.     DS:DX -> communications control block (function 0002h) (see #1836)
  354. Return: AX = status (0000h-0002h,0097h,009Bh-009Dh,00A2h,00A3h,00B1h)
  355.         (see #1832)
  356. Range:    INT 60h to INT 66h
  357. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  358.       the four bytes immediately preceding the interrupt handler
  359. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
  360.  
  361. Format of VINES control block for subfunction 0002h:
  362. Offset    Size    Description    (Table 1836)
  363.  00h    WORD    0002h
  364.  02h    WORD    pointer to argument block (see #1837)
  365.  04h    WORD    error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
  366.         (see #1832)
  367.  06h  4 BYTEs    reserved
  368.  
  369. Format of VINES argument block for subfunction 0002h:
  370. Offset    Size    Description    (Table 1837)
  371.  00h    WORD    routine metric
  372.  02h    WORD    error return code
  373.  04h    WORD    socket identifier
  374.  06h    WORD    pointer to send buffer (see #1839)
  375.  08h    WORD    length of send buffer
  376.  0Ah    WORD    message request flags (see #1838)
  377.  0Ch 16 BYTEs    socket address (see #1840)
  378.  1Ch    WORD    timeout value in multiples of 200ms
  379.  1Eh    WORD    connection identifier
  380.  20h    WORD    type of request
  381.         0001h send message
  382.         0002h establish a virtual connection
  383.         0003h terminate a virtual connection
  384.  
  385. Bitfields for message request flags:
  386. Bit(s)    Description    (Table 1838)
  387.  0    async request
  388.  1    reliable message
  389.  2    flush receive buffer on overflow
  390.  3    end of user message received
  391.  4    vectored request (if set, send buffer contains buffer descriptors)
  392.  5    connection-specific receive
  393.  6    change to connection-specific receive mode
  394.  
  395. Format of buffer descriptor:
  396. Offset    Size    Description    (Table 1839)
  397.  00h    WORD    data segment
  398.  02h    WORD    buffer pointer
  399.  04h    WORD    buffer length
  400.  06h    WORD    character count
  401.  
  402. Format of VINES socket address for unreliable datagrams:
  403. Offset    Size    Description    (Table 1840)
  404.  00h    WORD    0003h      address family
  405.  02h    DWORD    FFFFFFFFh network number
  406.  06h    WORD    FFFFh      subnet number
  407.  08h    WORD          local port number
  408.  0Ah    BYTE    00h-0Fh      hop count
  409.  0Bh  5 BYTEs    0000h      filler
  410. --------N-610001SF0003-----------------------
  411. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  412.     AX = 0001h subfn 0003h
  413.     DS:DX -> communications control block (function 0003h) (see #1841)
  414. Return: AX = status (00-0Ah,97h,A2h,A3h) (see #1832)
  415. Range:    INT 60h to INT 66h
  416. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  417.       the four bytes immediately preceding the interrupt handler
  418. SeeAlso: AX=0001h/SF=0002h
  419.  
  420. Format of VINES control block for subfunction 0003h:
  421. Offset    Size    Description    (Table 1841)
  422.  00h    WORD    0003h
  423.  02h    WORD    pointer to argument block (see #1842)
  424.  04h    WORD    error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
  425.         (see #1832)
  426.  06h  4 BYTEs    reserved
  427.  
  428. Format of VINES argument block for subfunction 0003h:
  429. Offset    Size    Description    (Table 1842)
  430.  00h    WORD    character count
  431.  02h    WORD    error return code
  432.  04h    WORD    socket identifier
  433.  06h    WORD    pointer to receive buffer
  434.  08h    WORD    length of receive buffer
  435.  0Ah    WORD    message request flags (see #1838)
  436.  0Ch 16 BYTEs    socket address
  437.  1Ch    WORD    timeout value in multiples of 200ms
  438.  1Eh    WORD    connection identifier
  439.  20h    WORD    type of response
  440.         0001h message received
  441.         0002h virtual connection established
  442.         0003h virtual connection terminated
  443.  
  444. Format of buffer descriptor:
  445. Offset    Size    Description    (Table 1843)
  446.  00h    WORD    data segment
  447.  02h    WORD    buffer pointer
  448.  04h    WORD    buffer length
  449.  06h    WORD    character count
  450. --------N-610001SF0004-----------------------
  451. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  452.     AX = 0001h subfn 0004h
  453.     DS:DX -> communications control block (function 0004h)
  454. Return: AX = status (0000h-000Ah,0097h) (see #1832)
  455. Range:    INT 60h to INT 66h
  456. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  457.       the four bytes immediately preceding the interrupt handler
  458. SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
  459.  
  460. Format of VINES control block to close socket:
  461. Offset    Size    Description    (Table 1844)
  462.  00h    WORD    0004h
  463.  02h    WORD    pointer to argument block (see #1845)
  464.  04h    WORD    error return code (see #1832)
  465.  06h  4 BYTEs    reserved
  466.  
  467. Format of VINES argument block for closing socket:
  468. Offset    Size    Description    (Table 1845)
  469.  00h    WORD    socket identifier
  470. --------N-610001SF0005-----------------------
  471. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  472.     AX = 0001h subfn 0005h
  473.     DS:DX -> communications control block (see #1847)
  474. Return: AX = status (0000h-000Ah,00A2h,00A3h) (see #1846)
  475. Range:    INT 60h to INT 66h
  476. Notes:    The Banyan interrupt handler is identified by the string "BANV" in
  477.       the four bytes immediately preceding the interrupt handler
  478.     returns results for all asynchronous operations invoked from the
  479.       data segment used for this call
  480. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
  481.  
  482. (Table 1846)
  483. Values for VINES function status:
  484.  0000h    successful
  485.  0001h    service not installed
  486.  0002h    invalid service ID
  487.  0003h-000Ah reserved for BANV interface errors
  488.  00A2h    no more buffer space available
  489.  00A3h    timeout event
  490.  
  491. Format of VINES control block for subfunction 0005h:
  492. Offset    Size    Description    (Table 1847)
  493.  00h    WORD    0005h
  494.  02h    WORD    pointer to argument block (see #1848)
  495.  04h    WORD    error return code
  496.  06h  4 BYTEs    reserved
  497.  
  498. Format of VINES argument block for subfunction 0005h:
  499. Offset    Size    Description    (Table 1848)
  500.  00h    WORD    pointer to WORD event pointer
  501.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  502. --------N-610001SF0008-----------------------
  503. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  504.     AX = 0001h subfn 0008h
  505.     DS:DX -> communications control block (function 0008h)
  506. Return: AX = status
  507.         0000h  successful
  508.         00A2h  no more buffer space available
  509. Range:    INT 60h to INT 66h
  510. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  511.       the four bytes immediately preceding the interrupt handler
  512. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
  513.  
  514. Format of VINES control block for subfunction 0006h:
  515. Offset    Size    Description    (Table 1849)
  516.  00h    WORD    0008h
  517.  02h    WORD    process type
  518.         0001h transient process
  519.         0002h resident process
  520.  04h    WORD    error return code
  521.  06h  4 BYTEs    reserved
  522. --------N-610001SF000B-----------------------
  523. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  524.     AX = 0001h subfn 000Bh
  525.     DS:DX -> communications control block (function 000Bh) (see #1850)
  526. Return: AX = status (00h-0Ah,A2h) (see #1846)
  527. Range:    INT 60h to INT 66h
  528. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  529.       the four bytes immediately preceding the interrupt handler
  530. SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
  531.  
  532. Format of VINES control block for subfunction 000Bh:
  533. Offset    Size    Description    (Table 1850)
  534.  00h    WORD    000Bh
  535.  02h    WORD    pointer to argument block (see #1851)
  536.  04h    WORD    error return code (see #1832)
  537.  06h  2 BYTEs    reserved
  538.  08h    WORD    user CS register
  539.  
  540. Format of VINES argument block for subfunction 000Bh:
  541. Offset    Size    Description    (Table 1851)
  542.  00h    WORD    pointer to user interrupt function (see #1852)
  543.  02h    WORD    pointer to user stack
  544.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  545.  
  546. (Table 1852)
  547. Values FAR user function is invoked with:
  548.     SS = DS = ES = segment of control block
  549.     STACK:    DWORD    return address
  550.         WORD    argument pointer (sosend or sorec argument block)
  551.         WORD    error return code
  552.             0000h argument pointer is valid
  553.             00A3h timeout
  554. --------V-610001-----------------------------
  555. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
  556.     AX = 0001h
  557.     BX = X coordinate to center
  558.     CX = Y coordinate to center
  559. Desc:    Positions the zoom window such that the specified window-relative
  560.       coordinates appear as close as possible to the center of the
  561.       display.  Useful for scrolling and panning.
  562. Range:    unknown
  563. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  564.       obtained by calling INT 16/AH=FFh
  565.     not all vendors include the Tseng TSR which supports these functions
  566. SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  567. SeeAlso: INT 16/AH=FFh"OPTIMA"
  568. --------I-610002-----------------------------
  569. INT 61 - Banyan VINES - 3270 INTERFACE
  570.     AX = 0002h
  571.     BH = function number (see #1853)
  572.     DS:CX -> argument block (except BH=00h,1Ah)
  573. Return: AX = status (see #1854)
  574. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  575.       which is loaded first.  The other interface will use AX=000Ah
  576.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  577.       or 3270/BSC resident driver, which must be reloaded by the user
  578.  
  579. (Table 1853)
  580. Values for VINES 3270 interface function number:
  581.  00h "pi2reset"     reset 3270/SNA or 3270/BSC driver
  582.  02h "pi2bsc"     (3270/BSC only)
  583.  03h "pi2get"     get information stored in 3270 resident driver
  584.  04h "pi2put"     store information in 3270 resident driver
  585.  05h "pi2gcur"     get current screen position
  586.  07h "pi2sdat"     send data keystroke
  587.  08h "pi2scom"     send command keystroke
  588.  0Ah "pi2field"     get field info for arbitrary screen positions
  589.  0Fh "pi2stat"     get logical unit/device status
  590.  12h "pi2nlus"     determine logical unit/device assignment
  591.  13h "pi2gate"     specifies comm port address to gateway service
  592.  14h "pi2attach" attach a logical unit/device
  593.  15h "pi2sdev"     save logical unit/device info in resident driver
  594.         (not supported in >3.0)
  595.  16h "pi2gdev"     get device information (not supported in >3.0)
  596.  17h "pi2luinfo" get info about specific logical unit/device
  597.  18h "pi2gerr"     get finer error detail
  598.  19h "pi2dhold"     (3270/SNA only)  holds a 3270 device
  599.  1Ah "pi2shut"     release memory-resident module
  600.  1Ch "pi2sprof"     save profile info in res driver (not supp in >3.0)
  601.  1Dh "pi2gprof"     get prevsly stored profile info (not supp in >3.0)
  602.  
  603. (Table 1854)
  604. Values for VINES 3270 status:
  605.  0000h    successful
  606.  000Bh    invalid parameter or data does not fit data area
  607.  000Ch    another code path currently active in resident driver
  608.  000Dh    operation currently not allowed
  609.  0032h    encountered connection disconnect error
  610.  0033h    encountered "sosend" completion error
  611.  0034h    encountered "sosend" communication error
  612.  0035h    attach request refused.    extended error info via "pi2gerr":
  613.     01h resource unavailable
  614.     02h invalid type
  615.     03h version mismatch
  616.     04h invalid logical unit number
  617.     05h error during ARL processing
  618.     06h no access for user
  619.  0071h    encountered "sosock" error
  620.  0072h    encountered unrecognizable error
  621.  0073h    encountered "sowait" error (extended info via "pi2gerr")
  622.  0074h    encountered invalid type-of-request on "sowait"
  623.  0075h    encountered "sorec" error (extended info via "pi2gerr")
  624.  0076h    encountered "sorec" completion error (ext info via "pi2gerr")
  625.  0077h    encountered connection request
  626.  0078h    encountered unrecognizable data
  627.  0079h    encountered unknown connection ID (ext info via "pi2gerr")
  628.  
  629. Format of argument block for BH=03h,04h:
  630. Offset    Size    Description    (Table 1855)
  631.  00h    WORD    size of data area (max 256)
  632.  02h  N BYTEs    data area
  633.  
  634. Format of argument block for BH=05h:
  635. Offset    Size    Description    (Table 1856)
  636.  00h    WORD    logical unit/device number
  637.  02h    WORD    pointer to WORD buffer for cursor index
  638.  04h    WORD    pointer to BYTE buffer for current field attribute
  639.  
  640. Format of argument block for BH=07h:
  641. Offset    Size    Description    (Table 1857)
  642.  00h    WORD    logical unit/device number
  643.  02h    WORD    ASCII data byte
  644.  04h    WORD    pointer to WORD count of characters which will need updating
  645.  
  646. Format of argument block for BH=08h:
  647. Offset    Size    Description    (Table 1858)
  648.  00h    WORD    logical unit/device number
  649.  02h    WORD    3270 keystroke (see #1859)
  650.  
  651. (Table 1859)
  652. Values for 3270 keystroke:
  653.  0000h    Enter
  654.  0001h    Clear
  655.  0002h    PA1
  656.  0003h    PA2
  657.  0004h    PA3
  658.  0005h    PF1
  659.  ...
  660.  001Ch    PF24
  661.  001Dh    CSELECT (cursor select)
  662.  001Eh    Insert
  663.  001Fh    Delete
  664.  0020h    EOField
  665.  0021h    EINPUT (erase input)
  666.  0022h    Reset
  667.  0023h    Attention
  668.  0024h    SysReq
  669.  0025h    Duplicate
  670.  0026h    Fieldmark
  671.  0027h    Home
  672.  0028h    NextLine
  673.  0029h    Tab
  674.  002Ah    BackTab
  675.  002Bh    cursor up
  676.  002Ch    cursor down
  677.  002Dh    cursor right
  678.  002Eh    cursor left
  679.  002Fh    double cursor right
  680.  0030h    double cursor left
  681.  0031h    PRINT
  682.  0032h    CANCEL
  683.  0033h    Backspace    
  684.  
  685. Format of argument block for BH=0Ah:
  686. Offset    Size    Description    (Table 1860)
  687.  00h    WORD    logical unit/device number
  688.  02h    WORD    screen index
  689.  04h    WORD    pointer to WORD buffer for field length
  690.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  691.  
  692. Format of argument block for BH=0Fh:
  693. Offset    Size    Description    (Table 1861)
  694.  00h    WORD    logical unit/device number
  695.  02h    WORD    clear mask (clear these bits of status after returning status)
  696.  04h    WORD    pointer to WORD buffer for device status (see #1862)
  697.  
  698. Bitfields for device status:
  699. Bit(s)    Description    (Table 1862)
  700.  10    status modified
  701.  9    buffer modified
  702.  8    set cursor
  703.  5    sound alarm
  704.  1-0    size of print line for printer logical units
  705.     00  unformatted line
  706.     01  40-character line
  707.     10  64-character line
  708.     11  80-character line
  709.  
  710. Format of argument block for BH=12h:
  711. Offset    Size    Description    (Table 1863)
  712.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  713.  02h    WORD    pointer to WORD buffer for version number
  714.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  715.  
  716. Format of argument block for BH=13h:
  717. Offset    Size    Description    (Table 1864)
  718.  00h 16 BYTEs    communications port address (see #1835)
  719.  
  720. Format of argument block for BH=14h:
  721. Offset    Size    Description    (Table 1865)
  722.  00h    WORD    logical unit/device number
  723.         0000h attach any free device of the specified type
  724.  02h    WORD    logical unit/device type
  725.         (3270/SNA) 01h, 02h, or 03h
  726.         (3270/BSC) 02h display
  727.         (3270/BSC) 03h printer
  728.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  729.  
  730. Format of argument block for BH=16h:
  731. Offset    Size    Description    (Table 1866)
  732.  00h    WORD    pointer to 18-byte buffer for device block (see #1871)
  733.         first WORD must be set to desired logical unit/device number
  734.  
  735. Format of argument block for BH=17h:
  736. Offset    Size    Description    (Table 1867)
  737.  00h    WORD    logical unit/device number
  738.  02h    WORD    pointer to information block in caller's DS (see #1872)
  739.  
  740. Format of argument block for BH=18h:
  741. Offset    Size    Description    (Table 1868)
  742.  00h    WORD    pointer to WORD buffer for major error code
  743.  02h    WORD    pointer to WORD buffer for minor error code
  744.  
  745. Format of argument block for BH=19h:
  746. Offset    Size    Description    (Table 1869)
  747.  00h    WORD    logical unit/device number
  748.  
  749. Format of argument block for BH=1Ch,1Dh:
  750. Offset    Size    Description    (Table 1870)
  751.  00h    WORD    pointer to profile block in caller's DS (see #1875)
  752.  
  753. Format of device block, argument block for BH=15h:
  754. Offset    Size    Description    (Table 1871)
  755.  00h    WORD    logical unit/device number
  756.  02h    WORD    logical unit/device type
  757.  04h    WORD    display model number
  758.  06h    WORD    numeric checking
  759.  08h    WORD    status line
  760.  0Ah    BYTE    unprotected normal field attribute
  761.  0Bh    BYTE    unprotected intensified field attribute
  762.  0Ch    BYTE    protected normal field attribute
  763.  0Dh    BYTE    protected intensified field attribute
  764.  0Eh    WORD    reserved
  765.  10h    WORD    printer port number
  766.  
  767. Format of information block:
  768. Offset    Size    Description    (Table 1872)
  769.  00h    WORD    device model number
  770.  02h    DWORD    screen buffer pointer
  771.  06h    DWORD    status line pointer (see #1873)
  772.  0Ah    DWORD    reserved
  773.  
  774. Format of status line:
  775. Offset    Size    Description    (Table 1873)
  776.  00h    BYTE    comm line status
  777.         00h inactive
  778.         01h active
  779.  01h    BYTE    activation level
  780.         01h physical unit activated
  781.         02h logical unit also activated
  782.         03h session is bound
  783.  02h    BYTE    data traffic state
  784.         00h inactive
  785.         01h active
  786.  03h    BYTE    screen ownership
  787.         00h SLU->PLU session owns screen
  788.         01h SLU->SSCP session owns screen
  789.  04h    BYTE    keyboard status (see #1874)
  790.  05h    BYTE    insert mode
  791.         01h if in insert mode
  792.  06h    BYTE    numeric
  793.         01h if current screen buffer is numeric only
  794.  07h    BYTE    printer status
  795.         00h printer not assigned
  796.         01h printer is inactive
  797.         02h printer error
  798.         03h currently printing
  799.         04h printer is busy
  800.         05h printer is very busy
  801.  08h    BYTE    printer assignment
  802.  09h    BYTE    maximum size of network name
  803.  0Ah  N BYTEs    ASCIZ network name
  804.     BYTE    maximum size of message window
  805.       M BYTEs    null-terminated message window
  806.     BYTE    code set
  807.         00h EBCDIC
  808.         01h ASCII
  809.       M BYTEs    extended attributes
  810.         01h extended attributes are in effect (stored at screen+1920)
  811.             each extended attribute specifies
  812.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  813.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  814.                   100=green,101=turquoise,110=yellow,111=white
  815.     BYTE    extended color
  816.         01h other than base color is in effect
  817.  
  818. (Table 1874)
  819. Values for keyboard status:
  820.  00h    UNLOCK - ready to accept data
  821.  01h    TIME - aid was struck
  822.  02h    SYSTEM - received response no restore
  823.  03h    FUNCTION - unavailable keyboard function
  824.  04h    INPUT - not currently used
  825.  05h    ENDFIELD - field filled in insert mode
  826.  06h    PROTECTED - attempt to enter in protected field
  827.  07h    NUMERIC - attempt to enter in numeric field
  828.  08h    PROGRAM - error in outbound data stream
  829.  
  830. Format of profile block:
  831. Offset    Size    Description    (Table 1875)
  832.  00h 64 BYTEs    gateway service name
  833.  40h 16 BYTEs    gateway comm port address
  834.  50h    WORD    primary logical unit number
  835.  52h    WORD    secondary logical unit type
  836.  54h    WORD    secondary logical unit number
  837.  56h    WORD    printer assignment
  838.  58h 50 BYTEs    keyboard definitions filename
  839. --------V-610002-----------------------------
  840. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
  841.     AX = 0002h
  842. Desc:    switches off zoom and returns window to its original state
  843. Range:    unknown
  844. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  845.       obtained by calling INT 16/AH=FFh
  846.     not all vendors include the Tseng TSR which supports these functions
  847. SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  848. --------N-610003SF00-------------------------
  849. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
  850.     AX = 0003h subfn 00h
  851.     DS:BX -> argument block (see #1877)
  852. Return: AX = status (see #1876)
  853. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
  854.  
  855. (Table 1876)
  856. Values for VINES function status:
  857.  0000h    successful
  858.  000Bh    invalid session ID
  859.  000Ch    session not active
  860.  000Dh    invalid request type
  861.  000Eh    invalid parameters
  862.  000Fh    out of heap space
  863.  0010h    timeout on send
  864.  0011h    Banyan communications error
  865.  0012h    session not waiting for host
  866.  0013h    session is active
  867.  0014h    duplicate suspend session request
  868.  0015h    no session suspended
  869.  0016h    ring data buffer full
  870.  0017h    printer error encountered
  871.  0018h    Banyan communications error
  872.  0019h    unable to make connection
  873.  001Ah    no ring buffer specified at startup
  874.  001Bh    service is down
  875.  001Ch    invalid service name
  876.  001Dh    service is closed
  877.  001Eh    invalid connection name
  878.  001Fh    max session limit reached for service
  879.  0020h    access rights list for connection/dialout does not include this user
  880.  0021h    service not responding
  881.  0022h    missing telephone number
  882.  
  883. Format of VINES argument block:
  884. Offset    Size    Description    (Table 1877)
  885.  00h    BYTE    session ID (00h)
  886.  01h    BYTE    00h (func "initialize user buffer pointer information area")
  887.  02h    WORD    -> user buffer ptr info area in caller's current DS (see #1878)
  888.  
  889. Format of user buffer ptr info area:
  890. Offset    Size    Description    (Table 1878)
  891.  00h    WORD    flags
  892.         0000h don't read interface's data buffer
  893.         0001h read data buffer
  894.  02h    DWORD    pointer to ring buffer
  895.  06h    WORD    length of ring buffer
  896.  08h    WORD    ring buffer offset to last byte read by caller
  897.  0Ah    DWORD    pointer to WORD containing offset of last byte
  898.           in ring buffer filled
  899.  0Eh    DWORD    pointer to screen buffer
  900.  12h    DWORD    pointer to field containing cursor position
  901.  16h    DWORD    pointer to terminal status area (see #1879)
  902.  
  903. Format of VINES terminal status area:
  904. Offset    Size    Description    (Table 1879)
  905.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  906.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  907.  02h    BYTE    current keypad mode (VT100,VT52 only)
  908.         4Eh ("N") numeric mode
  909.         41h ("A") application mode
  910.  03h  4 BYTEs    current state of LEDs (VT100 only)
  911.         00h off
  912.         01h on
  913.  07h    WORD    line error count
  914.  09h    WORD    primary error code (see #1880)
  915.  0Bh    WORD    secondary error code
  916.  
  917. (Table 1880)
  918. Values for VINES primary error code:
  919.  0000h    no error
  920.  0001h    unable to make connection
  921.  0002h    communications error, restart session
  922.  0003h    async terminal emulation service unavailable
  923.  0004h    lost carrier
  924.  0005h    all matching lines busy
  925.  0006h    no lines defined for connection name
  926.  0007h    no dial lines available on server
  927.  0008h    no matching dial lines available
  928.  0009h    out of heap space
  929.  000Ah    service error encountered
  930.  000Bh    timed out waiting to connect
  931.  000Ch    communications error
  932.  000Dh    communications error
  933.  000Eh    host wants file transferred to/from PC
  934.  000Fh    host software changed session parameter
  935.  0010h    host software changed tap settings
  936.  0011h    host software changed LED indicator
  937.  0012h    host software changed display background (secondary error code 00h for
  938.       white on black, 01h for black on white)
  939.  0013h    host software changed display option (secondary error code 00h for off,
  940.       01h for on)
  941.  0014h    communications error
  942.  0015h    communications error
  943.  0016h    unable to make connection
  944.  0017h    unable to make connection
  945. --------N-610003SF01-------------------------
  946. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
  947.     AX = 0003h subfn 01h
  948.     DS:BX -> argument block (see #1881)
  949. Return: AX = status (see #1876)
  950. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
  951.  
  952. Format of VINES argument block for Function 0003h subfunction 01h:
  953. Offset    Size    Description    (Table 1881)
  954.  00h    BYTE    session ID (00h)
  955.  01h    BYTE    01h (function "send to host")
  956.  02h    BYTE    type
  957.         00h ASCII byte
  958.         01h ASCII string
  959.         02h terminal function code
  960.         03h up arrow
  961.         04h down arrow
  962.         05h left arrow
  963.         06h right arrow
  964.         07h break
  965.  03h  N BYTEs    type-specific info (see #1882)
  966.  
  967. Format of type-specific info:
  968. Offset    Size    Description    (Table 1882)
  969. ---ASCII byte---
  970.  03h    BYTE    byte to send to host
  971. ---ASCII string---
  972.  03h    WORD    length of string
  973.  05h    WORD    pointer to string
  974. ---terminal function code (VT52/VT100)---
  975.  03h    BYTE    function code
  976.         00h keypad 0
  977.         01h keypad 1
  978.         ...
  979.         09h keypad 9
  980.         0Ah keypad -
  981.         0Bh keypad ,
  982.         0Ch keypad .
  983.         0Dh keypad ENTER
  984.         0Eh PF1
  985.         0Fh PF2
  986.         10h PF3
  987.         11h PF4
  988. ---terminal function code (IBM3101)---
  989.  03h    BYTE    function code
  990.         00h PF1
  991.         ...
  992.         07h PF8
  993.         08h Home
  994. --------N-610003SF02-------------------------
  995. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
  996.     AX = 0003h subfn 02h
  997.     DS:BX -> argument block (see #1883)
  998. Return: AX = status (see #1876)
  999. SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
  1000.  
  1001. Format of VINES argument block for Function 0003h subfunction 02h:
  1002. Offset    Size    Description    (Table 1883)
  1003.  00h    BYTE    session ID (00h)
  1004.  01h    BYTE    02h (function "control monitor")
  1005.  02h    BYTE    display flag
  1006.         00h don't display data received from host
  1007.         01h display data
  1008. --------N-610003SF03-------------------------
  1009. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
  1010.     AX = 0003h subfn 03h
  1011.     DS:BX -> argument block (see #1884)
  1012. Return: AX = status (see #1876)
  1013. Desc:    this function permits the caller to freeze/unfreeze the display and
  1014.       the ring buffer
  1015. SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
  1016.  
  1017. Format of VINES argument block for Function 0003h subfunction 03h:
  1018. Offset    Size    Description    (Table 1884)
  1019.  00h    BYTE    session ID (00h)
  1020.  01h    BYTE    03h (function "flow control data")
  1021.  02h    BYTE    flow control flag
  1022.         00h allow characters to be put into display or ring buffer
  1023.         01h don't place any more characters into display or ring buffer
  1024. --------N-610003SF04-------------------------
  1025. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
  1026.     AX = 0003h subfn 04h
  1027.     DS:BX -> argument block (see #1885)
  1028. Return: AX = status (see #1876)
  1029. SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
  1030.  
  1031. Format of VINES argument block for ending active session:
  1032. Offset    Size    Description    (Table 1885)
  1033.  00h    BYTE    session ID (00h)
  1034.  01h    BYTE    04h (function "end active session")
  1035. --------N-610003SF05-------------------------
  1036. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
  1037.     AX = 0003h subfn 05h
  1038.     DS:BX -> argument block (see #1886)
  1039. Return: AX = status (see #1876)
  1040. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
  1041.  
  1042. Format of VINES argument block for setting session parameters:
  1043. Offset    Size    Description    (Table 1886)
  1044.  00h    BYTE    session ID (00h)
  1045.  01h    BYTE    05h (function "set session parameter")
  1046.  02h    BYTE    parameter number (see #1887)
  1047.  03h    BYTE    new parameter value
  1048.  
  1049. (Table 1887)
  1050. Values for parameter number:
  1051.  00h    line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  1052.           05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
  1053.  01h    parity (00h=none, 01h=odd, 02h=even)
  1054.  02h    duplex (00h=full, 01h=half)
  1055.  03h    character size (00h=7 bits, 01h=8 bits)
  1056.  04h    stop bits (00h=1, 01h=2)
  1057.  05h    XON/XOFF flow control (00h=no, 01h=yes)
  1058.  07h    intercharacter delay in tenths of a second
  1059.  08h    interline delay in tenths of a second
  1060.  09h    auto linefeed (00h=no, 01h=yes)
  1061.  0Ah    filter control characters (00h=no, 01h=yes)
  1062.  0Bh    terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  1063.  0Ch    auto wrap (00h=no, 01h=yes)
  1064.  0Dh    cursor shape (00h=underscore, 01h=block)
  1065.  0Eh    character set (00h=UK, 01h=US ASCII)
  1066.  0Fh    printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  1067. --------N-610003SF06-------------------------
  1068. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
  1069.     AX = 0003h subfn 06h
  1070.     DS:BX -> argument block (see #1888)
  1071. Return: AX = status (see #1876)
  1072. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
  1073.  
  1074. Format of VINES argument block for getting session parameters:
  1075. Offset    Size    Description    (Table 1888)
  1076.  00h    BYTE    session ID (00h)
  1077.  01h    BYTE    06h (function "get session parameter")
  1078.  02h    BYTE    parameter number (see #1887)
  1079.  03h    BYTE    (return) current parameter value
  1080. --------N-610003SF07-------------------------
  1081. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
  1082.     AX = 0003h subfn 07h
  1083.     DS:BX -> argument block (see #1889)
  1084. Return: AX = status (see #1876)
  1085. SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
  1086.  
  1087. Format of VINES argument block for setting tab settings:
  1088. Offset    Size    Description    (Table 1889)
  1089.  00h    BYTE    session ID (00h)
  1090.  01h    BYTE    07h (function "set tab settings")
  1091.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1092.           each byte = 00h if no tab, 01h if tab at that position
  1093. --------N-610003SF08-------------------------
  1094. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
  1095.     AX = 0003h subfn 08h
  1096.     DS:BX -> argument block (see #1890)
  1097. Return: AX = status (see #1876)
  1098. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
  1099.  
  1100. Format of VINES argument block for getting tab settings:
  1101. Offset    Size    Description    (Table 1890)
  1102.  00h    BYTE    session ID (00h)
  1103.  01h    BYTE    08h (function "get tab settings")
  1104.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1105.         each byte set to 00h if no tab, 01h if tab at that position
  1106. --------N-610003SF09-------------------------
  1107. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
  1108.     AX = 0003h subfn 09h
  1109.     DS:BX -> argument block (see #1891)
  1110. Return: AX = status (see #1876)
  1111. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
  1112.  
  1113. Format of VINES argument block for Function 0003h subfunction 09h:
  1114. Offset    Size    Description    (Table 1891)
  1115.  00h    BYTE    session ID (00h)
  1116.  01h    BYTE    09h (function "refresh emulation screen")
  1117. --------N-610003SF0A-------------------------
  1118. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
  1119.     AX = 0003h subfn 0Ah
  1120.     DS:BX -> argument block (see #1892)
  1121. Return: AX = status (see #1876)
  1122. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
  1123.  
  1124. Format of VINES argument block:
  1125. Offset    Size    Description    (Table 1892)
  1126.  00h    BYTE    session ID (00h)
  1127.  01h    BYTE    0Ah (function "suspend session temporarily")
  1128.  02h    WORD    size of session information to be saved
  1129.  04h    WORD    pointer to buffer in caller's DS
  1130. --------N-610003SF0B-------------------------
  1131. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
  1132.     AX = 0003h subfn 0Bh
  1133.     DS:BX -> argument block (see #1893)
  1134. Return: AX = status (see #1876)
  1135. SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
  1136.  
  1137. Format of VINES argument block:
  1138. Offset    Size    Description    (Table 1893)
  1139.  00h    BYTE    session ID (00h)
  1140.  01h    BYTE    0Bh (function "restore previously suspended session")
  1141.  02h    WORD    size of buffer into which session info is restored
  1142.  04h    WORD    pointer to buffer in caller's DS
  1143. --------N-610003SF0C-------------------------
  1144. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
  1145.     AX = 0003h subfn 0Ch
  1146.     DS:BX -> argument block (see #1894)
  1147. Return: AX = status (see #1876)
  1148. SeeAlso: AX=0003h/SF=00h
  1149.  
  1150. Format of VINES argument block:
  1151. Offset    Size    Description    (Table 1894)
  1152.  00h    BYTE    session ID (00h)
  1153.  01h    BYTE    0Ch (function "set state of scroll lock checking")
  1154.  02h    BYTE    check_scroll_lock flag
  1155.         00h off
  1156.         01h on (display of host data stopped while ScrollLock on)
  1157. --------N-610003SF0D-------------------------
  1158. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
  1159.     AX = 0003h subfn 0Dh
  1160.     DS:BX -> argument block (see #1895)
  1161. Return: AX = status (see #1876)
  1162. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
  1163.  
  1164. Format of VINES argument block:
  1165. Offset    Size    Description    (Table 1895)
  1166.  00h    BYTE    session ID (00h)
  1167.  01h    BYTE    0Dh (function "exit emulation")
  1168. --------N-610003SF0E-------------------------
  1169. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
  1170.     AX = 0003h subfn 0Eh
  1171.     DS:BX -> argument block (see #1896)
  1172. Return: AX = status (see #1876)
  1173. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
  1174.  
  1175. Format of VINES argument block:
  1176. Offset    Size    Description    (Table 1896)
  1177.  00h    BYTE    session ID (00h)
  1178.  01h    BYTE    0Eh (function "interrupt on character from host")
  1179.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1180.  06h    DWORD    stack pointer to use when call is made
  1181. --------N-610003SF0F-------------------------
  1182. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
  1183.     AX = 0003h subfn 0Fh
  1184.     DS:BX -> argument block (see #1897)
  1185. Return: AX = status (see #1876)
  1186. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
  1187.  
  1188. Format of VINES argument block:
  1189. Offset    Size    Description    (Table 1897)
  1190.  00h    BYTE    session ID (00h)
  1191.  01h    BYTE    0Fh (function "start a session")
  1192.  02h    WORD    pointer to information area in caller's current DS (see #1898)
  1193.  
  1194. Format of VINES information area:
  1195. Offset    Size    Description    (Table 1898)
  1196.  00h    WORD    length of service name
  1197.  02h    WORD    pointer to service name in caller's DS
  1198.  04h    BYTE    type of connection (00h=connection name, 01h=dialout)
  1199.  05h    WORD    length of connection name/telephone number
  1200.  07h    WORD    pointer to connection name/telephone number
  1201. --------N-610003SF10-------------------------
  1202. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
  1203.     AX = 0003h subfn 10h
  1204.     DS:BX -> argument block (see #1899)
  1205. Return: AX = status (see #1876)
  1206. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
  1207.  
  1208. Format of VINES argument block:
  1209. Offset    Size    Description    (Table 1899)
  1210.  00h    BYTE    session ID (00h)
  1211.  01h    BYTE    10h (function "start/stop printing of data received from host)
  1212.  02h    WORD    print capture flag (00h=off, 01h=on)
  1213. --------N-610003SF11-------------------------
  1214. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
  1215.     AX = 0003h subfn 11h
  1216.     DS:BX -> argument block (see #1900)
  1217. Return: AX = status (see #1876)
  1218. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  1219.  
  1220. Format of VINES argument block:
  1221. Offset    Size    Description    (Table 1900)
  1222.  00h    BYTE    session ID (00h)
  1223.  01h    BYTE    11h (function "get file transfer parameters")
  1224.  02h    WORD    pointer to info area in caller's current DS (see #1901)
  1225.  
  1226. Format of VINES info area:
  1227. Offset    Size    Description    (Table 1901)
  1228.  00h    BYTE    protocol flag (00h none, 01h Kermit)
  1229.  01h    BYTE    direction flag (00h send, 01h receive)
  1230.  02h    BYTE    length of null-terminated PC filename
  1231.  03h    DWORD    pointer to null-terminated PC filename
  1232.  07h    BYTE    length of null-terminated host filename
  1233.  08h    DWORD    pointer to null-terminated host filename
  1234. --------N-610003SF12-------------------------
  1235. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
  1236.     AX = 0003h subfn 12h
  1237.     DS:BX -> argument block (see #1902)
  1238. Return: AX = status (see #1876)
  1239. SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
  1240.  
  1241. Format of VINES argument block:
  1242. Offset    Size    Description    (Table 1902)
  1243.  00h    BYTE    session ID (00h)
  1244.  01h    BYTE    12h (function "get connection information")
  1245.  02h    WORD    offset of buffer for connection information (see #1903)
  1246.  
  1247. Format of VINES connection information:
  1248. Offset    Size    Description    (Table 1903)
  1249.  00h    WORD    length of service name (returned)
  1250.  02h    WORD    pointer to 64-byte buffer for service name
  1251.  04h    BYTE    type of connection
  1252.         00h connection name
  1253.         01h dialout
  1254.  05h    WORD    length of connection name/telephone number
  1255.  07h    WORD    pointer to 64-byte buffer for name/telno
  1256.  09h    BYTE    server line number being used (returned)
  1257. --------N-610003SF13-------------------------
  1258. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
  1259.     AX = 0003h subfn 13h
  1260.     DS:BX -> argument block (see #1904)
  1261. Return: AX = status (see #1876)
  1262. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
  1263.  
  1264. Format of VINES argument block:
  1265. Offset    Size    Description    (Table 1904)
  1266.  00h    BYTE    session ID (00h)
  1267.  01h    BYTE    13h (function "start/stop tracing data traffic in session")
  1268.  02h    BYTE    trace flag (00h=off, 01h=on)
  1269. --------N-610003SF14-------------------------
  1270. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
  1271.     AX = 0003h subfn 14h
  1272.     DS:BX -> argument block (see #1905)
  1273. Return: AX = status (see #1876)
  1274. SeeAlso: AX=0003h/SF=0Eh
  1275.  
  1276. Format of VINES argument block:
  1277. Offset    Size    Description    (Table 1905)
  1278.  00h    BYTE    session ID (00h)
  1279.  01h    BYTE    14h (function "interrupt on message from host")
  1280.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1281.  06h    DWORD    stack pointer to use when call is made
  1282. --------N-610003SF15-------------------------
  1283. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
  1284.     AX = 0003h subfn 15h
  1285.     DS:BX -> argument block (see #1906)
  1286. Return: AX = status (see #1876)
  1287. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  1288.  
  1289. Format of VINES argument block:
  1290. Offset    Size    Description    (Table 1906)
  1291.  00h    BYTE    session ID (00h)
  1292.  01h    BYTE    15h (function "reset error")
  1293. --------V-610003-----------------------------
  1294. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
  1295.     AX = 0003h
  1296. Return: AX = zoom factor
  1297. Desc:    returns the current zoom factor
  1298. Range:    unknown
  1299. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  1300.       obtained by calling INT 16/AH=FFh
  1301.     not all vendors include the Tseng TSR which supports these functions
  1302. SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1303. --------N-610004SF0008-----------------------
  1304. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  1305.     AX = 0004h subfn 0008h
  1306.     DS:DX -> request block (see #1907)
  1307. Return: AX = status
  1308.         0000h server ID returned in request block
  1309.         000Fh invalid drive
  1310.         0015h drive not ready
  1311.  
  1312. Format of VINES request block for getting server serial number:
  1313. Offset    Size    Description    (Table 1907)
  1314.  00h    WORD    0008h
  1315.  02h    WORD    drive number (0=default, 1=A, ...)
  1316.  04h  6 BYTEs    buffer for server ID
  1317. --------V-610004-----------------------------
  1318. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
  1319.     AX = 0004h
  1320. Range:    unknown
  1321. Notes:    Specify Mode is enabled by hot key (seeAlso below), and allows
  1322.       panning and zooming via the numeric keypad.
  1323.     INT 61 is the default interrupt; the actual interrupt number can be
  1324.       obtained by calling INT 16/AH=FFh
  1325.     not all vendors include the Tseng TSR which supports these functions
  1326. SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1327. --------N-610005-----------------------------
  1328. INT 61 - Banyan VINES - PRINTER CONTROL
  1329.     AX = 0005h
  1330.     DS:DX -> request block (see #1908)
  1331. Return: AX = status
  1332.         0000h successful
  1333.         0001h network software not installed or incompatible
  1334. SeeAlso: INT 2F/AX=D702h
  1335.  
  1336. Format of VINES request block for printer control:
  1337. Offset    Size    Description    (Table 1908)
  1338.  00h    WORD    function
  1339.         0201h "endspool" all data for a print job has been sent
  1340.         0205h "getactive" get currently active printer port
  1341.  02h    WORD    number of active port (1-3)
  1342.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  1343.  06h    WORD    0000h
  1344. --------V-610005-----------------------------
  1345. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  1346.     AX = 0005h
  1347.     BX:CX -> buffer for window parameters (see #1909)
  1348. Range:    unknown
  1349. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  1350.       obtained by calling INT 16/AH=FFh
  1351.     not all vendors include the Tseng TSR which supports these functions
  1352. SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
  1353. SeeAlso: INT 16/AH=FFh"OPTIMA"
  1354.  
  1355. Format of Optima 1024 window parameters:
  1356. Offset    Size    Description    (Table 1909)
  1357.  00h    WORD    X start of zoom window
  1358.  02h    WORD    Y start of zoom window
  1359.  04h    WORD    X end of zoom window
  1360.  06h    WORD    Y end of zoom window
  1361.  08h    WORD    current zoom factor
  1362.  0Ah    WORD    zoom offset start X
  1363.  0Ch    WORD    zoom offset start Y
  1364. --------V-610006-----------------------------
  1365. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
  1366.     AX = 0006h
  1367.     BX:CX -> zoom window description (see #1910)
  1368. Range:    unknown
  1369. Notes:    width of zoom window must be a multiple of the pixel replication (zoom)
  1370.       factor
  1371.     INT 61 is the default interrupt; the actual interrupt number can be
  1372.       obtained by calling INT 16/AH=FFh
  1373.     not all vendors include the Tseng TSR which supports these functions
  1374. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
  1375. SeeAlso: INT 16/AH=FFh"OPTIMA"
  1376.  
  1377. Format of Optima 1024 zoom window description:
  1378. Offset    Size    Description    (Table 1910)
  1379.  00h    WORD    X start of zoom window
  1380.  02h    WORD    Y start of zoom window
  1381.  04h    WORD    X end of zoom window
  1382.  06h    WORD    Y end of zoom window
  1383. --------V-610007-----------------------------
  1384. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
  1385.     AX = 0007h
  1386. Return: AX = current state (0000h/0001h)
  1387. Desc:    returns the current toggle state of the application (END) key in
  1388.       specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
  1389.       calls INT 61/AX=0001h every time the crosshair cursor moves.
  1390. Notes:    In specify mode, the END key has been reserved for applications.
  1391.     INT 61 is the default interrupt; the actual interrupt number can be
  1392.       obtained by calling INT 16/AH=FFh
  1393.     not all vendors include the Tseng TSR which supports these functions
  1394. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
  1395. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A/AX=0001h"AutoCAD"
  1396. --------N-610007BX0002-----------------------
  1397. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  1398.     AX = 0007h
  1399.     BX = 0002h
  1400.     DS:DX -> StreetTalk service name
  1401.     DS:DI -> port record block (see #1912)
  1402. Return: AX = status (see #1911)
  1403. SeeAlso: AX=0007h/BX=0004h
  1404.  
  1405. (Table 1911)
  1406. Values for VINES function status:
  1407.  0000h    successful
  1408.  0001h    PC network software not installed or incompatible
  1409.  03E9h    incorrect name syntax
  1410.  03EAh    organization name too long
  1411.  03EBh    group name too long
  1412.  03ECh    item name too long
  1413.  03EDh    StreetTalk name too long
  1414.  03F3h    organization not found
  1415.  03F4h    group not found
  1416.  03F5h    StreetTalk name not found
  1417.  03F8h    not a StreetTalk name
  1418.  0409h    modify access denied
  1419.  040Dh    appropriate StreetTalk name unavailable
  1420.  
  1421. Format of VINES port record block:
  1422. Offset    Size    Description    (Table 1912)
  1423.  00h    WORD    number of 17-byte elements
  1424.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  1425.         (see #1835 for port format)
  1426. --------N-610007BX0004-----------------------
  1427. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  1428.     AX = 0007h
  1429.     BX = 0004h
  1430.     DS:DX -> StreetTalk name of service
  1431.     DS:DI -> port record block (see #1913)
  1432. Return: AX = status (see #1911)
  1433. SeeAlso: AX=0007h/BX=0002h
  1434.  
  1435. Format of VINES port record block:
  1436. Offset    Size    Description    (Table 1913)
  1437.  00h    WORD    number of 17-byte elements
  1438.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  1439.         (see #1835 for port format)
  1440. --------N-610007BX0005-----------------------
  1441. INT 61 - Banyan VINES - GET USER NAME
  1442.     AX = 0007h
  1443.     BX = 0005h
  1444.     DS:DX -> 64-byte buffer for user's StreetTalk name
  1445. Return: AX = status
  1446.         0000h successful
  1447.         0001h network software not installed or incompatible
  1448. Note:    if no user logged in, first byte of returned name will be 00h
  1449. SeeAlso: AX=0007h/BX=0007h
  1450. --------N-610007BX0006-----------------------
  1451. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  1452.     AX = 0007h
  1453.     BX = 0006h
  1454.     SI = error code (>100)
  1455.     DS:DX -> 80-byte buffer for error text
  1456. Return: AX = status
  1457.         0000h successful
  1458.         0001h network software not installed or incompatible
  1459. --------N-610007BX0007-----------------------
  1460. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1461.     AX = 0007h
  1462.     BX = 0007h
  1463.     DS:DX -> NiceName block (see #1914)
  1464. Return: AX = status (see #1911)
  1465. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
  1466.  
  1467. Format of VINES NiceName block:
  1468. Offset    Size    Description    (Table 1914)
  1469.  00h    WORD    type of name
  1470.         0064h (100) organization
  1471.         00C8h (200) group
  1472.         012Ch (300) item
  1473.  02h    WORD    pointer to ASCIZ input name
  1474.  04h    WORD    pointer to 64-byte buffer for output name
  1475. --------N-610007BX0008-----------------------
  1476. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  1477.     AX = 0007h
  1478.     BX = 0008h
  1479.     DS:DX -> enumerate block (see #1915)
  1480. Return: AX = status
  1481.         0000h successful
  1482.         0411h all matching names have been returned
  1483.         0412h some groups unavailable, all available matches returned
  1484. Note:    each program using this call should continue until a nonzero status
  1485.       is returned; otherwise, some resources will not be freed for several
  1486.       hours
  1487. SeeAlso: AX=0007h/BX=0007h
  1488.  
  1489. Format of VINES enumerate block:
  1490. Offset    Size    Description    (Table 1915)
  1491.  00h    WORD    return code
  1492.  02h    WORD    pointer to pattern string
  1493.  04h    WORD    enumerate type
  1494.         0064h (100) organization
  1495.         00C8h (200) group
  1496.         012Ch (300) item
  1497.  06h    WORD    enumerate class
  1498.         0000h unspecified (return all matching items)
  1499.         0001h user names
  1500.         0002h service names
  1501.         0003h list names
  1502.         0004h nicknames
  1503.  08h    WORD    pointer to category criteria block (see #1916) or 0
  1504.  0Ah    WORD    pointer to array of 64-byte returned names
  1505.  0Ch    WORD    number of names returned
  1506.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  1507.           call)
  1508.  
  1509. Format of category criteria block:
  1510. Offset    Size    Description    (Table 1916)
  1511.  00h    WORD    exclude flag
  1512.         0000h return only items with the specified categories
  1513.         0001h return all items except those with the given categories
  1514.  02h    WORD    number of categories
  1515.  04h    WORD    category 1 value
  1516.  06h    WORD    category 2 value
  1517.         ...
  1518.  
  1519. (Table 1917)
  1520. Values for common VINES service categories:
  1521.  0002h    file service
  1522.  0003h    print service
  1523.  0004h    mail service
  1524.  0005h    StreetTalk
  1525.  0006h    time service
  1526.  0008h    semaphore service
  1527.  0009h    3270/SNA service
  1528.  000Ah    asynchronous terminal emulation service
  1529.  000Ch    NETBIOS service
  1530.  000Dh    PC-based service
  1531. --------V-610008-----------------------------
  1532. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
  1533.     AX = 0008h
  1534.     BX = X start of zoom offset
  1535.     CX = Y start of zoom offset
  1536. Desc:    specifies the first byte of video memory to appear in the zoom window
  1537. Range:    unknown
  1538. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  1539.       obtained by calling INT 16/AH=FFh
  1540.     not all vendors include the Tseng TSR which supports these functions
  1541. SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1542. --------N-610008BX0002-----------------------
  1543. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  1544.     AX = 0008h
  1545.     BX = 0002h
  1546.     CX = message display flags (see #1918)
  1547.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  1548. Return: AX = status
  1549.         0000h successful
  1550.         000Bh message display function currently busy
  1551.         000Ch message queue full
  1552. Note:    queues up to three messages to be displayed on the bottom line
  1553. SeeAlso: AX=0008h/BX=0003h
  1554.  
  1555. Bitfields for VINES message display flags:
  1556. Bit(s)    Description    (Table 1918)
  1557.  0    message will remain on screen until user presses ^X
  1558.  1    ring bell after displaying message
  1559.  2    blink
  1560. --------N-610008BX0003-----------------------
  1561. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  1562.     AX = 0008h
  1563.     BX = 0003h
  1564.     DS:DX -> request block (see #1919)
  1565. Return: AX = status
  1566.         0000h successful
  1567.         0001h network software not installed or incompatible
  1568. Notes:    message handler should not call BIOS or DOS functions, and should
  1569.       either call next handler or simply return
  1570.     to stop intercepting messages, set prev and next request blocks to
  1571.       point at each other
  1572. SeeAlso: AX=0008h/BX=0002h
  1573.  
  1574. Format of VINES request block for 25-th line messages:
  1575. Offset    Size    Description    (Table 1919)
  1576.  00h    DWORD    pointer to user-written message handler
  1577.  04h    DWORD    pointer to next request block (filled in by VINES)
  1578.  08h    DWORD    pointer to previous request block (filled in by VINES)
  1579.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see #1920)
  1580.  
  1581. Format of message storage area:
  1582. Offset    Size    Description    (Table 1920)
  1583.  00h 16 BYTEs    IPC port of message sender (see #1835)
  1584.  10h    BYTE    message flags
  1585.  11h    WORD    reserved
  1586.  13h    BYTE    length of message
  1587.  14h 80 BYTEs    message text
  1588. --------N-61000A-----------------------------
  1589. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  1590.     AX = 000Ah
  1591. Note:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  1592.       which is loaded second.  The first interface loaded will use AX=0002h
  1593. SeeAlso: INT 61/AX=0002h
  1594. --------N-6101-------------------------------
  1595. INT 61 - Banyan VINES - CHECK SERVICE
  1596.     AH = 01h
  1597.     AL = service ID (see #1921)
  1598. Return: AX = status
  1599.         0000h installed
  1600.         0001h not installed
  1601.         0002h invalid ID
  1602.  
  1603. (Table 1921)
  1604. Values for VINES service ID:
  1605.  01h    communications
  1606.  02h    primary 3270 emulation
  1607.  03h    async terminal emulation
  1608.  04h    file deflection
  1609.  07h    StreetTalk
  1610.  08h    environment
  1611.  0Ah    secondary 3270 emulation
  1612.  0Bh    semaphore service
  1613.  0Ch    3270 emulation active status
  1614.  0Dh    3270 keyboard interrupt simulator
  1615. --------N-6101--BX0000-----------------------
  1616. INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
  1617.     AH = 01h
  1618.     BX = 0000h
  1619.     DH = tag number
  1620.     DL = device number
  1621.     DS:SI -> buffer to send to kernel
  1622.     ES:DI -> integer containing size of buffer
  1623. Return: CF clear if successful
  1624.     CF set on error
  1625.         AX = error code (see INT 61"PC/TCP")
  1626. Range:    INT 20 to INT E0, selected by configuration
  1627. Notes:    there are a large number of tags available; the items returned
  1628.       all refer to local kernel configuration, and are not needed in
  1629.       normal use.
  1630.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1631. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=02"PC/TCP"
  1632. --------N-6102-------------------------------
  1633. INT 61 - Banyan VINES - GET REVISION NUMBER
  1634.     AH = 02h
  1635.     DS:DX -> 2-byte buffer for result
  1636. Return: AX = 0000h installed
  1637.         DS:DX buffer contains revision number as
  1638.         10000d * major_ver + 100d * minor_ver + patch_revision
  1639. --------N-6102--BX0000-----------------------
  1640. INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
  1641.     AH = 02h
  1642.     BX = 0000h
  1643.     DH = tag number
  1644.     DL = device number
  1645.     DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
  1646.     ES:DI -> integer containing size of buffer
  1647. Return: CF clear if successful
  1648.         Data loaded into specified buffer, and size value altered
  1649.     CF set on error
  1650.         AX = error code (see INT 61"PC/TCP")
  1651. Range:    INT 20 to INT E0, selected by configuration
  1652. Notes:    there are a large number of tags available; the items returned
  1653.       all refer to local kernel configuration, and are not needed in
  1654.       normal use.
  1655.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1656. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  1657. --------N-6105-------------------------------
  1658. INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
  1659.     AH = 05h
  1660.     BX = network descriptor
  1661. Return: CF clear if successful
  1662.         DX:AX = Internet address of ND
  1663.     CF set on error
  1664.         AX = error code (see INT 61"PC/TCP")
  1665. Range:    INT 20 to INT E0, selected by configuration
  1666. Notes:    the installation check consists of testing for the signature "TCPTSR"
  1667.       three bytes beyond the start of the interrupt handler
  1668. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
  1669. SeeAlso: INT 63/AH=25h"BW-TCP"
  1670. --------N-6106-------------------------------
  1671. INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  1672.     AH = 06h
  1673.     BX = network descriptor (must be allocated and open)
  1674.     DS:SI -> 38-byte buffer for interface statistics (see #1922)
  1675. Return: CF clear if successful
  1676.         buffer filled
  1677.     CF set on error
  1678.         AX = error code (see INT 61"PC/TCP")
  1679. Desc:    returns the statistics relevant to the particular network interface
  1680.        used by the specified network descriptor
  1681. Range:    INT 20 to INT E0, selected by configuration
  1682. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
  1683.  
  1684. Format of PC/TCP interface statistics:
  1685. Offset    Size    Description    (Table 1922)
  1686.  00h    WORD    interface class (e.g. 802.3)
  1687.  02h    WORD    type (manufacturer) of interface
  1688.  04h    WORD    interface number
  1689.  06h    DWORD    (big-endian) IP address of interface
  1690.  0Ah    DWORD    subnet mask
  1691.  0Eh    WORD    0001h if interface is up
  1692.  10h    DWORD    total packets received
  1693.  14h    DWORD    total packets sent
  1694.  18h    DWORD    receive errors
  1695.  1Ch    DWORD    send errors
  1696.  20h    WORD    length of local net address (e.g. 0006h for Ethernet)
  1697.  22h    DWORD    pointer to local net address
  1698. --------N-6107-------------------------------
  1699. INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
  1700.     AH = 07h
  1701.     BX = local network descriptor
  1702. Return: CF clear if successful
  1703.         AX = global network descriptor
  1704.     CF set on error
  1705.         AX = error code (see INT 61"PC/TCP")
  1706. Notes:    the new network descriptor can be accessed from all processes and is
  1707.       independent of DOS
  1708.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1709. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1710. SeeAlso: INT 61/AH=29h
  1711. --------N-6108-------------------------------
  1712. INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
  1713.     AH = 08h
  1714.     BX = network descriptor
  1715. Return: CF clear if successful
  1716.         AX = 0000h (BWPCTCP shim)
  1717.     CF set on error
  1718.         AX = error code (see INT 61"PC/TCP")
  1719. Range:    INT 20 to INT E0, selected by configuration
  1720. Note:    the descriptor will be closed and resources released.  If a stream
  1721.       descriptor, the protocol (FIN etc) is completed unless the
  1722.       non-blocking option has been set.
  1723. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
  1724. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1725. --------N-6109-------------------------------
  1726. INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
  1727.     AH = 09h
  1728. Return: CF clear
  1729. Range:    INT 20 to INT E0, selected by configuration
  1730. Notes:    this call performs function 08h on every non-global network descriptor.
  1731.       Global descriptors must be released individually.
  1732. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1733. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1734. --------N-610A-------------------------------
  1735. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  1736.     AH = 0Ah
  1737.     ???
  1738. Return: ???
  1739. Notes:    this function is described as "unused" in the v2.05 and v2.2
  1740.       documentation
  1741.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1742. SeeAlso: AH=0Bh
  1743. --------N-610B-------------------------------
  1744. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  1745.     AH = 0Bh
  1746.     ???
  1747. Return: ???
  1748. Range:    INT 20 to INT E0, selected by configuration
  1749. Notes:    this function is described as "unused" in the v2.05 and v2.2
  1750.       documentation
  1751.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1752. SeeAlso: AH=0Ah
  1753. --------N-610C-------------------------------
  1754. INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
  1755.     AH = 0Ch
  1756.     BX = network descriptor or one of the following:
  1757.         FFFCh for kernel ICMP statistics
  1758.         FFFDh for kernel UDP statistics
  1759.         FFFEh for kernel IP statistics
  1760.         FFFFh for kernel TCP statistics
  1761.     DS:DX -> 64-byte buffer
  1762. Return: CF clear if successful
  1763.         buffer filled
  1764.     CF set on error
  1765.         AX = error code (see INT 61"PC/TCP")
  1766. Notes:    the fields filled in for a network descriptor depend on the protocol
  1767.       family used by that descriptor's connection
  1768.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1769. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1770.  
  1771. Format of PC/TCP kernel TCP statistics:
  1772. Offset    Size    Description    (Table 1923)
  1773.  00h 16 BYTEs    unused
  1774.  10h    DWORD    bytes sent
  1775.  14h    DWORD    bytes received
  1776.  18h  8 BYTEs    unused
  1777.  20h    DWORD    packets sent
  1778.  24h    DWORD    packets received
  1779.  28h    DWORD    bad checksums
  1780.  2Ch    DWORD    count of window ignored by remote
  1781.  30h    DWORD    timeouts
  1782.  34h    DWORD    resets
  1783.  38h    DWORD    duplicate packets
  1784.  3Ch    DWORD    retransmits
  1785.  
  1786. Format of PC/TCP kernel IP statistics:
  1787. Offset    Size    Description    (Table 1924)
  1788.  00h  8 BYTEs    unused
  1789.  08h    DWORD    invalid IP header length errors
  1790.  0Ch    DWORD    protocol errors (unwanted packets)
  1791.  10h    DWORD    duplicate fragments received
  1792.  14h    DWORD    bad fragments received
  1793.  18h    DWORD    security errors
  1794.  1Ch    DWORD    count of bad IP addresses received
  1795.  20h    DWORD    packets sent
  1796.  24h    DWORD    packets received
  1797.  28h    DWORD    bad checksums received
  1798.  2Ch    DWORD    total IP protocol errors
  1799.  30h    DWORD    fragmentation errors
  1800.  34h    DWORD    IP packets discarded + bad security + bad fragments
  1801.  38h    DWORD    fragments received
  1802.  3Ch  4 BYTEs    unused
  1803.  
  1804. Format of PC/TCP kernel UDP statistics:
  1805. Offset    Size    Description    (Table 1925)
  1806.  00h 28 BYTEs    unused
  1807.  1Ch    DWORD    packets dropped for lack of buffers
  1808.  20h    DWORD    packets sent
  1809.  24h    DWORD    packets received
  1810.  28h    DWORD    bad checksums
  1811.  2Ch    DWORD    port not listening errors
  1812.  30h  4 BYTEs    unused
  1813.  34h    DWORD    truncated receives
  1814.  38h  8 BYTEs    unused
  1815.  
  1816. Format of PC/TCP kernel ICMP statistics:
  1817. Offset    Size    Description    (Table 1926)
  1818.  00h    DWORD    "TimeEx" sent
  1819.  04h    DWORD    "TimeEx" received
  1820.  08h    DWORD    "ParamProb" sent
  1821.  0Ch    DWORD    "ParamProb" received
  1822.  10h    DWORD    redirects received
  1823.  14h    DWORD    source quenches received
  1824.  18h    DWORD    ICMP Echo Requests ("ping") sent
  1825.  1Ch    DWORD    ICMP Echo Requests received
  1826.  20h    DWORD    packets sent
  1827.  24h    DWORD    packets received
  1828.  28h    DWORD    bad packets received
  1829.  2Ch    DWORD    "DestUn" received
  1830.  30h    DWORD    packet send errors
  1831.  34h    DWORD    "DestUn" sent
  1832.  38h    DWORD    ICMP Echo replies received
  1833.  3Ch    DWORD    ICMP Echo replies sent
  1834. --------N-610D-------------------------------
  1835. INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
  1836.     AH = 0Dh
  1837.     BX = possible network descriptor
  1838. Return: CF clear if valid
  1839.     CF set on error
  1840.         AX = error code (see INT 61"PC/TCP")
  1841. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1842. SeeAlso: INT 61/AH=22h
  1843. --------N-610E-------------------------------
  1844. INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
  1845.     AH = 0Eh
  1846.     BX = maximum value of network descriptor for which to return info
  1847.     DS:DX -> 32-bit (max) array of bit flags for read readiness
  1848.     ES:DI -> 32-bit (max) array of bit flags for write readiness
  1849. Return: CF clear
  1850. Range:    INT 20 to INT E0, selected by configuration
  1851. Notes:    bits in the DS:DX buffer are set if the corresponding network
  1852.       descriptor may be read without blocking; bits in the ES:DI buffer
  1853.       are set if the corresponding network descriptor may be written
  1854.       without blocking.  This implies that the network descriptor has
  1855.       opened correctly and the protocol initialized.
  1856.     the installation check consists of testing for the signature "TCPTSR"
  1857.       three bytes beyond the start of the interrupt handler
  1858. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1859. --------N-610F-------------------------------
  1860. INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
  1861.     AH = 0Fh
  1862. Return: CF clear
  1863.     AX = version (AH = major, AL = minor)
  1864.     BX = patch level
  1865. Notes:    patch levels are no longer used starting with version 2.10; instead,
  1866.       the minor version level is incremented.
  1867.     Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
  1868.       set BX
  1869. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1870. --------N-6110-------------------------------
  1871. INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
  1872.     AH = 10h
  1873. Return: CF clear if successful
  1874.     CF set on error
  1875.         AX = error code (see INT 61"PC/TCP")
  1876. Range:    INT 20 to INT E0, selected by configuration
  1877. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1878. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1879. --------N-6111-------------------------------
  1880. INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
  1881.     AH = 11h
  1882. Return: CF clear
  1883.     AX = previous state
  1884.         0000h async calls were already disabled
  1885.         else  async calls were enabled
  1886. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  1887. --------N-6112-------------------------------
  1888. INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
  1889.     AH = 12h
  1890. Return: CF clear
  1891.     AX = previous state
  1892.         0000h async calls were disabled
  1893.         else  async calls were already enabled
  1894. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  1895. --------N-6113-------------------------------
  1896. INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
  1897.     AH = 13h
  1898.     BX = network descriptor (FFFFh for automatic net_getdesc)
  1899.     DX = protocol (see #1927)
  1900.     DS:SI -> buffer for "addr" structure (see #1928)
  1901. Return: CF clear if successful
  1902.         AX = network descriptor used or allocated
  1903.     CF set on error
  1904.         AX = error code (see INT 61"PC/TCP")
  1905. Notes:    resets the connection with AH=19h in various cases
  1906.     will wait for protocol on stream connections unless non-blocking was
  1907.       set with AH=20h
  1908. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
  1909. SeeAlso: INT 63/AH=14h"BW-TCP"
  1910.  
  1911. (Table 1927)
  1912. Values for PC/TCP protocol:
  1913.  0001h    raw net (undocumented)
  1914.  0002h    raw IP
  1915.  0003h    datagram (UDP)
  1916.  0004h    stream (TCP)
  1917.  0005h    raw ICMP
  1918.  
  1919. Format of structure "addr":
  1920. Offset    Size    Description    (Table 1928)
  1921.  00h    DWORD    Internet address (network order)
  1922.  04h    WORD    remote socket number (network order)
  1923.  06h    WORD    local socket number (network order) 0000h means "you choose"
  1924.  08h    BYTE    protocol (see #1927)
  1925. --------N-6114-------------------------------
  1926. INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  1927.     AH = 14h
  1928.     BX = network descriptor
  1929. Return: CF set
  1930.         AX = 0018h (see INT 61"PC/TCP")
  1931. Notes:    displays error message "Illegal system call!  Please upgrade your
  1932.       PCserver software" to standard output
  1933.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1934. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
  1935. --------N-6115-------------------------------
  1936. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  1937.     AH = 15h
  1938.     ???
  1939. Return: ???
  1940. Notes:    this function is described as "unused" in the v2.2 documentation
  1941.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1942. SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
  1943. --------N-6116-------------------------------
  1944. INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
  1945.     AH = 16h
  1946.     BX = network descriptor
  1947.     DS:DX -> 9-byte buffer for "addr" structure (see #1928)
  1948. Return: CF clear if successful
  1949.         buffer filled
  1950.     CF set on error
  1951.         AX = error code (see INT 61"PC/TCP")
  1952. Range:    INT 20 to INT E0, selected by configuration
  1953. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1954. --------N-6117-------------------------------
  1955. INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
  1956.     AH = 17h
  1957. Return: CF clear if successful
  1958.     CF set on error
  1959.         AX = error code (see INT 61"PC/TCP")
  1960. Notes:    this routine is deprecated in v2.1+ and will eventually be withdrawn;
  1961.       in v2.1+, this function calls AH=01h which should be used instead
  1962.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1963. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  1964. --------N-6118-------------------------------
  1965. INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
  1966.     AH = 18h
  1967.     BX = network descriptor
  1968. Return: CF clear if successful
  1969.     CF set on error
  1970.         AX = error code (see INT 61"PC/TCP")
  1971. Note:    a TCP "FIN" command is sent and no further data may be transmitted,
  1972.       although the connection remains open
  1973. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
  1974. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1975. --------N-6119-------------------------------
  1976. INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
  1977.     AH = 19h
  1978.     BX = network descriptor
  1979. Return: CF clear if successful
  1980.     CF set on error
  1981.         AX = error code (see INT 61"PC/TCP")
  1982. Desc:    immediately destroys the specified connection
  1983. Note:    send a TCP "RST" command if a stream connection is open
  1984. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
  1985. --------N-611A-------------------------------
  1986. INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
  1987.     AH = 1Ah
  1988.     BX = network descriptor
  1989.     CX = number of bytes to transmit (0000h allowed)
  1990.     DX = send options (see #1929)
  1991.     DS:SI -> data to be written
  1992. Return: CF clear if successful
  1993.         AX = number of bytes actually written
  1994.         DX = ???
  1995.     CF set on error
  1996.         AX = error code (see INT 61"PC/TCP")
  1997. Range:    INT 20h to INT E0h, selected by configuration
  1998. Notes:    the installation check consists of testing for the signature "TCPTSR"
  1999.       three bytes beyond the start of the interrupt handler
  2000. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  2001. SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
  2002.  
  2003. Bitfields for PC/TCP send options:
  2004. Bit(s)    Description    (Table 1929)
  2005.  0    signal "URG"ent data
  2006.  3    attempt rerouting on non-stream calls if first attempt fails
  2007.  4    send data with PUSH flag (no override of Nagle) (see option 0Ch)
  2008.  5    fail rather than truncating datagram
  2009.  6    fail rather than blocking
  2010.  7    broadcast packet
  2011. --------N-611B-------------------------------
  2012. INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
  2013.     AH = 1Bh
  2014.     BX = network descriptor
  2015.     CX = maximum number of bytes to read
  2016.     DX = receive options (see #1930)
  2017.     DS:SI -> buffer for data
  2018.     ES:DI -> "addr" structure (see #1928) for remote from which to read
  2019.         0000h:0000h for any
  2020. Return: CF clear if successful
  2021.         AX = number of bytes actually read
  2022.         DX = ???
  2023.     CF set on error
  2024.         AX = error code (see INT 61"PC/TCP")
  2025. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  2026.  
  2027. Bitfields for PC/TCP receive options:
  2028. Bit(s)    Description    (Table 1930)
  2029.  1    do not remove data from queue, just copy it
  2030.  2    do not copy data, just remove it from queue
  2031.  5    fail if datagram would be truncated
  2032.  6    do not block, return error if no data available
  2033. Note:    special case for UDP: if both 1 and 2 set, return number of datagrams
  2034. --------N-611C-------------------------------
  2035. INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
  2036.     AH = 1Ch
  2037.     BX = network descriptor
  2038.     CX = number of bytes to transmit (0000h allowed)
  2039.     DX = send options (see #1929)
  2040.     DS:SI -> data to be written
  2041.     ES:DI -> "addr" structure (see #1928)
  2042. Return: CF clear if successful
  2043.         AX = number of bytes actually written
  2044.         DX = ???
  2045.     CF set on error
  2046.         AX = error code (see INT 61"PC/TCP")
  2047. Note:    this function differs from AH=1Ah in that the address and socket
  2048.       numbers can be overridden
  2049. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  2050. SeeAlso: INT 63/AH=21h"BW-TCP"
  2051. --------N-611D-------------------------------
  2052. INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
  2053.     AH = 1Dh
  2054.     BX = network descriptor
  2055.     CX = maximum number of bytes to read
  2056.     DX = receive options (see #1929)
  2057.     DS:SI -> buffer for received data
  2058.     ES:DI -> 9-byte buffer containing "addr" structure (see #1928)
  2059. Return: CF clear if successful
  2060.         AX = number of bytes read
  2061.         DX = ???
  2062.     CF set on error
  2063.         AX = error code (see INT 61"PC/TCP")
  2064. Notes:    this function can read from any host or a designated host depending
  2065.       on settings in the "addr" structure
  2066.     only for use with datagram or Raw descriptors
  2067. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  2068. --------N-611E-------------------------------
  2069. INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
  2070.     AH = 1Eh
  2071.     BX = network descriptor
  2072. Return: CF clear if successful
  2073.     CF set on error
  2074.         AX = error code (see INT 61"PC/TCP")
  2075. Range:    INT 20 to INT E0, selected by configuration
  2076. Notes:    bufferred data is transmitted immediately, overriding Nagle's algorithm
  2077.       if necessary
  2078.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2079. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2080. --------N-611F-------------------------------
  2081. INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
  2082.     AH = 1Fh
  2083.     BX = network descriptor
  2084.     CX = event type (see #1931)
  2085.     DS:SI -> event handler routine (see #1932)
  2086.     ES:DI = 32-bit hint passed to handler
  2087. Return: CF clear if successful
  2088.         DS:DX -> previous handler
  2089.     CF set on error
  2090.         AX = error code (see INT 61"PC/TCP")
  2091. Note:    ICMP messages do not trigger events on stream connections
  2092. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2093.  
  2094. (Table 1931)
  2095. Values for PC/TCP event type:
  2096.  00h    alarm
  2097.  01h    open (successfully opened stream connection)
  2098.  02h    receive (data available)
  2099.  03h    transmit (ACK received on stream connection)
  2100.  04h    transmit flush???
  2101.  05h    foreign close (remote host closed data connection)
  2102.  06h    close (local host closed connection and protocol is complete)
  2103.  07h    error (error code passed to handler as arg)
  2104.  
  2105. (Table 1932)
  2106. Values PC/TCP user event handler is called with:
  2107.     BX = network descriptor
  2108.     CX = event type (see #1931)
  2109.     DS:DX -> arg
  2110.     ES:DI = 32-bit hint value
  2111.     STACK:    small stack, possibly the DOS stack
  2112. --------N-6120-------------------------------
  2113. INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
  2114.     AH = 20h
  2115.     BX = network descriptor
  2116.     CX = length of buffer (usually 04h)
  2117.     DS:DX -> buffer containing option
  2118.     SI = (ignored by v2.2-)
  2119.     DI = option to set (see #1933)
  2120. Return: CF clear if successful
  2121.     CF set on error
  2122.         AX = error code (see INT 61"PC/TCP")
  2123. Note:    Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
  2124.       others return CF clear
  2125. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  2126.  
  2127. (Table 1933)
  2128. Values for PC/TCP option to get or set:
  2129.  01h    set non-blocking mode if non-zero
  2130.  02h    timeout of call in milliseconds
  2131.  03h    user-defined 4-byte magic cookie (not used by kernel)
  2132.  04h    TCP window or UDP buffer count (WORD, unsigned)
  2133.  06h    do TCP keep-alives if non-zero
  2134.  09h    (v2.1+) set IP precedence
  2135.  0Ah    (v2.1+) set IP type of service
  2136.  0Bh    use a privileged port if port = 0
  2137.  0Ch    turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
  2138. Note:    use "C" true or false values for boolean options
  2139. --------N-6121-------------------------------
  2140. INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
  2141.     AH = 21h
  2142.     BX = network descriptor
  2143.     CX = length of buffer
  2144.     DS:DX -> buffer for return values
  2145.     SI = 0004h (ignored by v2.2-)
  2146.     DI = option (see #1933)
  2147. Return: CF clear if successful
  2148.         DS:DX -> value (usually 32 bits) returned by selected option
  2149.     CF set on error
  2150.         AX = error code (see INT 61"PC/TCP")
  2151. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2152. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  2153. --------N-6122-------------------------------
  2154. INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
  2155.     AH = 22h
  2156. Return: CF clear if successful
  2157.         AX = network descriptor
  2158.     CF set on error
  2159.         AX = error code (see INT 61"PC/TCP")
  2160. Note:    the descriptor will be an integer in the range 00h-1Fh, and a DOS call
  2161.       is made to allocate this as a file descriptor.  Hence a number may
  2162.       not refer to a PC/TCP network descriptor and a DOS file handle
  2163.       simultaneously.
  2164. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
  2165. --------N-6123-------------------------------
  2166. INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
  2167.     AH = 23h
  2168.     BX = network descriptor or FFFFh to allocate descriptor
  2169.     DX = type of service
  2170.     DS:SI -> "addr" structure (see #1928)
  2171. Return: CF clear if successful
  2172.         AX = network descriptor
  2173.     CF set on error
  2174.         AX = error code (see INT 61"PC/TCP")
  2175. Notes:    type of service and "addr" structure are as for AH=13h
  2176.     any of the address structure can be zero; normally local socket number
  2177.       is filled in prior to call
  2178. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  2179. SeeAlso: INT 63/AH=12h"BW-TCP"
  2180. --------N-6124-------------------------------
  2181. INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
  2182.     AH = 24h
  2183. Return: always successful
  2184. Note:    performs "net_abort" (AH=19h) on all open non-global descriptors
  2185. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
  2186. --------N-6125-------------------------------
  2187. INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
  2188.     AH = 25h
  2189.     DX,BX = IP address in network order
  2190.     CX = length of buffer for name
  2191.     DS:SI -> buffer for host name
  2192. Return: CF clear if successful
  2193.        buffer filled with ASCIZ host name
  2194.     CF set on error
  2195.         AX = error code (see INT 61"PC/TCP")
  2196. Note:    this function will use the host table and or DNS to resolve the
  2197.       address, depending on kernel configuration.  Use this call for the
  2198.       normal gethostbyaddr function.
  2199. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
  2200. --------N-6126-------------------------------
  2201. INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
  2202.     AH = 26h
  2203.     DX,BX = IP address in network order
  2204.     CX = length of buffer
  2205.     DS:SI -> buffer for host name
  2206. Return: CF clear if successful
  2207.         buffer filled with ASCIZ host name
  2208.     CF set on error
  2209.         AX = error code (see INT 61"PC/TCP")
  2210. Notes:    normally one would use AH=25h instead of this function
  2211.     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",INT 61/AH=25h,INT 61/AH=27h
  2213. --------N-6127-------------------------------
  2214. INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
  2215.     AH = 27h
  2216.     DX,BX = IP address in network order
  2217.     CX = length of buffer
  2218.     DS:SI -> buffer for host name
  2219. Return: CF clear if successful
  2220.         buffer filled with ASCIZ host name
  2221.     CF set on error
  2222.         AX = error code (see INT 61"PC/TCP")
  2223. Note:    normally one would use AH=25h instead of this function
  2224. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
  2225. --------N-6128-------------------------------
  2226. INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
  2227.     AH = 28h
  2228.     BX = network descriptor 1
  2229.     CX = network descriptor 2
  2230. Return: CF clear if successful
  2231.     CF set on error
  2232.         AX = error code (see INT 61"PC/TCP")
  2233. Note:    the two descriptors will exchange places; both must be local or both
  2234.       global
  2235. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2236. --------N-6129-------------------------------
  2237. INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
  2238.     AH = 29h
  2239. Return: CF clear if successful
  2240.         AX = network descriptor
  2241.     CF set on error
  2242.         AX = error code (see INT 61"PC/TCP")
  2243. Note:    use this function rather than AH=22h to avoid a DOS call by the PC/TCP
  2244.       kernel; the returned descriptor will be >= 40h and cannot be used
  2245.       with "net_select" (AH=0Eh)
  2246. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
  2247. SeeAlso: INT 61/AH=22h
  2248. --------N-612A-------------------------------
  2249. INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
  2250.     AH = 2Ah
  2251.     DS:SI -> 26-byte buffer for configuration information (see #1934)
  2252. Return: CF clear
  2253.     AX = 0000h
  2254.     buffer filled
  2255. Notes:    size of buffer may vary with kernel version; 26 bytes is the size for
  2256.       versions 2.05 through 2.2
  2257.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2258. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2259.  
  2260. Format of PC/TCP configuration information:
  2261. Offset    Size    Description    (Table 1934)
  2262.  00h    BYTE    maximum TCP connections available
  2263.  01h    BYTE    maximum UDP connections available
  2264.  02h    BYTE    maximum IP connections available
  2265.  03h    BYTE    maximum Raw Net connections available
  2266.  04h    BYTE    number of TCP connections currently in use
  2267.  05h    BYTE    number of UDP connections currently in use
  2268.  06h    BYTE    number of IP connections currently in use
  2269.  07h    BYTE    number of Raw Net connections currently in use
  2270.  08h    WORD    number of local network descriptors active
  2271.  0Ah    WORD    number of global network descriptors active
  2272.  0Ch    BYTE    maximum header size on network
  2273.  0Dh    BYTE    maximum trailer size on network
  2274.  0Eh    WORD    size of large packet buffer
  2275.  10h    WORD    number of network interfaces attached
  2276.  12h    DWORD    milliseconds since kernel started
  2277.  16h    DWORD    IP broadcast address
  2278. --------N-612B-------------------------------
  2279. INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
  2280.     AH = 2Bh
  2281.     BX = network descriptor
  2282.     CX,DX = time before alarm in milliseconds
  2283.     DS:SI -> handler which will receive call (see INT 61/AH=1Fh)
  2284.     ES:DI = 32-bit cookie passed to handler
  2285. Return: CF clear if successful
  2286.     CF set on error
  2287.         AX = error code (see INT 61"PC/TCP")
  2288. Notes:    this function will cause a NET_AS_ALARM to be generated; it is intended
  2289.       for TSRs, etc. to regain control periodically
  2290.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2291. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2292. --------N-6130-------------------------------
  2293. INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
  2294.     AH = 30h
  2295.     BX,DX = IP address of host
  2296.     CX = length of data to send
  2297. Return: CF clear if successful (i.e. reply received)
  2298.     CF set on error
  2299.         AX = error code (see INT 61"PC/TCP")
  2300. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2301. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2302. --------N-61---------------------------------
  2303. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  2304.     AH = function
  2305.         31h "net_add_route"
  2306.         32h "net_del_route"
  2307.         33h "net_dump_routes"
  2308. Notes:    these functions are described as "unused" in the v2.2 documentation
  2309.     router configuration can be altered using INT 61/AH=01h
  2310.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2311. --------N-6134-------------------------------
  2312. INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
  2313.     AH = 34h
  2314.     ???
  2315. Return: ???
  2316. Notes:    this function is described as "reserved" in the v2.2 documentation
  2317.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2318. --------N-6150-------------------------------
  2319. INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
  2320.     AH = 50h
  2321.     DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
  2322. Return: CF clear if successful
  2323.         DX:AX -> IP address
  2324.     CF set on error
  2325.         AX = error code (see INT 61"PC/TCP")
  2326. Range:    INT 20 to INT E0, selected by configuration
  2327. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2328. --------N-6151-------------------------------
  2329. INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
  2330.     AH = 51h
  2331.     CX = size of destination buffer
  2332.     DS:DX -> ASCIZ host name (max 127 chars)
  2333.     ES:DI -> destination buffer or 0000h:0000h
  2334. Return: CF clear if successful
  2335.         DX:AX -> IP address of host
  2336.         destination buffer filled with canonical host name
  2337.     CF set on error
  2338.         AX = error code (see INT 61"PC/TCP")
  2339. Note:    this function calls DOS, and can fail if the DOS call fails
  2340. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2341. --------N-6152-------------------------------
  2342. INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
  2343.     AH = 52h
  2344.     CX = size of destination buffer
  2345.     DS:DX -> ASCIZ host name (max 127 chars)
  2346.     ES:DI -> destination buffer or 0000h:0000h
  2347. Return: CF clear if successful
  2348.         DX:AX -> IP address of host
  2349.         destination buffer filled with canonical host name
  2350.     CF set on error
  2351.         AX = error code (see INT 61"PC/TCP")
  2352. Note:    this function will poll all configured domain name servers if necessary
  2353. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2354. --------N-6153-------------------------------
  2355. INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
  2356.     AH = 53h
  2357.     DS:DX -> ASCIZ name to be resolved (max 127 chars)
  2358. Return: CF clear if successful
  2359.         DX:AX -> IP address of host
  2360.     CF set on error
  2361.         AX = error code (see INT 61"PC/TCP")
  2362. Range:    INT 20 to INT E0, selected by configuration
  2363. Note:    this function is not supported by v2.10+
  2364. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2365. --------N-6154-------------------------------
  2366. INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
  2367.     AH = 54h
  2368.     CX = size of destination buffer
  2369.     DS:DX -> ASCIZ host name (max 127 chars)
  2370.     ES:DI -> destination buffer or 0000h:0000h
  2371. Return: CF clear if successful
  2372.         DX:AX -> IP address of host
  2373.         destination buffer filled with canonical host name
  2374.     CF set on error
  2375.         AX = error code (see INT 61"PC/TCP")
  2376. Note:    this function uses all configured methods in turn to resolve the
  2377.       name (numerical, then host table, then DNS, then IEN116)
  2378. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  2379.       greater than 54h in AH may crash the system.    Other kernels may have
  2380.       this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
  2381. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
  2382. SeeAlso: INT 61/AH=52h,INT 61/AH=53h
  2383. --------*-62---------------------------------
  2384. INT 62 - reserved for user interrupt
  2385. --------d-62---------------------------------
  2386. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  2387. Notes:    this vector stores the third four bytes of the parameter table for
  2388.       hard disk 0
  2389. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  2390. --------b-62---------------------------------
  2391. INT 62 - HP 95LX - USED BY CALCULATOR
  2392. SeeAlso: INT 60"HP 95LX"
  2393. ----------62---------------------------------
  2394. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  2395.     AH = function (00h to 07h)
  2396.     CX = FFFEh
  2397.     DX = FFFFh
  2398.     ???
  2399. Return: ???
  2400. Note:    the installation check consists of testing for the string "DBLIBRARY"
  2401.       2 bytes past the interrupt handler
  2402. SeeAlso: AH=08h"SQL"
  2403. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  2404. ----------62---------------------------------
  2405. INT 62 - MPAUSE - ???
  2406.     details not yet avialable
  2407. Program: MPAUSE is a program by Manfred Michael which appeared in the German
  2408.      _EGA-Handbuch_ from  m&t-Verlag
  2409. --------N-62---------------------------------
  2410. INT 62 - XFS v1.76 - FILTERED PACKET DRIVER API
  2411. Program: XFS is a shareware Network File System client by Robert Juhasz
  2412. Desc:    XFS requires a packet driver to operate.  Since it does redirections,
  2413.       etc., it provides its own packet driver entry point, changing the
  2414.       signature string of the original packet driver to "XKT DRVR" so that
  2415.       it will no longer be found by the packet driver installation check
  2416. Range:    INT 61 to INT 66, selected by scanning for two consecutive free
  2417.       vectors and hooking the second
  2418. Note:    the installation check for this vector is the same as that for the
  2419.       packet driver specification: scan for the signature string "PKT DRVR"
  2420.       three bytes past the interrupt handler
  2421. SeeAlso: INT 60"Packet Driver",INT 61"XFS"
  2422. --------N-6200-------------------------------
  2423. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
  2424.     AH = 00h
  2425.     DS:DX -> 6-byte buffer for address
  2426. Return: AX = length of hardware address???
  2427. Range:    INT 60 to INT 65 ???
  2428. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  2429.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  2430.       consecutive interrupt (64h by default) if it is loaded
  2431. SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
  2432. SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  2433. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  2434. --------V-620000-----------------------------
  2435. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  2436.     AX = 0000h
  2437.     BX = page number (0000h-003Fh)
  2438. Return: AX = status (0000h,0001h,0007h,0008h) (see #1935)
  2439. Program: FGDRIVER is the external video driver for the shareware
  2440.       Fastgraph/Light by Ted Gruber Software
  2441. Notes:    For FGDRIVER v1.10, this function was "FG_GETMODE" (see AX=003Fh);
  2442.       "FG_ALLOCATE" was AX=0042h
  2443.     The amount of memory required by the virtual video page depends on the
  2444.       current video mode
  2445.     The installation check consists of testing for the signature "FG" ten
  2446.       bytes beyond the start of the interrupt handler
  2447. SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=002Eh
  2448. Index:    installation check;Fastgraph/Light
  2449.  
  2450. (Table 1935)
  2451. Values for FGDRIVER status:
  2452.  0000h    successful
  2453.  0001h    specified page is a physical or logical page
  2454.  0007h    virtual page created/released, but memory control blocks corrupted
  2455.  0008h    not enough memory
  2456.  0009h    attempt to free a page which was never created
  2457.  FFFCh    insufficient memory
  2458.  FFFDh    page already created, or exists as physical or virtual page
  2459.  FFFEh    invalid page number
  2460.  FFFFh    memory manager not initialized
  2461. --------V-620001-----------------------------
  2462. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  2463.     AX = 0001h
  2464.     BX = page number (0001h-003Fh)
  2465. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1935)
  2466. Notes:    For FGDRIVER v1.10, this function was "FG_SETMODE" (see AX=0093h);
  2467.       "FG_ALLOCCMS" was AX=009Dh
  2468.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2469.       (see AX=0012h)
  2470. SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0012h,AX=002Eh
  2471. --------V-620002-----------------------------
  2472. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  2473.     AX = 0002h
  2474.     BX = page number (0001h-003Fh)
  2475. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1935)
  2476. Notes:    For FGDRIVER v1.10, this function was "FG_TESTMODE" (see AX=00A7h);
  2477.       "FG_ALLOCEMS" was AX=009Eh
  2478.     You must first call "FG_INITEMS" (see AX=004Ch) before using this
  2479.       function
  2480.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2481.       (see AX=0012h)
  2482. SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0012h,AX=002Eh,AX=004Ch
  2483. --------V-620003-----------------------------
  2484. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  2485.     AX = 0003h
  2486.     BX = page number (0001h-003Fh)
  2487. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1935)
  2488. Notes:    For FGDRIVER v1.10, this function was "FG_BESTMODE" (see AX=0005h),
  2489.       and "FG_ALLOCXMS" was AX=009Fh
  2490.     You must first call "FG_INITXMS" (see AX=004Eh) before using this
  2491.       function
  2492.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2493.       (see AX=0012h)
  2494. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0012h,AX=002Eh,AX=004Eh
  2495. --------V-620004-----------------------------
  2496. INT 62 u - FGDRIVER v1.10,3.03 - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
  2497.     AX = 0004h
  2498. Return: AX = proposed video mode number (see #1949 at AX=0093h)
  2499. Program: FGDRIVER is the external video driver for the shareware
  2500.       Fastgraph/Light by Ted Gruber Software
  2501. SeeAlso: AX=0005h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  2502. --------V-620005-----------------------------
  2503. INT 62 u - FGDRIVER v3.03 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  2504.     AX = 0005h
  2505.     BX = horizontal resolution
  2506.     CX = vertical resolution
  2507.     DX = number of video pages required (both physical and virtual)
  2508. Return: AX = proposed video mode number or FFFFh if no matching video mode
  2509. Notes:    For FGDRIVER v1.10, this function was "FG_EGACHECK" (see AX=0023h);
  2510.        "FG_BESTMODE" was AX=0003h
  2511.     You must first call "FG_SVGAINIT" (see AX=00A1h) to get SVGA video
  2512.       modes
  2513. SeeAlso: AX=0004h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  2514. --------V-620006-----------------------------
  2515. INT 62 u - FGDRIVER v3.03 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  2516.     AX = 0006h
  2517.     BX = left column
  2518.     CX = right column
  2519.     DX = top row
  2520.     SI = bottom row
  2521. Notes:    For FGDRIVER v1.10, this function was "FG_RESET" (see AX=0081h);
  2522.       "FG_BOX" was AX=00A2h
  2523.     The rectangle is drawn in screen space, respecting the clipping region,
  2524.       with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
  2525.       (default = 1 is set by "FG_SETMODE")
  2526.     This function has no effect in text modes
  2527. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0014h,AX=001Bh,AX=0024h,AX=0076h
  2528. --------V-620007-----------------------------
  2529. INT 62 u - FGDRIVER v3.03 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  2530.     AX = 0007h
  2531.     BX = width of left and right edges in pixels (> 0)
  2532.     CX = width of top and bottom edges in pixels (> 0)
  2533. Note:    For FGDRIVER v1.10, this function was "FG_CURSOR" (see AX=0013h);
  2534.       "FG_BOXDEPTH" was AX=00A3h
  2535. SeeAlso: AX=0006h,AX=0008h
  2536. --------V-620008-----------------------------
  2537. INT 62 u - FGDRIVER v3.03 - "FG_BOXX" - XOR HOLLOW RECTANGLE
  2538.     AX = 0008h
  2539.     BX = left column
  2540.     CX = right column
  2541.     DX = top row
  2542.     SI = bottom row
  2543. Notes:    For FGDRIVER v1.10, this function was unused and "FG_BOXX" did not
  2544.       exist yet
  2545.     The rectangle is XORed into screen space, respecting the clipping
  2546.       region, with edges of the width specified with "FG_BOXDEPTH"
  2547.       (see AX=0007h) (default = 1 is set by "FG_SETMODE")
  2548.     This function has no effect in text modes
  2549. SeeAlso: AX=0006h,AX=0007h,AX=001Fh,AX=0020h,AX=0077h
  2550. --------V-620009-----------------------------
  2551. INT 62 u - FGDRIVER v3.03 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  2552.     AX = 0009h
  2553.     BX = joystick number (0001h or 0002h)
  2554. Return: AX = button states
  2555.         bit 0: top button pressed
  2556.         bit 1: bottom button pressed
  2557. Note:    For FGDRIVER v1.10, this function was unused; "FG_BUTTON" was AX=0078h
  2558. SeeAlso: AX=0044h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  2559. --------V-62000A-----------------------------
  2560. INT 62 u - FGDRIVER v3.03 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  2561.     AX = 000Ah
  2562. Return: AX = CapsLock state (0000h off, 0001h on)
  2563. Note:    For FGDRIVER v1.10, this function was "FG_GETMAXX" (see AX=003Dh);
  2564.       "FG_CAPSLOCK" was AX=0070h
  2565. SeeAlso: AX=006Ch,AX=0088h,AX=008Bh,AX=0094h
  2566. --------V-62000B-----------------------------
  2567. INT 62 u - FGDRIVER v3.03 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  2568.     AX = 000Bh
  2569.     BX = number of characters to recolor
  2570. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAXY" (see AX=003Eh);
  2571.       "FG_CHGATTR" was AX=0035h
  2572.     This call is ignored in graphics modes
  2573.     Starting at the current text cursor position, the specified number of
  2574.       characters have their attributes to the current text attribute
  2575. SeeAlso: AX=000Ch,AX=0030h,AX=008Ah
  2576. --------V-62000C-----------------------------
  2577. INT 62 u - FGDRIVER v3.03 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  2578.     AX = 000Ch
  2579.     CX = length of string
  2580.     ES:BX -> string to be displayed
  2581. Return: text cursor updated
  2582. Notes:    For FGDRIVER v1.10, this function was "FG_XALPHA" (see AX=00B0h);
  2583.       "FG_CHGTEXT" was AX=0036h
  2584.     This call is ignored in graphics modes
  2585. SeeAlso: AX=000Bh,AX=007Ch
  2586. --------V-62000D-----------------------------
  2587. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  2588.     AX = 000Dh
  2589.     BX = radius in horizontal screen space units (> 0)
  2590. Notes:    For FGDRIVER v1.10, this function was "FG_YALPHA" (see AX=00B2h);
  2591.       "FG_CIRCLE" was AX=0030h
  2592.     The circle is drawn in screen space, centered at the current graphics
  2593.       cursor position
  2594.     This call is ignored in text modes
  2595. SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0024h,AX=0079h
  2596. --------V-62000E-----------------------------
  2597. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLEF" - DRAW FILLED CIRCLE
  2598.     AX = 000Eh
  2599.     BX = radius in horizontal screen space units (> 0)
  2600. Notes:    For FGDRIVER v1.10, this function was "FG_XCONVERT" (see AX=00B1h);
  2601.       "FG_CIRCLEF" did not exist yet
  2602. SeeAlso: AX=0008h,AX=000Dh,AX=0025h,AX=0078h
  2603. --------V-62000F-----------------------------
  2604. INT 62 u - FGDRIVER v3.03 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  2605.     AX = 000Fh
  2606.     ES:BX -> array containing image stored as a masking map (see #1936)
  2607.     CX = number of pixel runs in masking map
  2608.     DX = width of masking map in pixels
  2609. Notes:    For FGDRIVER v1.10, this function was "FG_YCONVERT" (see AX=00B3h);
  2610.        "FG_CLIPMASK" was AX=0052h
  2611.     This call is ignored in text modes and in native EGA and VGA graphics
  2612.       modes
  2613.     The image is drawn with its lower left corner at the current graphics
  2614.       cursor position
  2615. SeeAlso: AX=0010h,AX=001Dh,AX=002Ah,AX=0086h,AX=008Ch,AX=00A5h
  2616. --------V-620010-----------------------------
  2617. INT 62 u - FGDRIVER v3.03 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  2618.     AX = 0010h
  2619.     ES:BX -> mode-specific bitmap
  2620.     CX = width of bit map in bytes
  2621.     DX = height of bit map in pixel rows
  2622. Notes:    For FGDRIVER v1.10, this function was "FG_GETLINES" (see AX=003Bh);
  2623.       "FG_CLPIMAGE" was AX=004Ah
  2624.     This call is ignored in text modes
  2625.     The image is drawn with its lower left corner at the current graphics
  2626.       cursor position
  2627.     The current clipping region is used, extended to a byte boundary
  2628. SeeAlso: AX=000Fh,AX=0022h,AX=002Ch,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  2629. --------V-620011-----------------------------
  2630. INT 62 u - FGDRIVER v3.03 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  2631.     AX = 0011h
  2632.     BX = screen space column of left edge
  2633.     CX = screen space column of right edge
  2634.     DX = screen space row of top edge
  2635.     SI = screen space row of bottom edge
  2636. Notes:    For FGDRIVER v1.10, this function was "FG_SETLINES" (see AX=0092h);
  2637.       "FG_CLPRECT" was AX=002Bh
  2638.     This call is ignored in text modes
  2639. SeeAlso: AX=0006h,AX=000Fh,AX=0010h,AX=0021h,AX=0080h,AX=008Ch
  2640. --------V-620012-----------------------------
  2641. INT 62 u - FGDRIVER v3.03 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  2642.     AX = 0012h
  2643.     BX = source page number (0000h-003Fh)
  2644.     CX = destination page number (0000h-003Fh)
  2645. Notes:    For FGDRIVER v1.10, this function was unused;"FG_COPYPAGE" was AX=005Fh
  2646.     If both source and destination pages are logical pages, they must both
  2647.       be located in the same type (conventional, EMS, XMS) of memory
  2648. SeeAlso: AX=0083h,AX=0087h,AX=00A6h,AX=00A9h
  2649. --------V-620013-----------------------------
  2650. INT 62 u - FGDRIVER v3.03 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  2651.     AX = 0013h
  2652.     BX = new state (0000h invisible, 0001h visible)
  2653. Notes:    For FGDRIVER v1.10, this function was unused; "FG_CURSOR" was AX=0007h
  2654.     This call is ignored in text modes
  2655. SeeAlso: AX=000Ch,AX=0045h,AX=0047h,AX=0055h,AX=005Fh,AX=0063h,AX=0068h
  2656. SeeAlso: AX=00AFh
  2657. --------V-620014-----------------------------
  2658. INT 62 u - FGDRIVER v3.03 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  2659.     AX = 0014h
  2660.     BX = endpoint column
  2661.     CX = endpoint row
  2662.     DX = dash pattern (set bits cause drawn pixels)
  2663. Notes:    For FGDRIVER v1.10, this function was "FG_DEFCOLOR" (see AX=0016h);
  2664.       "FG_DASH" was AX=0027h
  2665.     This call is ignored in text modes
  2666.     The starting point is the current graphics cursor position; the cursor
  2667.       position is updated
  2668. SeeAlso: AX=0015h,AX=001Bh,AX=0076h
  2669. --------V-620015-----------------------------
  2670. INT 62 u - FGDRIVER v3.03 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  2671.     AX = 0015h
  2672.     BX = endpoint column offset
  2673.     CX = endpoint row offset
  2674.     DX = dash pattern (set bits cause drawn pixels)
  2675. Notes:    For FGDRIVER v1.10, this function was "FG_GETCOLOR" (see AX=0034h);
  2676.       "FG_DASHREL" was AX=0028h
  2677.     This call is ignored in text modes
  2678.     The starting point is the current graphics cursor position; the cursor
  2679.       position is updated
  2680. SeeAlso: AX=0014h,AX=001Ch,AX=0076h
  2681. --------V-620016-----------------------------
  2682. INT 62 u - FGDRIVER v3.03 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  2683.     AX = 0016h
  2684.     BX = color index (0000h-00FFh)
  2685.     CX = new color value (0 to maximum color value for current video mode)
  2686. Notes:    For FGDRIVER v1.10, this function was "FG_GETINDEX" (see AX=0039h);
  2687.       "FG_DEFCOLOR" was AX=0014h
  2688.     This call is ignored in text modes and 256-color graphics modes
  2689. SeeAlso: AX=0034h,AX=0039h,AX=008Dh
  2690. --------V-620017-----------------------------
  2691. INT 62 u - FGDRIVER v3.03 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
  2692.     AX = 0017h
  2693.     BX = source page
  2694.     CX = destination page
  2695. Desc:    specify the source and destination SVGA banks for block transfers on
  2696.       extended video pages
  2697. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTE" (see AX=006Fh);
  2698.       "FG_DEFPAGES" did not exist yet
  2699.     This function is ignored if the video controller does not support
  2700.       extended pages or the current video mode does not allow them
  2701. SeeAlso: AX=0012h,AX=00A9h
  2702. --------V-620018-----------------------------
  2703. INT 62 u - FGDRIVER v3.03 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  2704.     AX = 0018h
  2705.     ES:BX -> ASCIZ filename
  2706.     CX = image width in pixels (> 0)
  2707.     DX = image format
  2708.         0000h Fastgraph standard pixel run format
  2709.         0001h packed pixel run format
  2710. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTES" (see AX=0070h);
  2711.       "FG_DISPFILE" was AX=004Fh
  2712.     This call is ignored in text modes
  2713.     The image is displayed with its lower left corner at the current
  2714.       graphics cursor position
  2715. SeeAlso: AX=0019h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  2716. --------V-620019-----------------------------
  2717. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  2718.     AX = 0019h
  2719.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  2720.     CX = number of pixel runs to display
  2721.     DX = width of image in pixels (> 0)
  2722. Notes:    For FGDRIVER v1.10, this function was "FG_SETATTR" (see AX=008Ah);
  2723.       "FG_DISPLAY" was AX=004Dh
  2724.     This call is ignored in text modes
  2725.     The image is displayed with its lower left corner at the current
  2726.       graphics cursor position
  2727. SeeAlso: AX=0018h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  2728. --------V-62001A-----------------------------
  2729. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
  2730.     AX = 001Ah
  2731.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  2732.           contains the color for the first run in its high nybble and
  2733.           the color for the second run in its low nybble)
  2734.     CX = number of pixel runs to display
  2735.     DX = width of image in pixels (> 0)
  2736. Notes:    For FGDRIVER v1.10, this function was "FG_SETCOLOR" (see AX=008Dh);
  2737.       "FG_DISPLAYP" was AX=004Eh
  2738.     This call is ignored in text modes
  2739.     The image is displayed with its lower left corner at the current
  2740.       graphics cursor position
  2741. SeeAlso: AX=0018h,AX=0019h,AX=009Ah,AX=009Bh,AX=009Ch
  2742. --------V-62001B-----------------------------
  2743. INT 62 u - FGDRIVER v3.03 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  2744.     AX = 001Bh
  2745.     BX = endpoint column
  2746.     CX = endpoint row
  2747. Notes:    For FGDRIVER v1.10, this function was "FG_SETRGB" (see AX=0096h);
  2748.       "FG_DRAW" was AX=0025h
  2749.     This call is ignored in text modes
  2750.     The starting point is the current graphics cursor position; the cursor
  2751.       position is updated
  2752. SeeAlso: AX=0014h,AX=001Eh,AX=001Fh,AX=0024h,AX=0076h,AX=0077h
  2753. --------V-62001C-----------------------------
  2754. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  2755.     AX = 001Ch
  2756.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  2757.     CX = width of bitmap in bytes
  2758.     DX = height of bitmap in pixel rows
  2759. Note:    For FGDRIVER v1.10, this function was "FG_GETRGB" (see AX=0042h);
  2760.       "FG_DRAWMAP" was AX=0047h
  2761. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  2762. --------V-62001D-----------------------------
  2763. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  2764.     AX = 001Dh
  2765.     ES:BX -> array containing image stored as a masking map (see #1936)
  2766.     CX = number of pixel runs in masking map
  2767.     DX = width of masking map in pixels
  2768. Notes:    For FGDRIVER v1.10, this function was "FG_MAPRGB" (see AX=005Ah);
  2769.       "FG_DRAWMASK" was AX=0051h
  2770.     This call is ignored in text modes and in native EGA and VGA graphics
  2771.       modes
  2772.     The image is drawn with its lower left corner at the current graphics
  2773.       cursor position
  2774. SeeAlso: AX=000Fh,AX=001Dh,AX=0086h,AX=008Ch
  2775.  
  2776. Format of FGDRIVER masking map:
  2777. Offset    Size    Description    (Table 1936)
  2778.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  2779.  01h    BYTE    length of first "zero" run (pixels set to background color)
  2780.  02h    BYTE    length of second "protect" run
  2781.  03h    BYTE    length of second "zero" run
  2782.     ...
  2783. --------V-62001E-----------------------------
  2784. INT 62 u - FGDRIVER v3.03 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  2785.     AX = 001Eh
  2786.     BX = endpoint column offset
  2787.     CX = endpoint row offset
  2788. Notes:    For FGDRIVER v1.10, this function was "FG_ERASE" (see AX=0026h);
  2789.       "FG_DRAWREL" was AX=0026h
  2790.     This call is ignored in text modes
  2791.     The starting point is the current graphics cursor position; the cursor
  2792.       position is updated
  2793. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Fh,AX=0024h,AX=0076h
  2794. --------V-62001F-----------------------------
  2795. INT 62 u - FGDRIVER v3.03 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
  2796.     AX = 001Fh
  2797.     BX = endpoint column offset
  2798.     CX = endpoint row offset
  2799. Desc:    draw a solid line, XORing each pixel onto the screen
  2800. Notes:    For FGDRIVER v1.10, this function was "FG_POINT" (see AX=0076h);
  2801.       "FG_DRAWRELX" did not exist yet
  2802.     This call is ignored in text modes
  2803.     The starting point is the current graphics cursor position; the cursor
  2804.       position is updated
  2805. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Eh,AX=0024h,AX=0077h
  2806. --------V-620020-----------------------------
  2807. INT 62 u - FGDRIVER v3.03 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
  2808.     AX = 0020h
  2809.     BX = endpoint column
  2810.     CX = endpoint row
  2811. Desc:    draw a solid line, XORing each pixel onto the screen
  2812. Notes:    For FGDRIVER v1.10, this function was "FG_GETPIXEL" (see AX=0041h);
  2813.       "FG_DRAWX" did not exist yet
  2814.     This call is ignored in text modes
  2815.     The starting point is the current graphics cursor position; the cursor
  2816.       position is updated
  2817. SeeAlso: AX=001Bh,AX=001Fh,AX=0076h
  2818. --------V-620021-----------------------------
  2819. INT 62 u - FGDRIVER v3.03 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  2820.     AX = 0021h
  2821.     BX = screen space column of left edge
  2822.     CX = screen space column of right edge
  2823.     DX = screen space row of top edge
  2824.     SI = screen space row of bottom edge
  2825.     ES:DI -> dithering matrix (video-mode dependent)
  2826. Notes:    For FGDRIVER v1.10, this function was "FG_GETXPOS" (see AX=0045h);
  2827.       "FG_DRECT" was AX=002Ch
  2828.     This call is ignored in text modes
  2829. SeeAlso: AX=0006h,AX=0008h,AX=0011h,AX=0031h,AX=0072h,AX=0080h
  2830. --------V-620022-----------------------------
  2831. INT 62 u - FGDRIVER v3.03 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  2832.     AX = 0022h
  2833.     ES:BX -> video mode-specific bitmap
  2834.     CX = width of bitmap in bytes
  2835.     DX = height of bitmap in pixel rows
  2836. Notes:    For FGDRIVER v1.10, this function was "FG_GETYPOS" (see AX=0047h);
  2837.       "FG_DRWIMAGE" was AX=0049h
  2838.     The image will be drawn with its lower left corner at the current
  2839.       cursor position (either text or graphics)
  2840. SeeAlso: AX=0010h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  2841. --------V-620023-----------------------------
  2842. INT 62 u - FGDRIVER v3.03 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  2843.     AX = 0023h
  2844. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  2845.           without an Enhanced Color Display
  2846. Note:    For FGDRIVER v1.10, this function was "FG_MOVE" (see AX=0068h);
  2847.       "FG_EGACHECK" was AX=0005h
  2848. SeeAlso: AX=00A2h
  2849. --------V-620024-----------------------------
  2850. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  2851.     AX = 0024h
  2852.     BX = horizontal semi-axis length in screen space units
  2853.     CX = vertical semi-axis length in screen space units
  2854. Notes:    For FGDRIVER v1.10, this function was "FG_MOVEREL" (see AX=0069h);
  2855.       "FG_ELLIPSE" was AX=002Dh
  2856.     This call is ignored in text modes
  2857.     The ellipse is centered at the current graphics cursor position
  2858. SeeAlso: AX=0006h,AX=000Dh,AX=0025h,AX=0076h,AX=0079h
  2859. --------V-620025-----------------------------
  2860. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
  2861.     AX = 0025h
  2862.     BX = horizontal semi-axis length in screen space units
  2863.     CX = vertical semi-axis length in screen space units
  2864. Notes:    For FGDRIVER v1.10, this function was "FG_DRAW" (see AX=001Bh);
  2865.       "FG_ELLIPSEF" did not exist yet
  2866.     This call is ignored in text modes
  2867.     The ellipse is centered at the current graphics cursor position
  2868. SeeAlso: AX=0006h,AX=000Eh,AX=0024h,AX=0076h,AX=0078h
  2869. --------V-620026-----------------------------
  2870. INT 62 u - FGDRIVER v3.03 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  2871.     AX = 0026h
  2872. Note:    For FGDRIVER v1.10, this function was "FG_DRAWREL" (see AX=001Eh);
  2873.       "FG_ERASE" was AX=001Eh
  2874.     This function sets each pixel to 0 in graphics modes, each character
  2875.       cell to a blank with a gray foreground attribute in text modes
  2876. SeeAlso: AX=0027h,AX=0029h,AX=002Bh
  2877. --------V-620027-----------------------------
  2878. INT 62 u - FGDRIVER v3.03 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  2879.     AX = 0027h
  2880.     BX = delay (0000h = fastest possible fade-in)
  2881. Notes:    For FGDRIVER v1.10, this function was "FG_DASH" (see AX=0014h);
  2882.       "FG_FADEIN" was AX=0064h
  2883.     The current hidden page is copied to the current visible page in small
  2884.       random sections to produce a fade-in effect
  2885.     This call is ignored in text modes
  2886. SeeAlso: AX=0026h,AX=0028h,AX=0029h
  2887. --------V-620028-----------------------------
  2888. INT 62 u - FGDRIVER v3.03 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  2889.     AX = 0028h
  2890.     BX = delay (0000h = fastest possible fade-out)
  2891. Notes:    For FGDRIVER v1.10, this function was "FG_DASHREL" (see AX=0015h);
  2892.       "FG_FADEOUT" was AX=0065h
  2893.     The current visible page is filled with pixels of the current color in
  2894.       small random sections to give a fade-out effect
  2895.     This call is ignored in text modes
  2896. SeeAlso: AX=0026h,AX=0027h,AX=0029h
  2897. --------V-620029-----------------------------
  2898. INT 62 u - FGDRIVER v3.03 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
  2899.     AX = 0029h
  2900. Desc:    fill the active video page with pixels of the current color (graphics
  2901.       modes) or the block character DBh with the current character
  2902.       attributes (text modes)
  2903. Note:    For FGDRIVER v1.10, this function was "FG_SETCLIP" (see AX=008Ch);
  2904.       "FG_FILLPAGE" did not exist yet
  2905. SeeAlso: AX=0026h,AX=0027h,AX=0028h
  2906. --------V-62002A-----------------------------
  2907. INT 62 u - FGDRIVER v3.03 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  2908.     AX = 002Ah
  2909.     ES:BX -> array containing image stored as a masking map (see #1936)
  2910.     CX = number of pixel runs in masking map
  2911.     DX = width of masking map in pixels
  2912. Notes:    For FGDRIVER v1.10, this function was "FG_RECT" (see AX=0080h);
  2913.       "FG_FLIPMASK" was AX=0054h
  2914.     This call is ignored in text modes and in native EGA and VGA graphics
  2915.       modes
  2916.     The image is drawn with its lower left corner at the current graphics
  2917.       cursor position
  2918. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ch,AX=0086h,AX=008Ch,AX=00A5h
  2919. --------V-62002B-----------------------------
  2920. INT 62 u - FGDRIVER v3.03 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
  2921.     AX = 002Bh
  2922.     BX = starting column
  2923.     CX = starting row
  2924. Desc:    fill the bounded region around the specified point (respecting clipping
  2925.       region) with the currrent color
  2926. Notes:    For FGDRIVER v1.10, this function was "FG_CLPRECT" (see AX=0011h);
  2927.       "FG_FLOOD" did not exist yet
  2928.     This function is ignored in text modes
  2929. SeeAlso: AX=0026h,AX=006Eh
  2930. --------V-62002C-----------------------------
  2931. INT 62 u - FGDRIVER v3.03 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  2932.     AX = 002Ch
  2933.     ES:BX -> mode-specific bitmap
  2934.     CX = width of bit map in bytes
  2935.     DX = height of bit map in pixel rows
  2936. Notes:    For FGDRIVER v1.10, this function was "FG_DRECT" (see AX=0021h);
  2937.       "FG_FLPIMAGE" was AX=004Ch
  2938.     This call is ignored in text modes
  2939.     The image is drawn with its lower left corner at the current graphics
  2940.       cursor position
  2941.     The current clipping region is used, extended to a byte boundary
  2942. SeeAlso: AX=0010h,AX=0022h,AX=002Ah,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  2943. --------V-62002D-----------------------------
  2944. INT 62 u - FGDRIVER v3.03 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
  2945.     AX = 002Dh
  2946.     BX = desired character height in scan lines (8, 14, 16)
  2947. Notes:    For FGDRIVER v1.10, this function was "FG_ELLIPSE" (see AX=0024h);
  2948.       "FG_FONTSIZE" did not exist yet
  2949.     This call is ignored if the current mode is not a VGA or SVGA graphics
  2950.       mode, or the specified character height is not 8, 14, or 16
  2951. SeeAlso: AX=007Ch
  2952. --------V-62002E-----------------------------
  2953. INT 62 u - FGDRIVER v3.03 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  2954.     AX = 002Eh
  2955.     BX = page number (0000h-003Fh)
  2956. Return: AX = status (0000h,0001h,0007h,0009h) (see #1935)
  2957. Note:    For FGDRIVER v1.10, this function was "FG_POLYGON" (see AX=0079h);
  2958.       "FG_FREEPAGE" was AX=0043h
  2959. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
  2960. --------V-62002F-----------------------------
  2961. INT 62 u - FGDRIVER v3.03 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  2962.     AX = 002Fh
  2963. Return: AX = segment of active video page
  2964. Note:    For FGDRIVER v1.10, this function was "FG_PAINT" (see AX=006Eh);
  2965.       "FG_GETADDR" was AX=0044h
  2966. SeeAlso: AX=0036h,AX=008Fh
  2967. --------V-620030-----------------------------
  2968. INT 62 u - FGDRIVER v3.03 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  2969.     AX = 0030h
  2970.     BX = row
  2971.     CX = column
  2972. Return: AX = character attribute at specified location on active video page
  2973. Notes:    For FGDRIVER v1.10, this function was "FG_CIRCLE" (see AX=000Dh);
  2974.       "FG_GETATTR" was AX=0037h
  2975.     This call is ignored in graphics modes
  2976. SeeAlso: AX=000Bh,AX=0032h,AX=0034h,AX=008Ah
  2977. --------V-620031-----------------------------
  2978. INT 62 u - FGDRIVER v3.03 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
  2979.     AX = 0031h
  2980.     ES:BX -> buffer for screen contents
  2981.     CX = leftmost column
  2982.     DX = rightmost column
  2983.     SI = top row
  2984.     DI = bottom row
  2985. Notes:    For FGDRIVER v1.10, this function was unused, and "FG_GETBLOCK" did not
  2986.       exist yet
  2987.     In text modes, coordinates are character positions; in graphics modes,
  2988.       they are defined in screen space, and the left and right edges are
  2989.       adjusted to a byte boundary if necessary
  2990.     Use "FG_IMAGESIZ" (see AX=004Bh) to determine the required buffer size
  2991. SeeAlso: AX=0038h,AX=004Bh,AX=007Dh
  2992. --------V-620032-----------------------------
  2993. INT 62 u - FGDRIVER v3.03 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  2994.     AX = 0032h
  2995.     BX = row
  2996.     CX = column
  2997. Return: AX = character at specified location on active video page
  2998. Notes:    For FGDRIVER v1.10, this function was "FG_TEXT" (see AX=00A8h);
  2999.       "FG_GETCHAR" was AX=0038h
  3000.     This call is ignored in graphics modes
  3001. SeeAlso: AX=000Bh,AX=0030h,AX=007Ch,AX=008Ah,AX=00A8h
  3002. --------V-620033-----------------------------
  3003. INT 62 u - FGDRIVER v3.03 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  3004.     AX = 0033h
  3005. Return: DX:AX = number of clock ticks since midnight
  3006. Note:    For FGDRIVER v1.10, this function was "FG_LOCATE" (see AX=0055h);
  3007.       "FG_GETCLOCK" was AX=0099h
  3008. SeeAlso: INT 1A/AH=00h
  3009. --------V-620034-----------------------------
  3010. INT 62 u - FGDRIVER v3.03 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  3011.     AX = 0034h
  3012. Return: AX = current text attribute or color index (graphics modes)
  3013. Note:    For FGDRIVER v1.10, this function was "FG_WHERE" (see AX=00AFh);
  3014.       "FG_GETCOLOR" was AX=0015h
  3015. SeeAlso: AX=000Bh,AX=0030h,AX=008Ah
  3016. --------V-620035-----------------------------
  3017. INT 62 u - FGDRIVER v3.03 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  3018.     AX = 0035h
  3019.     CX = number of DAC registers to return (0001h to 0100h)
  3020.     DX = starting DAC register number (0000h to 00FFh)
  3021.     ES:BX -> buffer for DAC red/green/blue triples
  3022. Notes:    For FGDRIVER v1.10, this function was "FG_CHGATTR" (see AX=000Bh);
  3023.       "FG_GETDACS" was AX=00A4h
  3024.     The register number wraps back to zero after FFh
  3025. SeeAlso: AX=0042h,AX=006Fh,AX=008Eh
  3026. --------V-620036-----------------------------
  3027. INT 62 u - FGDRIVER v3.03 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
  3028.     AX = 0036h
  3029.     ES:BX -> variable pointer record (see #1937)
  3030.     CX = page number (00h-3Fh)
  3031. Notes:    For FGDRIVER v1.10, this function was "FG_CHGTEXT" (see AX=000Ch);
  3032.       "FG_GETENTRY" did not exist yet
  3033.     Page addresses are segments for pages stored in conventional memory
  3034.       (including physical and virtual pages), and EMS or XMS handles for
  3035.       pages stored in EMS or XMS
  3036. SeeAlso: AX=0000h,AX=008Fh
  3037.  
  3038. Format of FGDRIVER variable pointer record:
  3039. Offset    Size    Description    (Table 1937)
  3040.  00h    WORD    segment of WORD buffer for page address
  3041.  02h    WORD    offset of WORD buffer for page address
  3042.  04h    WORD    segment of WORD buffer for page type (se #1938)
  3043.  06h    WORD    offset of WORD buffer for page type
  3044.  
  3045. (Table 1938)
  3046. Values for FGDRIVER page type:
  3047.  0000h    unallocated
  3048.  0001h    physical
  3049.  0002h    virtual
  3050.  0003h    logical page, stored in expanded memory (EMS)
  3051.  0004h    logical page, stored in extended memory (XMS)
  3052.  0005h    logical page, stored in conventional memory
  3053. --------V-620037-----------------------------
  3054. INT 62 u - FGDRIVER v3.03 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  3055.     AX = 0037h
  3056. Return: AX = current hidden video page number (0000h-003Fh)
  3057. Note:    For FGDRIVER v1.10, this function was "FG_GETATTR" (see AX=0030h);
  3058.       "FG_GETHPAGE" was AX=0040h
  3059. SeeAlso: AX=0040h,AX=0043h,AX=0091h
  3060. --------V-620038-----------------------------
  3061. INT 62 u - FGDRIVER v3.03 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  3062.     AX = 0038h
  3063.     ES:BX -> buffer for video mode-specific bitmap
  3064.     CX = width of bitmap in bytes
  3065.     DX = height of bitmap in pixel rows
  3066. Note:    For FGDRIVER v1.10, this function was "FG_GETCHAR" (see AX=0032h);
  3067.       "FG_GETIMAGE" was AX=0048h
  3068. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=007Eh,AX=0085h
  3069. --------V-620039-----------------------------
  3070. INT 62 u - FGDRIVER v3.03 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  3071.     AX = 0039h
  3072.     BX = color index (0000h to 00FFh)
  3073. Return: AX = color value for specified color index
  3074. Notes:    For FGDRIVER v1.10, this function was unused;"FG_GETINDEX" was AX=0016h
  3075.     This call returns the value passed to it in text and 256-color
  3076.       graphics modes
  3077. SeeAlso: AX=0016h,AX=0034h
  3078. --------V-62003A-----------------------------
  3079. INT 62 u - FGDRIVER v3.03 - "FG_GETKEY" - GET NEXT KEYSTROKE
  3080.     AX = 003Ah
  3081.     ES:BX -> variable pointer record (see #1939)
  3082. Return: (after next keystroke if no typeahead) variables updated
  3083. Note:    For FGDRIVER v1.10, this function was unused; "FG_GETKEY" was AX=006Eh
  3084. SeeAlso: AX=000Ah,AX=0051h,AX=0054h,AX=00ADh,INT 16/AH=00h
  3085.  
  3086. Format of FGDRIVER variable pointer record:
  3087. Offset    Size    Description    (Table 1939)
  3088.  00h    WORD    segment of BYTE buffer for ASCII keycode
  3089.  02h    WORD    offset of BYTE buffer for ASCII keycode
  3090.  04h    WORD    segment of BYTE buffer for extended keycode
  3091.  06h    WORD    offset of BYTE buffer for extended keycode
  3092. --------V-62003B-----------------------------
  3093. INT 62 u - FGDRIVER v3.03 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  3094.     AX = 003Bh
  3095. Return: AX = number of text rows on screen in current video mode
  3096. Note:    For FGDRIVER v1.10, this function was unused;"FG_GETLINES" was AX=0010h
  3097. SeeAlso: AX=0092h,AX=00A2h
  3098. --------V-62003C-----------------------------
  3099. INT 62 u - FGDRIVER v3.03 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  3100.     AX = 003Ch
  3101.     ES:BX -> buffer for video mode-independent bitmap
  3102.     CX = width of bitmap in bytes
  3103.     DX = height of bitmap in pixel rows
  3104. Return: each bit in bitmap is set if corresponding pixel is of the current
  3105.       color, cleared otherwise
  3106. Notes:    For FGDRIVER v1.10, this function was "FG_GETPAGE" (see AX=0040h);
  3107.       "FG_GETMAP" was AX=0046h
  3108.     This call is ignored in text modes
  3109. SeeAlso: AX=0010h,AX=001Ch,AX=0022h
  3110. --------V-62003D-----------------------------
  3111. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  3112.     AX = 003Dh
  3113. Return: AX = maximum X coordinate in screen space
  3114.         (or character space if in text mode)
  3115. Note:    For FGDRIVER v1.10, this function was "FG_SETPAGE" (see AX=0095h);
  3116.       "FG_GETMAXX" was AX=000Ah
  3117. SeeAlso: AX=003Eh,AX=00A1h
  3118. --------V-62003E-----------------------------
  3119. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  3120.     AX = 003Eh
  3121. Return: AX = maximum Y coordinate in screen space
  3122.         (or character space if in text mode)
  3123. Note:    For FGDRIVER v1.10, this function was "FG_GETVPAGE" (see AX=0043h);
  3124.       "FG_GETMAXY" was AX=000Bh
  3125. SeeAlso: AX=003Dh,AX=00A1h
  3126. --------V-62003F-----------------------------
  3127. INT 62 u - FGDRIVER v3.03 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  3128.     AX = 003Fh
  3129.     ES:BX -> WORD ???
  3130. Return: AX = current video mode number
  3131. Note:    For FGDRIVER v1.10, this function was "FG_SETVPAGE" (see AX=0098h);
  3132.       "FG_GETMODE" was AX=0000h
  3133. SeeAlso: AX=0093h
  3134. --------V-620040-----------------------------
  3135. INT 62 u - FGDRIVER v3.03 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  3136.     AX = 0040h
  3137. Return: AX = active video page (0000h-003Fh)
  3138. Note:    For FGDRIVER v1.10, this function was "FG_GETHPAGE" (see AX=0037h);
  3139.       "FG_GETPAGE" was AX=003Ch
  3140. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0095h
  3141. --------V-620041-----------------------------
  3142. INT 62 u - FGDRIVER v3.03 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  3143.     AX = 0041h
  3144.     BX = column in screen space
  3145.     CX = row in screen space
  3146. Return: AX = color value of pixel (0 to num_colors-1)
  3147.         0000h in text modes
  3148. Note:    For FGDRIVER v1.10, this function was "FG_SETHPAGE" (see AX=0091h);
  3149.       "FG_GETPIXEL" was AX=0020h
  3150. SeeAlso: AX=0030h,AX=0032h,AX=0076h,AX=0077h
  3151. --------V-620042-----------------------------
  3152. INT 62 u - FGDRIVER v3.03 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  3153.     AX = 0042h
  3154.     ES:BX -> variable pointer record (see #1940)
  3155.     CX = DAC register number
  3156. Return: variables updated
  3157. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCATE" (see AX=0000h);
  3158.       "FG_GETRGB" was AX=001Ch
  3159.     This call is ignored in text modes and CGA/EGA video modes (since
  3160.       they do not use DAC registers)
  3161. SeeAlso: AX=0035h,AX=006Fh,AX=008Eh
  3162.  
  3163. Format of FGDRIVER variable pointer record:
  3164. Offset    Size    Description    (Table 1940)
  3165.  00h    WORD    segment of WORD buffer for red component of DAC register
  3166.  02h    WORD    offset of WORD buffer for red component
  3167.  04h    WORD    segment of WORD buffer for green component of DAC register
  3168.  06h    WORD    offset of WORD buffer for green component
  3169.  08h    WORD    segment of WORD buffer for blue component of DAC register
  3170.  0Ah    WORD    offset of WORD buffer for blue component
  3171. --------V-620043-----------------------------
  3172. INT 62 u - FGDRIVER v3.03 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  3173.     AX = 0043h
  3174. Return: AX = visible video page (0000h-003Fh)
  3175. Note:    For FGDRIVER v1.10, this function was "FG_FREEPAGE" (see AX=002Eh);
  3176.       "FG_GETVPAGE" was AX=003Eh
  3177. SeeAlso: AX=0037h,AX=0040h,AX=0098h
  3178. --------V-620044-----------------------------
  3179. INT 62 u - FGDRIVER v3.03 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  3180.     AX = 0044h
  3181.     BX = joystick number (0001h or 0002h)
  3182. Return: AX = horizontal position of joystick
  3183.         FFFFh if joystick uninitialized or not present
  3184. Notes:    For FGDRIVER v1.10, this function was "FG_GETADDR" (see AX=002Fh);
  3185.       "FG_GETXJOY" was AX=0076h
  3186.     The actual coordinates are processor- and joystick-dependent
  3187.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  3188. SeeAlso: AX=0009h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  3189. --------V-620045-----------------------------
  3190. INT 62 u - FGDRIVER v3.03 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  3191.     AX = 0045h
  3192. Return: AX = screen space X coordinate of graphics cursor position
  3193. Note:    For FGDRIVER v1.10, this function was "FG_RESIZE" (see AX=0082h);
  3194.       "FG_GETXPOS" was AX=0021h
  3195. SeeAlso: AX=0047h,AX=0068h,AX=0069h
  3196. --------V-620046-----------------------------
  3197. INT 62 u - FGDRIVER v3.03 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  3198.     AX = 0046h
  3199.     BX = joystick number (0001h or 0002h)
  3200. Return: AX = vertical position of joystick
  3201.         FFFFh if joystick uninitialized or not present
  3202. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAP" (see AX=003Ch);
  3203.       "FG_GETYJOY" was AX=0077h
  3204.     The actual coordinates are processor- and joystick-dependent
  3205.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  3206. SeeAlso: AX=0009h,AX=0044h,AX=004Dh,AX=0050h,AX=0061h
  3207. --------V-620047-----------------------------
  3208. INT 62 u - FGDRIVER v3.03 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
  3209.     AX = 0047h
  3210. Return: AX = screen space Y coordinate of graphics cursor position
  3211. Note:    For FGDRIVER v1.10, this function was "FG_DRAWMAP" (see AX=001Ch);
  3212.       "FG_GETYPOS" was AX=0022h
  3213. SeeAlso: AX=0045h,AX=0068h,AX=0069h
  3214. --------V-620048-----------------------------
  3215. INT 62 u - FGDRIVER v3.03 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  3216.     AX = 0048h
  3217. Notes:    For FGDRIVER v1.10, this function was "FG_GETIMAGE" (see AX=0038h);
  3218.       "FG_HUSH" was AX=008Eh
  3219.     This function immediately stops any sounds started with "FG_MUSICB",
  3220.       "FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
  3221.       is playing
  3222. SeeAlso: AX=0049h,AX=006Bh,AX=009Eh,AX=00ABh
  3223. --------V-620049-----------------------------
  3224. INT 62 u - FGDRIVER v3.03 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  3225.     AX = 0049h
  3226. Program: FGDRIVER is the external video driver for the shareware
  3227.       Fastgraph/Light by Ted Gruber Software
  3228. Notes:    For FGDRIVER v1.10, this function was "FG_DRWIMAGE" (see AX=0022h);
  3229.       "FG_HUSHNEXT" was AX=008Fh
  3230.     This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  3231.       or "FG_VOICES" after the current repetition completes; it is ignored
  3232.       unless asynchronous sound is continuous
  3233. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3234. --------V-62004A-----------------------------
  3235. INT 62 u - FGDRIVER v3.03 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
  3236.     AX = 004Ah
  3237.     ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
  3238.           images
  3239.     CX = size of buffer in bytes or 0000h to use internal buffer
  3240. Notes:    For FGDRIVER v1.10, this function was "FG_CLPIMAGE" (see AX=0010h);
  3241.       "FG_IMAGEBUF" did not exist yet
  3242.     Fastgraph's internal buffer is 4096 bytes; this function allows the
  3243.       application to define a larger buffer which will typically speed
  3244.       processing
  3245. SeeAlso: AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3246. --------V-62004B-----------------------------
  3247. INT 62 u - FGDRIVER v3.03 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  3248.     AX = 004Bh
  3249.     BX = image width in pixels
  3250.     CX = image height in pixels
  3251. Note:    For FGDRIVER v1.10, this function was "FG_REVIMAGE" (see AX=0085h);
  3252.       "FG_IMAGESIZ" was AX=0062h
  3253. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  3254. SeeAlso: AX=0031h,AX=007Dh
  3255. --------V-62004C-----------------------------
  3256. INT 62 u - FGDRIVER v3.03 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  3257.     AX = 004Ch
  3258. Return: AX = status
  3259.         0000h successful
  3260.         FFFFh expanded memory manager inaccessible or not installed
  3261. Notes:    For FGDRIVER v1.10, this function was "FG_FLPIMAGE" (see AX=002Ch);
  3262.       "FG_INITEMS" was AX=00A0h
  3263. SeeAlso: AX=0002h,AX=004Eh
  3264. --------V-62004D-----------------------------
  3265. INT 62 u - FGDRIVER v3.03 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  3266.     AX = 004Dh
  3267.     BX = joystick number (0001h or 0002h)
  3268. Return: AX = status
  3269.         0000h successful
  3270.         FFFFh joystick not connected or no game port
  3271. Notes:    For FGDRIVER v1.10, this function was "FG_DISPLAY" (see AX=0019h);
  3272.       "FG_INITJOY" was AX=0075h
  3273.     Fastgraph assumes that the requested joystick is centered at the time
  3274.       this function is called
  3275. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=0050h,AX=0061h
  3276. --------V-62004E-----------------------------
  3277. INT 62 u - FGDRIVER v3.03 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  3278.     AX = 004Eh
  3279. Return: AX = status
  3280.         0000h successful
  3281.         FFFFh extended memory manager inaccessible or not installed
  3282. Note:    For FGDRIVER v1.10, this function was "FG_DISPLAYP" (see AX=001Ah);
  3283.       "FG_INITXMS" was AX=00A1h
  3284. SeeAlso: AX=0003h,AX=004Ch
  3285. --------V-62004F-----------------------------
  3286. INT 62 u - FDGRIVER v3.03 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
  3287.     AX = 004Fh
  3288.     ES:BX -> vertex array
  3289.     CX = number of vertices
  3290.     DX = screen space column of point to test
  3291.     SI = screen space row of point to test
  3292. Return: AX = result
  3293.         0000h point is outside polygon
  3294.         0001h point is inside polygon
  3295.         undefined if not a convex polygon
  3296. Note:    For FGDRIVER v1.10, this function was "FG_DISPFILE" (see AX=0018h);
  3297.       "FG_INSIDE" did not exist yet
  3298. SeeAlso: AX=0078h,AX=0079h,AX=007Ah
  3299. --------V-620050-----------------------------
  3300. INT 62 u - FGDRIVER v3.03 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  3301.     AX = 0050h
  3302.     CX = joystick number (0001h or 0002h)
  3303.     ES:BX -> variable pointer record (see #1941)
  3304. Notes:    For FGDRIVER v1.10, this function was "FG_PATTERN" (see AX=0072h);
  3305.       "FG_INTJOY" was AX=0079h
  3306.     If the indicated joystick has not been initialized with AX=0075h, both
  3307.       the button code and joystick position will be set to 00h
  3308.     If either button is pressed, a button code of 0Dh is returned;
  3309.       otherwise, a button code of 00h is returned
  3310. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=004Dh,AX=0061h
  3311.  
  3312. Format of FGDRIVER variable pointer record:
  3313. Offset    Size    Description    (Table 1941)
  3314.  00h    WORD    segment of BYTE buffer for button code
  3315.  02h    WORD    offset of BYTE buffer for button code
  3316.  04h    WORD    segment of BYTE buffer for joystick position
  3317.  06h    WORD    offset of BYTE buffer for joystick position
  3318. --------V-620051-----------------------------
  3319. INT 62 u - FGDRIVER v3.03 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  3320.     AX = 0051h
  3321.     ES:BX -> variable pointer record (see #1942)
  3322. Return: variables updated
  3323. Notes:    For FGDRIVER v1.10, this function was "FG_DRAWMASK" (see AX=001Dh);
  3324.       "FG_INTKEY" was AX=006Fh
  3325.     If the keyboard buffer is empty, both the ASCII and extended keycodes
  3326.       are set to 00h
  3327. SeeAlso: AX=000Ah,AX=003Ah,AX=0054h,AX=00ADh,INT 16/AH=01h
  3328.  
  3329. Format of FGDRIVER variable pointer record:
  3330. Offset    Size    Description    (Table 1942)
  3331.  00h    WORD    segment of BYTE buffer for ASCII keycode
  3332.  02h    WORD    offset of BYTE buffer for ASCII keycode
  3333.  04h    WORD    segment of BYTE buffer for extended keycode
  3334.  06h    WORD    offset of BYTE buffer for extended keycode
  3335. --------V-620052-----------------------------
  3336. INT 62 u - FGDRIVER v3.03 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
  3337.     AX = 0052h
  3338.     BX = horizontal justification
  3339.           (00h centered, 01h right-justified, FFh left-justified)
  3340.     CX = vertical justification
  3341.           (00h centered, 01h top of characters, FFh bottom of chars)
  3342. Note:    For FGDRIVER v1.10, this function was "FG_CLIPMASK" (see AX=000Fh);
  3343.       "FG_JUSTIFY" did not exist yet
  3344. SeeAlso: AX=000Ch,AX=002Dh,AX=007Ch
  3345. --------V-620053-----------------------------
  3346. INT 62 u - FGDRIVER v3.03 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
  3347.     AX = 0053h
  3348.     BX = new state (0000h disabled, 0001h enabled)
  3349. Notes:    For FGDRIVER v1.10, this function was "FG_REVMASK" (see AX=0086h);
  3350.       "FG_KBINIT" did not exist yet
  3351.     When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
  3352.       "FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
  3353.       services become unavailable
  3354. SeeAlso: AX=0054h
  3355. --------V-620054-----------------------------
  3356. INT 62 u - FGDRIVER v3.03 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
  3357.     AX = 0054h
  3358.     BX = scan code of desired key
  3359. Return: AX = state
  3360.         0000h key is not pressed
  3361.         0001h key is currently pressed
  3362. Notes:    For FGDRIVER v1.10, this function was "FG_FLIPMASK" (see AX=002Ah);
  3363.       "FG_KBTEST" did not exist yet
  3364.     The low-level keyboard handler must have been enabled with AX=0053h
  3365. SeeAlso: AX=0053h,INT 16/AH=01h
  3366. --------V-620055-----------------------------
  3367. INT 62 u - FGDRIVER v3.03 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  3368.     AX = 0055h
  3369.     BX = row
  3370.     CX = column
  3371. Notes:    For FGDRIVER v1.10, this function was unused; "FG_LOCATE" was AX=0033h
  3372.     There are only eight text cursors shared by successive groups of
  3373.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  3374.       share the second, etc)
  3375. SeeAlso: AX=0045h,AX=0047h,AX=0068h,AX=00AFh
  3376. --------V-620056-----------------------------
  3377. INT 62 u - FGDRIVER v3.03 - UNUSED
  3378.     AX = 0056h
  3379. Return: AX destroyed
  3380. --------V-620057-----------------------------
  3381. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  3382.     AX = 0057h
  3383.     BX = left edge in screen space units
  3384.     CX = right edge in screen space units
  3385.     DX = top edge in screen space units
  3386.     SI = bottom edge in screen space units
  3387.     ES:DI -> ASCIZ filename of PCX file to create
  3388. Return: AX = status
  3389.         0000h successful
  3390.         0001h file not created
  3391. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPCX" was AX=0061h
  3392.     The PCX file is created from the specified region of the active video
  3393.       page; the left and right edges are adjusted to a byte boundary if
  3394.       necessary
  3395.     If the specified file already exists, it is overwritten
  3396.     This call is ignored in text and Hercules low-resolution graphics modes
  3397. SeeAlso: AX=004Ah,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3398. --------V-620058-----------------------------
  3399. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
  3400.     AX = 0058h
  3401.     BX = left edge in screen space units
  3402.     CX = right edge in screen space units
  3403.     DX = top edge in screen space units
  3404.     SI = bottom edge in screen space units
  3405.     ES:DI -> ASCIZ filename of PPR file to create
  3406. Return: AX = status
  3407.         0000h successful
  3408.         0001h file not created
  3409. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPPR" did not
  3410.       exist yet
  3411.     The PPR file is created from the specified region of the active video
  3412.       page; the left and right edges are adjusted to byte boundaries if
  3413.       necessary
  3414.     If the specified file already exists, it is overwritten
  3415.     This call is ignored in text modes
  3416. SeeAlso: AX=004Ah,AX=0057h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3417. --------V-620059-----------------------------
  3418. INT 62 u - FGDRIVER v3.03 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
  3419.     AX = 0059h
  3420.     BX = left edge in screen space units
  3421.     CX = right edge in screen space units
  3422.     DX = top edge in screen space units
  3423.     SI = bottom edge in screen space units
  3424.     ES:DI -> ASCIZ filename of SPR file to create
  3425. Return: AX = status
  3426.         0000h successful
  3427.         0001h file not created
  3428. Note:    For FGDRIVER v1.10, this function was unused; "FG_MAKESPR" did not
  3429.       exist yet
  3430.     The SPR file is created from the specified region of the active video
  3431.       page; the left and right edges are adjusted to byte boundaries if
  3432.       necessary
  3433.     If the specified file already exists, it is overwritten
  3434.     This call is ignored in text modes
  3435. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=009Ah,AX=009Bh,AX=009Ch
  3436. --------V-62005A-----------------------------
  3437. INT 62 u - FGDRIVER v3.03 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  3438.     AX = 005Ah
  3439.     BX = red component
  3440.     CX = green component
  3441.     DX = blue component
  3442. Return: AX = mode-specific palette value corresponding to specified components
  3443. Notes:    For FGDRIVER v1.10, this function was "FG_SAVE" (see AX=0087h);
  3444.       "FG_MAPRGB" was AX=001Dh
  3445.     This function is only meaningful in 16-color graphics modes
  3446. SeeAlso: AX=0042h,AX=0096h
  3447. --------V-62005B-----------------------------
  3448. INT 62 u - FGDRIVER v3.03 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  3449.     AX = 005Bh
  3450. Return: AX = delay units per clock tick (processor-dependent)
  3451. Notes:    For FGDRIVER v1.10, this function was "FG_RESTORE" (see AX=0083h);
  3452.       "FG_MEASURE" was AX=0098h
  3453.     These delay units are used by "FG_STALL" (see AX=009Fh)
  3454. SeeAlso: AX=009Fh
  3455. --------V-62005C-----------------------------
  3456. INT 62 u - FGDRIVER v3.03 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  3457.     AX = 005Ch
  3458. Return: DX:AX = number of bytes of conventional memory available
  3459. Note:    For FGDRIVER v1.10, this function was "FG_TRANSFER" (see AX=00A9h);
  3460.       "FG_MEMAVAIL" was AX=009Bh
  3461. SeeAlso: AX=004Ch,AX=005Dh
  3462. --------V-62005D-----------------------------
  3463. INT 62 u - FGDRIVER v3.03 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
  3464.     AX = 005Dh
  3465. Return: AX = size of video memory in KB
  3466. Notes:    For FGDRIVER v1.10, this function was "FG_TCXFER" (see AX=00A6h);
  3467.       "FG_MEMORY" did not exist yet
  3468.     You must first call "FG_SVGAINIT" (see AX=00A1h) before using this
  3469.       function
  3470. SeeAlso: AX=005Ch
  3471. --------V-62005E-----------------------------
  3472. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  3473.     AX = 005Eh
  3474.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  3475.           -1=left release, -2=right release, -3=middle release)
  3476.     ES:BX -> variable pointer record (see #1943)
  3477. Return: variables updated
  3478. Notes:    For FGDRIVER v1.10, this function was "FG_TCMASK" (see AX=00A5h);
  3479.       "FG_MOUSEBUT" was AX=007Ch
  3480.     This function returns the count of presses or releases since the last
  3481.       call to this function; if the count is zero, row and column will
  3482.       also be zero
  3483. SeeAlso: AX=005Fh,AX=0061h,AX=0064h
  3484.  
  3485. Format of FGDRIVER variable pointer record:
  3486. Offset    Size    Description    (Table 1943)
  3487.  00h    WORD    segment of WORD buffer for press/release count
  3488.  02h    WORD    offset of WORD buffer for press/release count
  3489.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  3490.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  3491.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  3492.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  3493. --------V-62005F-----------------------------
  3494. INT 62 u - FGDRIVER v3.03 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  3495.     AX = 005Fh
  3496.     BX = screen mask
  3497.     CX = cursor mask
  3498. Notes:    For FGDRIVER v1.10, this function was "FG_COPYPAGE" (see AX=0012h);
  3499.       "FG_MOUSECUR" was AX=007Eh
  3500.     This call is ignored in graphics modes
  3501. SeeAlso: AX=0065h,AX=0067h
  3502. --------V-620060-----------------------------
  3503. INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
  3504.     AX = 0060h
  3505.     ES:BX -> ASCIZ filename
  3506.     CX = flags
  3507.         bit 0: use current palette rather than PCX file's palette
  3508.         bits 1-15 reserved (0)
  3509. Return: AX = status
  3510.         0000h success
  3511.         0001h file not found
  3512.         0002h file is not a valid PCX file
  3513. Notes:    This call is ignored in text modes and Hercules low-resolution graphics
  3514.     The image is displayed with its upper left corner at the current
  3515.       graphics cursor position
  3516. SeeAlso: AX=009Ah
  3517. --------V-620060-----------------------------
  3518. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
  3519.     AX = 0060h
  3520. Notes:    For FGDRIVER v1.10, this function was "FG_DISPPCX", which no longer
  3521.       exists; "FG_MOUSEFIN" did not exist yet
  3522.     This function should be called before switching back to text mode if
  3523.       "FG_MOUSEINI" was called while in an SVGA graphics mode
  3524. SeeAlso: AX=0061h
  3525. --------V-620061-----------------------------
  3526. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  3527.     AX = 0061h
  3528. Return: AX = status
  3529.         0002h two-button mouse
  3530.         0003h three-button mouse
  3531.         FFFFh initialization failed
  3532. Notes:    For FGDRIVER v1.10, this function was "FG_MAKEPCX" (see AX=0057h);
  3533.       "FG_MOUSEINI" was AX=007Ah
  3534.     After this call, the mouse cursor is invisible
  3535. SeeAlso: AX=0060h"3.03",AX=0062h,AX=0066h
  3536. --------V-620062-----------------------------
  3537. INT 62 u - FGDRIVER v3.03 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  3538.     AX = 0062h
  3539.     BX = left-most position allowed for mouse cursor
  3540.     CX = right-most position allowed
  3541.     DX = top-most position allowed
  3542.     SI = bottom-most position allowed
  3543. Note:    For FGDRIVER v1.10, this function was "FG_IMAGESIZ" (see AX=004Bh);
  3544.       "FG_MOUSELIM" was AX=0080h
  3545. SeeAlso: AX=0061h,AX=0063h,INT 33/AX=0007h,INT 33/AX=0008h
  3546. --------V-620063-----------------------------
  3547. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  3548.     AX = 0063h
  3549.     BX = new column
  3550.     CX = new row
  3551. Notes:    For FGDRIVER v1.10, this function was unused;"FG_MOUSEMOV" was AX=0081h
  3552.     This function will not move the mouse cursor outside the bounding box
  3553.       specified with AX=0080h
  3554. SeeAlso: AX=0062h,AX=0064h,INT 33/AX=0004h
  3555. --------V-620064-----------------------------
  3556. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  3557.     AX = 0064h
  3558.     ES:BX -> variable pointer record (see #1944)
  3559. Notes:    For FGDRIVER v1.10, this function was "FG_FADEIN" (see AX=0027h);
  3560.       "FG_MOUSEPOS" was AX=007Dh
  3561. SeeAlso: AX=0063h
  3562.  
  3563. Format of FGDRIVER variable pointer record:
  3564. Offset    Size    Description    (Table 1944)
  3565.  00h    WORD    segment of WORD buffer for mouse column
  3566.  02h    WORD    offset of WORD buffer for mouse column
  3567.  04h    WORD    segment of WORD buffer for mouse row
  3568.  06h    WORD    offset of WORD buffer for mouse row
  3569.  08h    WORD    segment of WORD buffer for button status
  3570.  0Ah    WORD    offset of WORD buffer for button status
  3571. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  3572. --------V-620065-----------------------------
  3573. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  3574.     AX = 0065h
  3575.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  3576.     CX = X offset of hot spot from upper left corner
  3577.     DX = Y offset of hot spot from upper left corner
  3578. Notes:    For FGDRIVER v1.10, this function was "FG_FADEOUT" (see AX=0028h);
  3579.       "FG_MOUSEPTR" was AX=007Fh
  3580.     This call is ignored in text modes
  3581. SeeAlso: AX=005Fh,INT 33/AX=0009h
  3582. --------V-620066-----------------------------
  3583. INT 62 u - FGDRIVER v3.03 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  3584.     AX = 0066h
  3585.     BX = horizontal mickeys per eight pixels of movement (default 16)
  3586.     CX = vertical mickeys per eight pixels of movement (default 16)
  3587. Note:    For FGDRIVER v1.10, this function was "FG_PAN" (see AX=0071h);
  3588.       "FG_MOUSESPD" was AX=0082h
  3589. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  3590. --------V-620067-----------------------------
  3591. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  3592.     AX = 0067h
  3593.     BX = new state (0000h invisible, 0001h visible)
  3594. Note:    For FGDRIVER v1.10, this function was "FG_SCROLL" (see AX=0089h);
  3595.       "FG_MOUSEVIS" was AX=007Bh
  3596. SeeAlso: AX=0061h,INT 33/AX=0001h,INT 33/AX=0002h
  3597. --------V-620068-----------------------------
  3598. INT 62 u - FGDRIVER v3.03 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  3599.     AX = 0068h
  3600.     BX = new column
  3601.     CX = new row
  3602. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVE" was AX=0023h
  3603.     This call is ignored in text modes
  3604. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0063h,AX=0069h,AX=00AFh
  3605. --------V-620069-----------------------------
  3606. INT 62 u - FGDRIVER v3.03 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  3607.     AX = 0069h
  3608.     BX = column offset
  3609.     CX = row offset
  3610. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVEREL" was AX=0024h
  3611.     This call is ignored in text modes
  3612. SeeAlso: AX=0045h,AX=0047h,AX=0068h
  3613. --------V-62006A-----------------------------
  3614. INT 62 u - FGDRIVER v3.03 - "FG_MUSIC" - PLAY SERIES OF NOTES
  3615.     AX = 006Ah
  3616.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  3617. Return: after music completed
  3618. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSIC" was AX=008Ch
  3619.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  3620.       AX=008Dh) is already in progress
  3621. SeeAlso: AX=006Bh,AX=009Dh,AX=00AAh
  3622. --------V-62006B-----------------------------
  3623. INT 62 u - FGDRIVER v3.03 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  3624.     AX = 006Bh
  3625.     CX = number of repetitions (negative = continuous play)
  3626.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  3627. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSICB" was AX=008Dh
  3628.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  3629.       AX=008Dh) is already in progress
  3630. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3631. --------V-62006C-----------------------------
  3632. INT 62 u - FGDRIVER v3.03 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  3633.     AX = 006Ch
  3634. Return: AX = NumLock state (0000h off, 0001h on)
  3635. Note:    For FGDRIVER v1.10, this function was unused; "FG_NUMLOCK" was AX=0072h
  3636. SeeAlso: AX=000Ah,AX=0088h,AX=008Bh,AX=0094h
  3637. --------V-62006D-----------------------------
  3638. INT 62 u - FGDRIVER v3.03 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
  3639.     AX = 006Dh
  3640. Return: DX:AX = page size in bytes
  3641. Note:    For FGDRIVER v1.10, this function was "FG_WAITKEY" (see AX=00ADh);
  3642.       "FG_PAGESIZE" did not exist yet
  3643. SeeAlso: AX=005Dh
  3644. --------V-62006E-----------------------------
  3645. INT 62 u - FGDRIVER v3.03 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  3646.     AX = 006Eh
  3647.     BX = column
  3648.     CX = row
  3649. Notes:    For FGDRIVER v1.10, this function was "FG_GETKEY" (see AX=003Ah);
  3650.       "FG_PAINT" was AX=002Fh
  3651.     This function fills an arbitrary closed region around the specified
  3652.       point with the current color; the screen edges are not considered
  3653.       region boundaries
  3654.     This call is ignored in text modes
  3655. SeeAlso: AX=002Bh
  3656. --------V-62006F-----------------------------
  3657. INT 62 u - FGDRIVER v3.03 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  3658.     AX = 006Fh
  3659. ---CGA 4-color graphics---
  3660.     BX = CGA paletee number
  3661.     CX = background color
  3662. ---CGA 2-color graphics---
  3663.     BX ignored
  3664.     CX = foreground color
  3665. ---16-color graphics---
  3666.     BX = palette register number
  3667.     CX = palette value
  3668. ---256-color graphics---
  3669.     BX = DAC register number
  3670.     CX =  DAC value
  3671. Notes:    For FGDRIVER v1.10, this function was "FG_INTKEY" (see AX=0051h);
  3672.       "FG_PALETTE" was AX=0017h
  3673.     This function is ignored in text modes and Hercules graphics modes
  3674.     Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  3675. SeeAlso: AX=0035h,AX=0042h,AX=0070h,AX=008Eh
  3676. --------V-620070-----------------------------
  3677. INT 62 u - FGDRIVER v3.03 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  3678.     AX = 0070h
  3679.     ES:BX -> array of 16 WORDs containing values for palette registers
  3680.           (or first 16 DAC registers in 256-color modes)
  3681. Notes:    For FGDRIVER v1.10, this function was "FG_CAPSLOCK" (see AX=000Ah);
  3682.       "FG_PALETTES" was AX=0018h
  3683.     This function is ignored in text modes, CGA and Hercules graphics modes
  3684. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,AX=008Eh
  3685. --------V-620071-----------------------------
  3686. INT 62 u - FGDRIVER v3.03 - "FG_PAN" - SET SCREEN ORIGIN
  3687.     AX = 0071h
  3688.     BX = new column for screen origin
  3689.     CX = new row for screen origin
  3690. Note:    For FGDRIVER v1.10, this function was "FG_SETCAPS" (see AX=008Bh);
  3691.       "FG_PAN" was AX=0066h
  3692. SeeAlso: AX=0095h
  3693. --------V-620072-----------------------------
  3694. INT 62 u - FGDRIVER v3.03 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  3695.     AX = 0072h
  3696.     BX = index of pattern to define
  3697.     CX = number of predefined display pattern
  3698. Notes:    For FGDRIVER v1.10, this function was "FG_NUMLOCK" (see AX=006Ch);
  3699.       "FG_PATTERN" was AX=0050h
  3700.     When displaying a pixel run map, Fastgraph uses the pattern associated
  3701.       with each color index rather than displaying the actual color
  3702.     This call has no effect in text and 256-color graphics modes
  3703. SeeAlso: AX=0021h,AX=0039h
  3704. --------V-620073-----------------------------
  3705. INT 62 u - FGDRIVER v3.03 - "FG_PCXHEAD" - GET PCX FILE HEADER
  3706.     AX = 0073h
  3707.     ES:BX -> variable pointer record (see #1945)
  3708. Return: AX = status
  3709.         0000h successful
  3710.         FFFEh not a PCX file
  3711.         FFFFh file does not exist
  3712. Note:    For FGDRIVER v1.10, this function was "FG_SETNUM" (see AX=0094h);
  3713.       "FG_PCXHEAD" did not exist yet
  3714. SeeAlso: AX=0074h,AX=009Ah
  3715.  
  3716. Format of FGDRIVER variable pointer record:
  3717. Offset    Size    Description    (Table 1945)
  3718.  00h    WORD    segment of ASCIZ filename
  3719.  02h    WORD    offset of ASCIZ filename
  3720.  04h    WORD    segment of 128-byte buffer for PCX header
  3721.  06h    WORD    offset of 128-byte buffer for PCX header
  3722. --------V-620074-----------------------------
  3723. INT 62 u - FGDRIVER v3.03 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
  3724.     AX = 0074h
  3725.     ES:BX -> PCX header (see AX=0073h)
  3726. Return: AX = optimal video mode for PCX file
  3727.         FFFEh not a valid PCX header
  3728.         FFFFh unable to determine compatible video mode
  3729. Note:    For FGDRIVER v1.10, this function was "FG_SCRLOCK" (see AX=0088h);
  3730.       "FG_PCXMODE" did not exist yet
  3731. SeeAlso: AX=0073h,AX=009Ah
  3732. --------V-620075-----------------------------
  3733. INT 62 u - FGDRIVER v3.03 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  3734.     AX = 0075h
  3735. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  3736. Note:    For FGDRIVER v1.10, this function was "FG_INITJOY" (see AX=004Dh);
  3737.       "FG_PLAYING" was AX=0091h
  3738. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3739. --------V-620076-----------------------------
  3740. INT 62 u - FGDRIVER v3.03 - "FG_POINT" - DISPLAY A PIXEL
  3741.     AX = 0076h
  3742.     BX = column
  3743.     CX = row
  3744. Notes:    For FGDRIVER v1.10, this function was "FG_GETXJOY" (see AX=0044h);
  3745.       "FG_POINT" was AX=001Fh
  3746.     This call is ignored in text modes
  3747. SeeAlso: AX=0006h,AX=001Bh,AX=0041h,AX=0077h
  3748. --------V-620077-----------------------------
  3749. INT 62 u - FGDRIVER v3.03 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
  3750.     AX = 0077h
  3751.     BX = column
  3752.     CX = row
  3753. Notes:    For FGDRIVER v1.10, this function was "FG_GETYJOY" (see AX=0046h);
  3754.       "FG_POINTX" did not exist yet
  3755.     This call is ignored in text modes
  3756. SeeAlso: AX=0041h,AX=0076h
  3757. --------V-620078-----------------------------
  3758. INT 62 u - FGDRIVER v3.03 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
  3759.     AX = 0078h
  3760.     CX = number of vertices
  3761.     ES:BX -> variable pointer record (see #1946)
  3762. Notes:    For FGDRIVER v1.10, this function was "FG_BUTTON" (see AX=0009h);
  3763.       "FG_POLYFILL" did not exist yet
  3764.     The vertex array consists of pairs of words specifying the X and Y
  3765.       coordinates of each vertex; the work array is used internally and
  3766.       must contain at least four times as many bytes as the polygon is
  3767.       high in pixels
  3768.     This function is ignored in text modes
  3769.     If the polygon is non-convex, only a portion of it may be filled
  3770. SeeAlso: AX=000Eh,AX=0025h,AX=0079h,AX=007Ah,AX=007Bh
  3771.  
  3772. Format of FGDRIVER variable pointer record:
  3773. Offset    Size    Description    (Table 1946)
  3774.  00h    WORD    segment of vertex array
  3775.  02h    WORD    offset of vertex array
  3776.  04h    WORD    segment of work array
  3777.  06h    WORD    offset of work array
  3778. --------V-620079-----------------------------
  3779. INT 62 u - FGDRIVER v3.03 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  3780.     AX = 0079h
  3781.     CX = number of vertices in polygon
  3782.     ES:BX -> variable pointer record (see #1947)
  3783. Notes:    For FGDRIVER v1.10, this function was "FG_INTJOY" (see AX=0050h);
  3784.       "FG_POLYGON" was AX=002Eh
  3785.     This call is ignored in text modes
  3786. SeeAlso: AX=0078h,AX=007Ah,AX=007Bh
  3787.  
  3788. Format of FGDRIVER variable pointer record:
  3789. Offset    Size    Description    (Table 1947)
  3790.  00h    WORD    segment of WORD array containing vertex columns
  3791.  02h    WORD    offset of WORD array containing vertex columns
  3792.  04h    WORD    segment of WORD array containing vertex rows
  3793.  06h    WORD    offset of WORD array containing vertex rows
  3794. --------V-62007A-----------------------------
  3795. INT 62 u - FGDRIVER v3.03 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
  3796.     AX = 007Ah
  3797.     CX = number of vertices in polygon
  3798.     ES:BX -> vertex array (see #1948)
  3799. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEINI" (see AX=0061h);
  3800.       "FG_POLYLINE" did not exist yet
  3801.     This function is equivalent to "FG_POLYGON", but uses only a single
  3802.       array to define the vertices
  3803.     This call is ignored in text modes
  3804. SeeAlso: AX=0076h,AX=0078h,AX=0079h,AX=007Bh
  3805.  
  3806. Format of FGDRIVER vertex array element:
  3807. Offset    Size    Description    (Table 1948)
  3808.  00h    WORD    column
  3809.  02h    WORD    row
  3810. --------V-62007B-----------------------------
  3811. INT 62 u - FGDRIVER v3.03 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
  3812.     AX = 007Bh
  3813.     BX = horizontal offset (default 0)
  3814.     CX = vertical offset (default 0)
  3815. Desc:    define the offsets applied to all vertices of polygons drawn with
  3816.       "FG_POLYFILL" or "FG_POLYLINE"
  3817. Note:    For FGDRIVER v1.10, this function was "FG_MOUSEVIS" (see AX=0067h);
  3818.       "FG_POLYOFF" did not exist yet
  3819. SeeAlso: AX=0078h,AX=007Ah
  3820. --------V-62007C-----------------------------
  3821. INT 62 u - FGDRIVER v3.03 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
  3822.     AX = 007Ch
  3823.     CX = length of string
  3824.     ES:BX -> string to display
  3825. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEBUT" (see AX=005Eh);
  3826.       "FG_PRINT" did not exist yet
  3827.     The string is displayed in the current color, and the graphics cursor
  3828.       is updated to be just to the right of the last displayed character
  3829.     This function is ignored in text modes
  3830. SeeAlso: AX=000Ch,AX=002Dh,AX=0052h
  3831. --------V-62007D-----------------------------
  3832. INT 62 u - FGDRIVER v3.03 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
  3833.     AX = 007Dh
  3834.     ES:BX -> buffer containing previously-saved image
  3835.     CX = left edge
  3836.     DX = right edge
  3837.     SI = top edge
  3838.     DI = bottom edge
  3839. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPOS" (see AX=0064h);
  3840.       "FG_PUTBLOCK" did not exist yet
  3841.     In text modes, coordinates are character positions; in graphics modes,
  3842.       they are defined in screen space, and the left and right edges are
  3843.       adjusted to a byte boundary if necessary
  3844. SeeAlso: AX=0031h,AX=007Eh
  3845. --------V-62007E-----------------------------
  3846. INT 62 u - FGDRIVER v3.03 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
  3847.     AX = 007Eh
  3848.     ES:BX -> buffer containing mode-specific bitmap
  3849.     CX = width in bytes
  3850.     DX = height in pixel rows
  3851. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSECUR" (see AX=005Fh);
  3852.       "FG_PUTIMAGE" did not exist yet
  3853.     The bitmap is displayed with its lower left corner at the graphics
  3854.       cursor position; color 0 is NOT treated as transparent
  3855. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Dh
  3856. --------V-62007F-----------------------------
  3857. INT 62 u - FGDRIVER v3.03 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  3858.     AX = 007Fh
  3859. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPTR" (see AX=0065h);
  3860.       "FG_QUIET" was AX=0090h
  3861.     This call has no effect if there is no continuous sound playing
  3862. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00ABh
  3863. --------V-620080-----------------------------
  3864. INT 62 u - FGDRIVER v3.03 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  3865.     AX = 0080h
  3866.     BX = left edge column
  3867.     CX = right edge column
  3868.     DX = top edge row
  3869.     SI = bottom edge row
  3870. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSELIM" (see AX=0062h);
  3871.       "FG_RECT" was AX=002Ah
  3872. SeeAlso: AX=0006h,AX=0011h,AX=0021h,AX=0031h
  3873. --------V-620081-----------------------------
  3874. INT 62 u - FGDRIVER v3.03 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  3875.     AX = 0081h
  3876. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEMOV" (see AX=0063h);
  3877.       "FG_RESET" was AX=0006h
  3878.     This call is ignored in graphics modes
  3879.     The screen attributes are only restored if ANSI.SYS is loaded
  3880. SeeAlso: AX=0026h,AX=0093h
  3881. --------V-620082-----------------------------
  3882. INT 62 u - FGDRIVER v3.03 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  3883.     AX = 0082h
  3884.     BX = new page width in pixels
  3885.     CX = new page height in pixels
  3886. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSESPD" (see AX=0066h);
  3887.       "FG_RESIZE" was AX=0045h
  3888.     The visible page must be set to 0000h before making this call
  3889.     The mouse, joysticks, expanded memory, and extended memory must be
  3890.       reinitialized after this call
  3891. SeeAlso: AX=006Dh,AX=008Fh
  3892. --------V-620083-----------------------------
  3893. INT 62 u - FGDRIVER v3.03 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  3894.     AX = 0083h
  3895.     BX = left edge column
  3896.     CX = right edge column
  3897.     DX = top edge row
  3898.     SI = bottom edge row
  3899. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESTORE" was AX=005Bh
  3900.     The left and right edges are adjusted to byte boundaries if necessary
  3901. SeeAlso: AX=0087h,AX=00A6h
  3902. --------V-620084-----------------------------
  3903. INT 62 u - FGDRIVER v3.03 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  3904.     AX = 0084h
  3905. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESUME" was AX=0092h
  3906. SeeAlso: AX=009Eh,AX=00A0h
  3907. --------V-620085-----------------------------
  3908. INT 62 u - FGDRIVER v3.03 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  3909.     AX = 0085h
  3910.     ES:BX -> mode-specific bitmap
  3911.     CX = width of bitmap in bytes
  3912.     DX = height of bitmap in pixel rows
  3913. Notes:    For FGDRIVER v1.10, this function was unused;"FG_REVIMAGE" was AX=004Bh
  3914.     This call is ignored in text modes
  3915.     The image is drawn with its lower left corner at the current graphics
  3916.       cursor position
  3917. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=0086h,AX=008Ch,AX=009Ah
  3918. --------V-620086-----------------------------
  3919. INT 62 u - FGDRIVER v3.03 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  3920.     AX = 0086h
  3921.     ES:BX -> array containing image stored as a masking map (see #1936)
  3922.     CX = number of pixel runs in masking map
  3923.     DX = width of masking map in pixels
  3924. Notes:    For FGDRIVER v1.10, this function was unused; "FG_REVMASK" was AX=0053h
  3925.     This call is ignored in text modes and in native EGA and VGA graphics
  3926.       modes
  3927.     The image is drawn with its lower left corner at the current graphics
  3928.       cursor position
  3929. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0085h,AX=008Ch,AX=00A5h
  3930. --------V-620087-----------------------------
  3931. INT 62 u - FGDRIVER v3.03 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  3932.     AX = 0087h
  3933.     BX = left edge column
  3934.     CX = right edge column
  3935.     DX = top edge row
  3936.     SI = bottom edge row
  3937. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SAVE" was AX=005Ah
  3938.     The left and right edges are adjusted to byte boundaries if necessary
  3939. SeeAlso: AX=0083h,AX=00A6h
  3940. --------V-620088-----------------------------
  3941. INT 62 u - FGDRIVER v3.03 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  3942.     AX = 0088h
  3943. Return: AX = ScrollLock state (0000h off, 0001h on)
  3944. Program: FGDRIVER is the external video driver for the shareware
  3945.       Fastgraph/Light by Ted Gruber Software
  3946. Note:    For FGDRIVER v1.10, this function was "FG_SOUND" (see AX=009Dh);
  3947.       "FG_SCRLOCK" was AX=0074h
  3948. SeeAlso: AX=000Ah,AX=006Ch,AX=008Bh,AX=0094h
  3949. --------V-620089-----------------------------
  3950. INT 62 u - FGDRIVER v3.03 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  3951.     AX = 0089h
  3952.     BX = left edge column
  3953.     CX = right edge column
  3954.     DX = top edge row
  3955.     SI = bottom edge row
  3956.     DI = number of pixels by which to scroll (positive scrolls up,
  3957.           negative scrolls down)
  3958.     ES = type of scroll
  3959.         0000h circular (rows scrolled off are copied to vacated rows)
  3960.         else vacated rows are filled with the current color
  3961. Notes:    For FGDRIVER v1.10, this function was "FG_SOUNDS" (see AX=009Eh);
  3962.       "FG_SCROLL" was AX=0067h
  3963.     In graphics modes, the left and right edges are adjusted to byte
  3964.       boundaries if necessary
  3965.     Circular scrolling uses part of the hidden page as a workspace
  3966. SeeAlso: AX=0071h,AX=0095h
  3967. --------V-62008A-----------------------------
  3968. INT 62 u - FGDRIVER v3.03 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  3969.     AX = 008Ah
  3970.     BX = foreground
  3971.     CX = background
  3972.     DX = blink (0000h nonblinking, 0001h blink)
  3973. Notes:    For FGDRIVER v1.10, this function was "FG_VOICE" (see AX=00AAh);
  3974.       "FG_SETATTR" was AX=0019h
  3975.     This call is ignored in graphics modes
  3976. SeeAlso: AX=000Bh,,AX=0030h,AX=0034h
  3977. --------V-62008B-----------------------------
  3978. INT 62 u - FGDRIVER v3.03 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  3979.     AX = 008Bh
  3980.     BX = new state (0000h off, 0001h on)
  3981. Note:    For FGDRIVER v1.10, this function was "FG_VOICES" (see AX=00ABh);
  3982.       "FG_SETCAPS" was AX=0071h
  3983. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=0094h
  3984. --------V-62008C-----------------------------
  3985. INT 62 u - FGDRIVER v3.03 - "FG_SETCLIP" - SET CLIPPING REGION
  3986.     AX = 008Ch
  3987.     BX = left edge of clipping region
  3988.     CX = right edge of clipping region
  3989.     DX = top edge of clipping region
  3990.     SI = bottom edge of clipping region
  3991. Note:    For FGDRIVER v1.10, this function was "FG_MUSIC" (see AX=006Ah);
  3992.       "FG_SETCLIP" was AX=0029h
  3993. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0086h,AX=00A5h
  3994. --------V-62008D-----------------------------
  3995. INT 62 u - FGDRIVER v3.03 - "FG_SETCOLOR" - SET CURRENT COLOR
  3996.     AX = 008Dh
  3997.     BX = new color index (or text attribute in text modes)
  3998. Note:    For FGDRIVER v1.10, this function was "FG_MUSICB" (see AX=006Bh);
  3999.       "FG_SETCOLOR" was AX=001Ah
  4000. SeeAlso: AX=0016h,AX=0034h,AX=0039h
  4001. --------V-62008E-----------------------------
  4002. INT 62 u - FGDRIVER v3.03 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  4003.     AX = 008Eh
  4004.     CX = number of DAC registers to set (0001h to 0100h)
  4005.     DX = starting DAC register number (0000h to 00FFh)
  4006.     ES:BX -> buffer containing DAC red/green/blue triples
  4007. Notes:    For FGDRIVER v1.10, this function was "FG_HUSH" (see AX=0048h);
  4008.       "FG_SETDACS" was AX=00A5h
  4009.     The register number wraps back to zero after reaching FFh
  4010.     This call has no effect in text modes or graphics modes below 11h
  4011. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,INT 10/AX=1012h
  4012. --------V-62008F-----------------------------
  4013. INT 62 u - FGDRIVER v3.03 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
  4014.     AX = 008Fh
  4015.     BX = page number (00h-3Fh)
  4016.     CX = page address
  4017.     DX = page type (see #1938 at AX=0036h)
  4018. Notes:    For FGDRIVER v1.10, this function was "FG_HUSHNEXT" (see AX=0049h);
  4019.       "FG_SETENTRY" did not exist yet
  4020. SeeAlso: AX=002Eh,AX=0036h,AX=0093h
  4021. --------V-620090-----------------------------
  4022. INT 62 u - FGDRIVER v3.03 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  4023.     AX = 0090h
  4024.     BX = operation
  4025.         0000h replacement
  4026.         0001h AND
  4027.         0002h OR
  4028.         0003h XOR
  4029. Notes:    For FGDRIVER v1.10, this function was "FG_QUIET" (see AX=007Fh);
  4030.       "FG_SETFUNC" was AX=009Ch
  4031.     This function is only available in native EGA/VGA graphics modes
  4032.       (0Dh to 12h)
  4033. SeeAlso: AX=001Ch,AX=0076h
  4034. --------V-620091-----------------------------
  4035. INT 62 u - FGDRIVER v3.03 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  4036.     AX = 0091h
  4037.     BX = new hidden page (0000h to 003Fh)
  4038. Notes:    For FGDRIVER v1.10, this function was "FG_PLAYING" (see AX=0075h);
  4039.       "FG_SETHPAGE" was AX=0041h
  4040.     The specified page must be a physical page or a virtual page
  4041. SeeAlso: AX=0037h,AX=0095h,AX=0098h
  4042. --------V-620092-----------------------------
  4043. INT 62 u - FGDRIVER v3.03 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  4044.     AX = 0092h
  4045.     BX = new screen size (25, 43, 50)
  4046. Note:    For FGDRIVER v1.10, this function was "FG_RESUME" (see AX=0084h);
  4047.       "FG_SETLINES" was AX=0011h
  4048. SeeAlso: AX=003Bh
  4049. --------V-620093-----------------------------
  4050. INT 62 u - FGDRIVER v3.03 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  4051.     AX = 0093h
  4052.     BX = new video mode or FFFFh for current mode
  4053.     ES:DX -> WORD ???
  4054. Notes:    For FGDRIVER v1.10, this function was "FG_SUSPEND" (see AX=00A0h);
  4055.       "FG_SETMODE" was AX=0001h
  4056.     This call resets the active video page to page 0000h, the clipping
  4057.       region to the entire screen, text rows to 25, etc.
  4058. SeeAlso: AX=003Fh,INT 10/AH=00h
  4059.  
  4060. (Table 1949)
  4061. Values for FGDRIVER video mode:
  4062.  00h-07h standard BIOS modes
  4063.  09h    PCjr/Tandy1000 320x200x16
  4064.  0Bh    Hercules graphics 720x348
  4065.  0Ch    Hercules graphics 320x200
  4066.  0Dh-13h standard BIOS modes
  4067.  14h    VGA graphics 320x200x256
  4068.  15h    VGA graphics 320x400x256
  4069.  16h    VGA graphics 320x240x256
  4070.  17h    VGA graphics 320x480x256
  4071.  18h    SVGA graphics 640x400x256
  4072.  19h    SVGA graphics 640x480x256
  4073.  1Ah    SVGA graphics 800x600x256
  4074.  1Bh    SVGA graphics 1024x768x256
  4075.  1Ch    SVGA graphics 800x600x16
  4076.  1Dh    SVGA graphics 1024x768x16
  4077. --------V-620094-----------------------------
  4078. INT 62 u - FGDRIVER v3.03 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  4079.     AX = 0094h
  4080.     BX = new state (0000h off, 0001h on)
  4081. Note:    For FGDRIVER v1.10, this function was unused; "FG_SETNUM" was AX=0073h
  4082. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=008Bh
  4083. --------V-620095-----------------------------
  4084. INT 62 u - FGDRIVER v3.03 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  4085.     AX = 0095h
  4086.     BX = new video page (0000h to 003Fh)
  4087. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SETPAGE" was AX=003Dh
  4088.     The specified page must be a physical or virtual page
  4089. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0071h
  4090. --------V-620096-----------------------------
  4091. INT 62 u - FGDRIVER v3.03 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  4092.     AX = 0096h
  4093.     BX = palette or DAC register number
  4094.     CX = red color component
  4095.     DX = green component
  4096.     SI = blue component
  4097. Notes:    For FGDRIVER v1.10, this function was "FG_WAITFOR" (see AX=00ACh);
  4098.       "FG_SETRGB" was AX=001Bh
  4099.     The register number may be negative for Tandy, PCjr, and 200-line
  4100.       EGA graphics modes to specify an intense color
  4101.     This call has no effect in text, CGA graphics, and Hercules graphics
  4102.       modes
  4103. SeeAlso: AX=0042h
  4104. --------V-620097-----------------------------
  4105. INT 62 u - FGDRIVER v3.03 - UNUSED
  4106.     AX = 0097h
  4107. Return: AX = 0000h
  4108. Note:    For FGDRIVER v1.10, this function was "FG_STALL" (see AX=009Fh)
  4109. --------V-620098-----------------------------
  4110. INT 62 u - FGDRIVER v3.03 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  4111.     AX = 0098h
  4112.     BX = new video page (0000h to 003Fh)
  4113. Notes:    For FGDRIVER v1.10, this function was "FG_MEASURE" (see AX=005Bh);
  4114.       "FG_SETVPAGE" was AX=003Fh
  4115.     The specified page must be a physical or virtual page
  4116. SeeAlso: AX=0037h,AX=0091h,AX=0095h
  4117. --------V-620099-----------------------------
  4118. INT 62 u - FGDRIVER v3.03 - UNUSED
  4119.     AX = 0099h
  4120. Return: AX destroyed
  4121. Note:    For FGDRIVER v1.10, this function was "FG_GETCLOCK" (see AX=0033h)
  4122. --------V-62009A-----------------------------
  4123. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
  4124.     AX = 009Ah
  4125.     ES:BX -> ASCIZ filename of PCX image
  4126.     CX = flags (see #1950)
  4127. Return: AX = status
  4128.         0000h success
  4129.         0001h file not found
  4130.         0002h not a PCX file
  4131. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SHOWPCX" did not
  4132.       exist yet
  4133.     This function is ignored in text modes and Hercules low-res graphics
  4134. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=0060h"1.10",AX=009Bh,AX=009Ch
  4135.  
  4136. Bitfields for FGDRIVER flags:
  4137. Bit(s)    Description    (Table 1950)
  4138.  0    use current palette rather than PCX file's palette
  4139.  1    display image at cursor position instead of position in PCX header
  4140.  2-15    reserved
  4141. --------V-62009B-----------------------------
  4142. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
  4143.     AX = 009Bh
  4144.     ES:BX -> ASCIZ filename of packed pixel run image
  4145.     CX = width in pixels (nonzero)
  4146. Return: AX = status
  4147.         0000h successful
  4148.         0001h file not found
  4149. Notes:    For FGDRIVER v1.10, this function was "FG_MEMAVAIL" (see AX=005Ch);
  4150.       "FG_SHOWPPR" did not exist yet
  4151.     The image is displayed with its lower left corner at the current
  4152.       graphics cursor position
  4153.     This function is ignored in text modes and 256-color graphics modes
  4154. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Ch
  4155. --------V-62009C-----------------------------
  4156. INT 62 u - FGDRIVER v3.03 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
  4157.     AX = 009Ch
  4158.     ES:BX -> ASCIZ filename of standard pixel run image
  4159.     CX = width in pixels (nonzero)
  4160. Return: AX = status
  4161.         0000h successful
  4162.         0001h file not found
  4163. Notes:    For FGDRIVER v1.10, this function was "FG_SETFUNC" (see AX=0090h);
  4164.       "FG_SHOWSPR" did not exist yet
  4165.     The image is displayed with its lower left corner at the current
  4166.       graphics cursor position
  4167.     This function is ignored in text modes
  4168. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh
  4169. --------V-62009D-----------------------------
  4170. INT 62 u - FGDRIVER v3.03 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  4171.     AX = 009Dh
  4172.     BX = frequency in Hertz (18-32767)
  4173.     CX = duration in clock ticks (0000h or negative for continuous sound)
  4174. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCCMS" (see AX=0001h);
  4175.       "FG_SOUND" was AX=0088h
  4176.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  4177.       AX=008Dh) is already in progress
  4178. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  4179. --------V-62009E-----------------------------
  4180. INT 62 u - FGDRIVER v3.03 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  4181.     AX = 009Eh
  4182.     CX = number of times to cycle through sound list
  4183.     ES:BX -> sounds array (see #1951)
  4184. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCEMS" (see AX=0002h);
  4185.       "FG_SOUNDS" was AX=0089h
  4186.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  4187.       AX=008Dh) is already in progress
  4188. SeeAlso: AX=0048h,AX=006Bh,AX=009Dh,AX=00A0h,AX=00ABh
  4189.  
  4190. Format of FGDRIVER sounds array element:
  4191. Offset    Size    Description    (Table 1951)
  4192.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  4193.  02h    WORD    duration of sound in clock ticks
  4194. --------V-62009F-----------------------------
  4195. INT 62 u - FGDRIVER v3.03 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  4196.     AX = 009Fh
  4197.     BX = duration in processor-dependent delay units (see AX=005Bh)
  4198. Return: after delay elapses
  4199. Note:    For FGDRIVER v1.10, this function was "FG_ALLOCXMS" (see AX=0003h);
  4200.       "FG_STALL" was AX=0097h
  4201. SeeAlso: AX=005Bh,INT 2F/AX=1224h
  4202. --------V-6200A0-----------------------------
  4203. INT 62 u - FGDRIVER v3.03 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  4204.     AX = 00A0h
  4205. Notes:    For FGDRIVER v1.10, this function was "FG_INITEMS" (see AX=004Ch);
  4206.       "FG_SUSPEND" was AX=0093h
  4207.     This call has no effect if there is no asynchronous sound in progress
  4208.     The program must not exit while sound is suspended
  4209. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  4210. --------V-6200A1-----------------------------
  4211. INT 62 u - FGDRIVER v3.03 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
  4212.     AX = 00A1h
  4213.     BX = method (see #1952)
  4214. Return: AX = status
  4215.         0000h no VESA BIOS or supported SVGA chipset
  4216.         0001h using VESA BIOS
  4217.         0002h-0016h specific chipset being used (same as "method" below)
  4218. Notes:    For FGDRIVER v1.10, this function was "FG_INITXMS" (see AX=004Eh);
  4219.       "FG_SVGAINIT" did not exist yet
  4220.     This function must be called before attempting to set SVGA graphics
  4221.       modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
  4222.       "FG_MEMORY"
  4223. SeeAlso: AX=0023h,AX=00A2h,AX=00A3h
  4224.  
  4225. (Table 1952)
  4226. Values for FGDRIVER SVGA method:
  4227.  0000h    autodetect, give chipset-specific code priority over VESA
  4228.  0001h    autodetect, give VESA priority over chipset-specific code
  4229.  0002h    Ahead type "A"
  4230.  0003h    Ahead type "B"
  4231.  0004h    ATI 18800
  4232.  0005h    ATI 18800-1
  4233.  0006h    ATI 28800
  4234.  0007h    Chips & Technologies 82c451/455/456
  4235.  0008h    C&T 82c452
  4236.  0009h    C&T 82c453
  4237.  000Ah    Genoa 6000 series
  4238.  000Bh    Oak OTI-067
  4239.  000Ch    Paradise PVGA1a
  4240.  000Dh    Paradise WD90C00/WD90C10
  4241.  000Eh    Paradise WD90C11/WD90C30/WD90C31
  4242.  000Fh    Trident 8800
  4243.  0010h    Trident 8900
  4244.  0011h    Tseng ET3000
  4245.  0012h    Tseng ET4000
  4246.  0013h    Video7
  4247.  0014h    Cirrus Logic 5400 series
  4248.  0015h    S3
  4249.  0016h    Trident 8900B/8900C/9000
  4250. --------V-6200A2-----------------------------
  4251. INT 62 u - FGDRIVER v3.03 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
  4252.     AX = 00A2h
  4253. Return: AX = chipset information (see #1953)
  4254. Note:    For FGDRIVER v1.10, this function was "FG_BOX" (see AX=0006h);
  4255.       "FG_SVGASTAT" did not exist yet
  4256. SeeAlso: AX=0023h,AX=00A1h,AX=00A3h
  4257.  
  4258. Bitfields for FGDRIVER chipset information:
  4259. Bit(s)    Description    (Table 1953)
  4260.  0    SVGA kernel initialized
  4261.  1    VESA support enabled
  4262.  2    extended video pages available in modes 13-23
  4263.  3    SVGA chipset has separate read and write banks
  4264.  4-15    reserved (0)
  4265. --------V-6200A3-----------------------------
  4266. INT 62 u - FGDRIVER v3.03 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
  4267.     AX = 00A3h
  4268.     ES:BX -> variable pointer record (see #1954)
  4269. Note:    For FGDRIVER v1.10, this function was "FG_BOXDEPTH" (see AX=0007h);
  4270.       "FG_SVGAVER" did not exist yet
  4271. SeeAlso: AX=00A1h,AX=00A2h
  4272.  
  4273. Format of FGDRIVER variable pointer record:
  4274. Offset    Size    Description    (Table 1954)
  4275.  00h    WORD    segment of WORD buffer for major version
  4276.  02h    WORD    offset of WORD buffer for major version
  4277.  04h    WORD    segment of WORD buffer for minor version (hundredths)
  4278.  06h    WORD    offset of WORD buffer for minor version
  4279. --------V-6200A4-----------------------------
  4280. INT 62 u - FGDRIVER v3.03 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
  4281.     AX = 00A4h
  4282.     BX = color index
  4283.     CX = transparency (00h opaque, other transparent)
  4284. Notes:    For FGDRIVER v1.10, this function was "FG_GETDACS" (see AX=0035h);
  4285.       "FG_TCDEFINE" did not exist yet
  4286.     This function is ignored in text modes
  4287. SeeAlso: AX=00A5h,AX=00A6h
  4288. --------V-6200A5-----------------------------
  4289. INT 62 u - FGDRIVER v3.03 - "FG_TCMASK" - SET TRANSPARENT COLORS
  4290.     AX = 00A5h
  4291.     BX = colors to consider transparent (bit 0 = color 0, etc)
  4292. Notes:    For FGDRIVER v1.10, this function was "FG_SETDACS" (see AX=008Eh);
  4293.       "FG_TCMASK" was AX=005Eh
  4294.     This call is ignored in text modes
  4295.     The specified colors are considered transparent by "FG_TCXFER"
  4296. SeeAlso: AX=00A4h,AX=00A6h
  4297. --------V-6200A6-----------------------------
  4298. INT 62 u - FGDRIVER v3.03 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  4299.     AX = 00A6h
  4300.     CX = source video page
  4301.     DX = destination video page
  4302.     ES:BX -> copy record (see #1955)
  4303. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TCXFER" was AX=005Dh
  4304.     Pixels which are in any of the colors defined as transparent with
  4305.       "FG_TCMASK" (see AX=00A5h) are left unchanged in the destination
  4306.       region
  4307.     The source and destination regions must not overlap if they are located
  4308.       on the same page
  4309.     This call is ignored in text modes
  4310. SeeAlso: AX=00A4h,AX=00A5h,AX=00A9h
  4311. --------V-6200A7-----------------------------
  4312. INT 62 u - FGDRIVER v3.03 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  4313.     AX = 00A7h
  4314.     BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
  4315.     CX = required number of video pages (ignore memory size if <= 0)
  4316. Return: AX = status
  4317.         0000h mode not available with requested number of pages
  4318.         0001h mode is available
  4319. Note:    For FGDRIVER v1.10, this function was unused;"FG_TESTMODE" was AX=0002h
  4320. SeeAlso: AX=0005h,AX=0093h
  4321. --------V-6200A8-----------------------------
  4322. INT 62 u - FGDRIVER v3.03 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  4323.     AX = 00A8h
  4324.     CX = length of string
  4325.     ES:BX -> string
  4326. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TEXT" was AX=0032h
  4327.     The string is displayed starting at the text cursor position using the
  4328.       current text attribute (text modes) or color index (graphics modes)
  4329.     The text cursor position is updated after this call
  4330. SeeAlso: AX=000Ch,AX=007Ch
  4331. --------V-6200A9-----------------------------
  4332. INT 62 u - FGDRIVER v3.03 - "FG_TRANSFER" - COPY REGION
  4333.     AX = 00A9h
  4334.     CX = source video page
  4335.     DX = destination video page
  4336.     ES:BX -> copy record (see #1955)
  4337. Notes:    For FGDRIVER v1.10, this function was unused;"FG_TRANSFER" was AX=005Ch
  4338.     The source and destination regions must not overlap if they are located
  4339.       on the same page
  4340. SeeAlso: AX=0083h,AX=0087h,AX=0089h,AX=00A6h
  4341.  
  4342. Format of FGDRIVER copy record:
  4343. Offset    Size    Description    (Table 1955)
  4344.  00h    WORD    left edge column of source region
  4345.  02h    WORD    right edge column of source region
  4346.  04h    WORD    top edge row of source region
  4347.  06h    WORD    bottom edge row of source region
  4348.  08h    WORD    left edge of destination
  4349.  0Ah    WORD    bottom edge of destination
  4350. --------V-6200AA-----------------------------
  4351. INT 62 u - FGDRIVER v3.03 - "FG_VOICE" - START SOUND
  4352.     AX = 00AAh
  4353.     BX = channel on TI sound chip
  4354.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  4355.         5 = channel 4 with white noise
  4356.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
  4357.           2=2048 Hz for channels 4 and 5)
  4358.     DX = volume
  4359.     SI = duration in clock ticks (continuous if <= 0)
  4360. Program: FGDRIVER is the external video driver for the shareware
  4361.       Fastgraph/Light by Ted Gruber Software
  4362. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICE" was AX=008Ah
  4363.     This function is only available on the PCjr and Tandy 1000 machines
  4364. SeeAlso: AX=006Ah,AX=009Dh,AX=00ABh
  4365. --------V-6200AB-----------------------------
  4366. INT 62 u - FGDRIVER v3.03 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  4367.     AX = 00ABh
  4368.     ES:BX -> tone array (see #1956)
  4369.     CX = number of times to repeat tone array
  4370. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICES" was AX=008Bh
  4371.     This function is only available on the PCjr and Tandy 1000 machines
  4372. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00AAh
  4373.  
  4374. Format of FGDRIVER tone array element:
  4375. Offset    Size    Description    (Table 1956)
  4376.  00h    WORD    channel number (0000h terminates array)
  4377.  02h    WORD    frequency
  4378.  04h    WORD    volume
  4379.  06h    WORD    duration in 1/72.8 seconds
  4380. --------V-6200AC-----------------------------
  4381. INT 62 u - FGDRIVER v3.03 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  4382.     AX = 00ACh
  4383.     BX = duration in clock ticks
  4384. Return: after delay elapses
  4385. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITFOR" was AX=0096h
  4386. SeeAlso: AX=009Fh,INT 1A/AX=FF01h
  4387. --------V-6200AD-----------------------------
  4388. INT 62 u - FGDRIVER v3.03 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  4389.     AX = 00ADh
  4390. Return: after next key pressed
  4391. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITKEY" was AX=006Dh
  4392. SeeAlso: AX=000Ah,AX=003Ah,AX=0051h,AX=0054h,INT 16/AH=00h
  4393. --------V-6200AE-----------------------------
  4394. INT 62 u - FGDRIVER v3.03 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
  4395.     AX = 00AEh
  4396.     BX = new state (0000h disabled, 0001h enabled)
  4397. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITVR" did not
  4398.       exist yet
  4399. --------V-6200AF-----------------------------
  4400. INT 62 u - FGDRIVER v3.03 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  4401.     AX = 00AFh
  4402.     ES:BX -> variable pointers (see #1957)
  4403. Return: indicated variables filled with cursor row and column for active
  4404.       display
  4405. Note:    For FGDRIVER v1.10, this function was unused; "FG_WHERE" was AX=0034h
  4406. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0068h
  4407.  
  4408. Format of FGDRIVER variable pointers:
  4409. Offset    Size    Description    (Table 1957)
  4410.  00h    WORD    segment of WORD buffer for cursor row
  4411.  02h    WORD    offset of WORD buffer for cursor row
  4412.  04h    WORD    segment WORD buffer for cursor column
  4413.  06h    WORD    offset WORD buffer for cursor column
  4414. --------V-6200B0-----------------------------
  4415. INT 62 u - FGDRIVER v3.03 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  4416.     AX = 00B0h
  4417.     BX = screen space column
  4418. Return: AX = character space column containing specified coordinate
  4419. Note:    For FGDRIVER v1.10, this function was unused; "FG_XALPHA" was AX=000Ch
  4420. SeeAlso: AX=00B1h,AX=00B2h
  4421. --------V-6200B1-----------------------------
  4422. INT 62 u - FGDRIVER v3.03 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  4423.     AX = 00B1h
  4424.     BX = character space column
  4425. Return: AX = screen space column of leftmost pixel in specified character col
  4426. Note:    For FGDRIVER v1.10, this function was unused;"FG_XCONVERT" was AX=000Eh
  4427. SeeAlso: AX=00B0h,AX=00B3h
  4428. --------V-6200B2-----------------------------
  4429. INT 62 u - FGDRIVER v3.03 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  4430.     AX = 00B2h
  4431.     BX = screen space row
  4432. Return: AX = character space row containing specified coordinate
  4433. Note:    For FGDRIVER v1.10, this function was unused; "FG_YALPHA" was AX=000Dh
  4434. SeeAlso: AX=00B0h,AX=00B3h
  4435. --------V-6200B3-----------------------------
  4436. INT 62 u - FGDRIVER v3.03 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  4437.     AX = 00B3h
  4438.     BX = character space row
  4439. Return: AX = screen space row of topmost pixel in specified character row
  4440. Program: FGDRIVER is the external video driver for the shareware
  4441.       Fastgraph/Light by Ted Gruber Software
  4442. Note:    For FGDRIVER v1.10, this function was unused;"FG_YCONVERT" was AX=000Fh
  4443. SeeAlso: AX=00B1h,AX=00B2h
  4444. --------T-6201-------------------------------
  4445. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  4446.     AH = 01h
  4447. Program: Cswitch is a set of multitasking functions by Herb Rose
  4448. SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
  4449. --------N-6201-------------------------------
  4450. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  4451.     AH = 01h
  4452. Return: CF clear if successful
  4453.     CF set on error
  4454.         AL = error code
  4455. Range:    INT 60 to INT 65 ???
  4456. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4457. --------T-6202-------------------------------
  4458. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  4459.     AH = 02h
  4460.     DX = semaphore number (0-63)
  4461. Return: AX = FFFFh bad semaphore number
  4462.          else  success
  4463. SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
  4464. --------N-6202-------------------------------
  4465. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
  4466.     AH = 02h
  4467. Return: CF clear if successful
  4468.     CF set on error
  4469.         AL = error code
  4470. SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4471. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4472. --------T-6203-------------------------------
  4473. INT 62 - Cswitch - CHECK SEMAPHORE
  4474.     AH = 03h
  4475.     DX = semaphore number (0-63)
  4476. Return: AX = status
  4477.         FFFFh not owned
  4478.         else  owned
  4479. SeeAlso: AH=02h,AH=04h
  4480. --------N-6203-------------------------------
  4481. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
  4482.     AH = 03h
  4483.     DS:SI -> DWORD buffer for IP address
  4484. Return: CF clear if successful
  4485.     CF set on error
  4486.         AL = error code
  4487. Range:    INT 60 to INT 65 ???
  4488. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4489.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4490.       consecutive interrupt (64h by default) if it is loaded
  4491. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4492. --------T-6204-------------------------------
  4493. INT 62 - Cswitch - TRIGGER SEMAPHORE
  4494.     AH = 04h
  4495.     DX = semaphore number (0-63)
  4496. Return: AX = status
  4497.         FFFFh bad semaphore number
  4498.         else  success
  4499. SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
  4500. --------N-6204-------------------------------
  4501. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  4502.     AH = 04h
  4503.     BX = ???
  4504.     ES:SI -> FAR routine for ???
  4505. Return: CF clear if successful
  4506.     CF set on error
  4507.         AL = error code
  4508. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4509. --------T-6205-------------------------------
  4510. INT 62 - Cswitch - SLEEP
  4511.     AH = 05h
  4512.     BX = seconds to sleep
  4513. SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
  4514. --------N-6205-------------------------------
  4515. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4516.     AH = 05h
  4517.     ???
  4518. Return: CF clear if successful
  4519.     CF set on error
  4520.         AL = error code
  4521. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4522. --------T-6206-------------------------------
  4523. INT 62 - Cswitch - SUSPEND
  4524.     AH = 06h
  4525. SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
  4526. --------N-6206-------------------------------
  4527. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4528.     AH = 06h
  4529.     ???
  4530. Return: CF clear if successful
  4531.     CF set on error
  4532.         AL = error code
  4533. Range:    INT 60 to INT 65 ???
  4534. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4535.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4536.       consecutive interrupt (64h by default) if it is loaded
  4537. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4538. --------T-6207-------------------------------
  4539. INT 62 - Cswitch - SPAWN
  4540.     AH = 07h
  4541.     ES:BX -> function address to start executing at
  4542.     CX = priority (1-10)
  4543. Return: AX = result/status
  4544.         FFFDh  no free memory control blocks
  4545.         FFFEh  no free task control blocks
  4546.         FFFFh  not enough memory to create new task stack
  4547.         >0       the tcb number of the new task, indicating no error
  4548. SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
  4549. --------N-6207-------------------------------
  4550. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4551.     AH = 07h
  4552.     DS:SI -> ???
  4553. Return: CF clear if successful
  4554.     CF set on error
  4555.         AL = error code
  4556. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4557. --------T-6208-------------------------------
  4558. INT 62 - Cswitch - WAKE UP TASK
  4559.     AH = 08h
  4560.     BX = tcb identifier
  4561. SeeAlso: AH=05h,AH=06h
  4562. --------N-6208-------------------------------
  4563. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4564.     AH = 08h
  4565.     CX = ???
  4566.     ES:SI -> ??? buffer (see #1958)
  4567. Return: CF clear if successful
  4568.     CF set on error
  4569.         AL = error code
  4570. Range:    INT 60 to INT 65 ???
  4571. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4572.  
  4573. Format of BW-TCP ??? buffer:
  4574. Offset    Size    Description    (Table 1958)
  4575.  00h  6 BYTEs    hardware address???
  4576.  06h  6 BYTEs    ???
  4577.  0Ch    WORD    ???
  4578.  0Eh    WORD    ???
  4579. ----------6208--CXFFFE-----------------------
  4580. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  4581.     AH = 08h
  4582.     CX = FFFEh
  4583.     DX = FFFFh
  4584. Return: AX = PSP address of resident DBLIBRARY
  4585. Note:    this call does not free the memory allocated to the TSR; the calling
  4586.       code must do the deallocation.
  4587. SeeAlso: INT 62"DBLIBRARY"
  4588. --------T-6209-------------------------------
  4589. INT 62 - Cswitch - SET PRIORITY
  4590.     AH = 09h
  4591.     BX = new base priority (1-10)
  4592. Note:    the lower the priority is numerically, the more often the task will run
  4593. --------N-6209-------------------------------
  4594. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
  4595.     AH = 09h
  4596. Return: CF clear if successful
  4597.         AX = handler ID
  4598.     CF set on error
  4599.         AL = error code
  4600. Range:    INT 60 to INT 65 ???
  4601. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4602.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4603.       consecutive interrupt (64h by default) if it is loaded
  4604. SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4605. SeeAlso: INT 64"BW-NFS"
  4606. --------T-620A-------------------------------
  4607. INT 62 - Cswitch - TEST MESSAGE QUEUE
  4608.     AH = 0Ah
  4609.     DX = queue number (0-63)
  4610. Return: AX = result/message size
  4611.         0000h nothing on queue
  4612.         FFFFh bad queue number
  4613.         else  number of bytes in first message in queue
  4614. SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
  4615. --------N-620A-------------------------------
  4616. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
  4617.     AH = 0Ah
  4618.     DX = handler ID
  4619. Return: CF clear if successful
  4620.     CF set on error
  4621.         AL = error code
  4622. SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4623. SeeAlso: INT 64"BW-NFS"
  4624. --------T-620B-------------------------------
  4625. INT 62 - Cswitch - SEND MESSAGE
  4626.     AH = 0Bh
  4627.     CX = number of bytes to write
  4628.     DS:SI -> buffer
  4629.     DX = queue number (0-63)
  4630. Return: AX = result/message size
  4631.         0000h no message was on queue
  4632.         FFFEh triggered by something arriving, redo the call
  4633.         FFFFh bad queue number
  4634.         else  number of bytes in message
  4635. SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
  4636. --------N-620B-------------------------------
  4637. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
  4638.     AH = 0Bh
  4639.     AL = ???
  4640.     DX = ???
  4641.     BP = ???
  4642.     ES:SI -> ???
  4643. Return: CF clear if successful
  4644.     CF set on error
  4645.         AL = error code
  4646. SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4647. SeeAlso: INT 64"BW-NFS"
  4648. --------T-620C-------------------------------
  4649. INT 62 - Cswitch - READ MESSAGE
  4650.     AH = 0Ch
  4651.     CX = number of bytes to read
  4652.     DS:SI -> buffer
  4653.     DX = queue number (0-63)
  4654. Return: AX = status
  4655.         FFFFh bad queue number
  4656.         else  number of bytes transferred
  4657. SeeAlso: AH=0Ah,AH=0Bh
  4658. --------N-620C-------------------------------
  4659. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
  4660.     AH = 0Ch
  4661.     DX = ???
  4662.     BP = ???
  4663. Return: CF clear if successful
  4664.     CF set on error
  4665.         AL = error code
  4666. Range:    INT 60 to INT 65 ???
  4667. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4668.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4669.       consecutive interrupt (64h by default) if it is loaded
  4670. SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4671. SeeAlso: INT 64"BW-NFS"
  4672. --------T-620D-------------------------------
  4673. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  4674.     AH = 0Dh
  4675. SeeAlso: AH=0Eh"Cswitch"
  4676. --------N-620D-------------------------------
  4677. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  4678.     AH = 0Dh
  4679. Return: CF clear if successful
  4680.     CF set on error
  4681.         AL = error code
  4682. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4683. --------T-620E-------------------------------
  4684. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  4685.     AH = 0Eh
  4686. SeeAlso: AH=0Dh"Cswitch"
  4687. --------N-620E-------------------------------
  4688. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
  4689.     AH = 0Eh
  4690. Return: CF clear if successful
  4691.     CF set on error
  4692.         AL = error code
  4693. SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4694. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4695. --------T-620F-------------------------------
  4696. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  4697.     AH = 0Fh
  4698.     ES:BX -> command line
  4699.     CX = priority (1-10)
  4700.     DX = background flag (nonzero allows loading to EMS)
  4701. Return: AX = status
  4702.         0000h task loader queue is full
  4703.         0001h  no error
  4704. SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
  4705. --------N-620F-------------------------------
  4706. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
  4707.     AH = 0Fh
  4708. Return: CF clear if successful
  4709.     CF set on error
  4710.         AL = error code
  4711. Range:    INT 60 to INT 65 ???
  4712. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4713.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4714.       consecutive interrupt (64h by default) if it is loaded
  4715. SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4716. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4717. --------T-6210-------------------------------
  4718. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  4719.     AH = 10h
  4720. SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
  4721. --------N-6210-------------------------------
  4722. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
  4723.     AH = 10h
  4724. Return: CF clear if no critical section active
  4725.     CF set if in critical section
  4726. SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4727. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4728. --------T-6211-------------------------------
  4729. INT 62 - Cswitch - GET TCB INFORMATION
  4730.     AH = 11h
  4731.     ES:BX -> a pointer which will be set to the tcb address
  4732. Return: AX = tcb indentifier
  4733. SeeAlso: AH=12h
  4734. --------N-6211-------------------------------
  4735. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  4736.     AH = 11h
  4737.     ES:SI -> ???
  4738. Return: CF clear
  4739. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4740. --------T-6212-------------------------------
  4741. INT 62 - Cswitch - GET TCB ADDRESS
  4742.     AH = 12h
  4743.     ES:BX -> a pointer which will be set to the tcb table address
  4744. Return: AX = tcb indentifier
  4745. SeeAlso: AH=11h"Cswitch"
  4746. --------N-6212-------------------------------
  4747. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
  4748.     AH = 12h
  4749. Return: CF clear if successful
  4750.         AX = socket number??? (memory variable incremented after reading)
  4751.     CF set on error
  4752.         AL = error code
  4753. Range:    INT 60 to INT 65 ???
  4754. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4755.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4756.       consecutive interrupt (64h by default) if it is loaded
  4757. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4758. --------T-6213-------------------------------
  4759. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  4760.     AH = 13h
  4761. Return: AX = result
  4762.         FFFCh no Memory Control Blocks available
  4763.         FFFDh no TCBs available
  4764.         FFFEh insufficient memory
  4765.         FFFFh cannot open file
  4766.         0000h load in progress (not done yet)
  4767.         else  tcb indentifier
  4768. SeeAlso: AH=0Fh
  4769. --------N-6213-------------------------------
  4770. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4771.     AH = 13h
  4772.     CX = ???
  4773. Return: CF clear if successful
  4774.         AL = 00h
  4775.     CF set on error
  4776.         AL = error code
  4777. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4778. --------N-6214-------------------------------
  4779. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4780.     AH = 14h
  4781.     ES:SI -> ???
  4782. Return: CF clear if successful
  4783.         AL = 00h
  4784.     CF set on error
  4785.         AL = error code
  4786. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4787. --------N-6215-------------------------------
  4788. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
  4789.     AH = 15h
  4790. Return: CF clear if successful
  4791.         AX = ??? (destroyed???)
  4792.     CF set on error
  4793.         AL = error code
  4794. Range:    INT 60 to INT 65 ???
  4795. Notes:    call this function after reading the "ETHDEV27" device
  4796.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4797.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4798.       consecutive interrupt (64h by default) if it is loaded
  4799. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4800. --------N-6216-------------------------------
  4801. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4802.     AH = 16h
  4803.     ???
  4804. Return: CF clear if successful
  4805.     CF set on error
  4806.         AL = error code
  4807. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4808. --------N-6217-------------------------------
  4809. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4810.     AH = 17h
  4811.     DX = segment of ???
  4812. Return: CF clear
  4813. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4814. --------N-6218-------------------------------
  4815. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
  4816.     AH = 18h
  4817. Return: CF clear if successful
  4818.     CF set on error
  4819.         AL = error code
  4820. Range:    INT 60 to INT 65 ???
  4821. Notes:    calls function 17h after EMS allocated and mapped
  4822.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4823.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4824.       consecutive interrupt (64h by default) if it is loaded
  4825. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4826. --------R-6247-------------------------------
  4827. INT 62 - PC Tools v7 COMMUTE - ???
  4828.     AH = 47h
  4829.     AL = subfunction (00h-31h)
  4830.     ???
  4831.     CF set
  4832. Return: ???
  4833. Program: COMMUTE is a remote-control program bundled with Central Point
  4834.       Software's PC Tools
  4835. --------R-6248-------------------------------
  4836. INT 62 - PC Tools v7 COMMUTE - ???
  4837.     AH = 48h
  4838.     AL = ???
  4839.     ???
  4840.     CF set
  4841. Return: ???
  4842. --------R-6249-------------------------------
  4843. INT 62 - PC Tools v7 COMMUTE - ???
  4844.     AH = 49h
  4845.     ???
  4846.     CF set
  4847. Return: ???
  4848. Note:    may be the same as AH=4Ch
  4849. --------R-624A-------------------------------
  4850. INT 62 - PC Tools v7 COMMUTE - ???
  4851.     AH = 4Ah
  4852.     AL = subfunction (00h-46h)
  4853.     ???
  4854.     CF set
  4855. Return: ???
  4856. --------R-624B--BX1234-----------------------
  4857. INT 62 - PC Tools v7 COMMUTE - ???
  4858.     AH = 4Bh
  4859.     BX = 1234h
  4860.     CX = 1234h
  4861.     ES = ???
  4862.     CF set
  4863. Return: ???
  4864. Program: COMMUTE is a remote-control program bundled with Central Point
  4865.       Software's PC Tools
  4866. --------R-624C-------------------------------
  4867. INT 62 - PC Tools v7 COMMUTE - ???
  4868.     AH = 4Ch
  4869.     BL = subfunction
  4870.         00h ???
  4871.         02h ???
  4872. Return: CF clear if successful
  4873.     CF set on error
  4874. --------R-626262-----------------------------
  4875. INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
  4876.     AX = 6262h
  4877.     CF set
  4878. Return: AX = 0000h
  4879.     BX = segment of resident code's PSP
  4880. Program: COMMUTE is a remote-control program bundled with Central Point
  4881.       Software's PC Tools
  4882. --------s-62C0-------------------------------
  4883. INT 62 U - GWBTSR - API
  4884.     AH = C0h
  4885.     AL = function
  4886.         00h installation check
  4887.         Return: AX = 00FFh if installed
  4888.         01h ???
  4889. Program: GWBTSR is a huge (48K) resident mixer controller for the Gateway 2000
  4890.       sound card (OEM version of Aztech Sound Galaxy)
  4891. Index:    installation check;GWBTSR
  4892. --------N-62FE-------------------------------
  4893. INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
  4894.     AH = FEh
  4895.     AL = direction
  4896.         00h map in driver's memory block
  4897.         01h map out driver's memory block
  4898. Return: CF clear if successful
  4899.     CF set on error
  4900.         AL = error code
  4901. Range:    INT 60 to INT 65 ???
  4902. Notes:    this function is supported by at least the SLIP and ODI versions of
  4903.       ETHDEV.SYS
  4904.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4905.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4906.       consecutive interrupt (64h by default) if it is loaded
  4907. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
  4908. SeeAlso: INT 63"BW-TCP",INT 64/AH=FEh
  4909. --------*-63---------------------------------
  4910. INT 63 - reserved for user interrupt
  4911. --------d-63---------------------------------
  4912. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  4913. Desc:    this vector stores the last four bytes of the parameter table for
  4914.       hard disk 0
  4915. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  4916. ----------63---------------------------------
  4917. INT 63 - Oracle SQL Protected Mode Executive - ???
  4918. --------d-63---------------------------------
  4919. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  4920. Desc:    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
  4921.       INT 13 has been moved there) and places the old value here
  4922. ----------63---------------------------------
  4923. INT 63 - Kofax KF9X00 image manipulation card interface
  4924. --------Q-63---------------------------------
  4925. INT 63 - DESQview/X - SOCKET API
  4926. Notes:    parameters are passed by patching!! data field immediately following
  4927.       the entry point, as detailed below; the preferred method for calling
  4928.       the socket API is via INT 15/AX=DE2Eh
  4929.     the installation check consists of testing for the string "dvxunix"
  4930.       (yes, lowercase) at offset 9 from the interrupt handler start
  4931. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  4932. Index:    installation check;DESQview/X socket interface
  4933.  
  4934. Format of DESQview/X socket interrupt handler entry:
  4935. Offset    Size    Description    (Table 1959)
  4936.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  4937.  03h    WORD    offset from following pointer for initial top of local stack
  4938.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  4939.  09h  7 BYTEs    signature "dvxunix"
  4940. --------b-6300-------------------------------
  4941. INT 63 - HP 100LX - MAP HIGH MEMORY
  4942.     AH = 00h
  4943.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  4944.     BX = zero-based logical page
  4945.     CX = page number
  4946.     DX = device ID (00h system ROM, 05h plugin, etc.)
  4947. Return: ???
  4948. SeeAlso: AH=01h
  4949. --------N-6300-------------------------------
  4950. INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
  4951.     AH = 00h
  4952.     DS:BX -> DWORD containing IP address (big-endian)
  4953. Return: CF clear if successful
  4954.     CF set on error
  4955.     AX destroyed
  4956. Range:    INT 61 to INT 66 ???
  4957. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4958.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4959.       consecutive interrupt (64h by default) if it is loaded
  4960. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  4961. --------b-6301-------------------------------
  4962. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  4963.     AH = 01h
  4964.     AL = function (00h save, 01h restore)
  4965.     ???
  4966. Return: ???
  4967. --------N-6301-------------------------------
  4968. INT 63 - BW-TCP - TCPIP.SYS - ???
  4969.     AH = 01h
  4970.     ES:BX -> ???
  4971.     ???
  4972. Return: ???
  4973. Range:    INT 61 to INT 66 ???
  4974. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4975.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4976.       consecutive interrupt (64h by default) if it is loaded
  4977. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  4978. --------N-6302-------------------------------
  4979. INT 63 - BW-TCP - TCPIP.SYS - ???
  4980.     AH = 02h
  4981.     ???
  4982. Return: ???
  4983. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  4984. --------N-6303-------------------------------
  4985. INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
  4986.     AH = 03h
  4987.     DS:SI -> buffer for DWORD IP address (big-endian)
  4988. Return: AX destroyed
  4989.     CF clear if successful
  4990.     CF set on error
  4991. Note:    this call may use ARP or RARP to determine the address
  4992. --------N-6304-------------------------------
  4993. INT 63 - BW-TCP - TCPIP.SYS - ???
  4994.     AH = 04h
  4995.     ???
  4996. Return: ???
  4997. --------N-6305-------------------------------
  4998. INT 63 - BW-TCP - TCPIP.SYS - ???
  4999.     AH = 05h
  5000.     DS:BX -> ???
  5001.     ES:SI -> ???
  5002. Return: ???
  5003. Range:    INT 61 to INT 66 ???
  5004. --------N-6306-------------------------------
  5005. INT 63 - BW-TCP - TCPIP.SYS - ???
  5006.     AH = 06h
  5007.     ???
  5008. Return: ???
  5009. --------N-6307-------------------------------
  5010. INT 63 - BW-TCP - TCPIP.SYS - ???
  5011.     AH = 07h
  5012.     ???
  5013. Return: ???
  5014. --------N-6308-------------------------------
  5015. INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
  5016.     AH = 08h
  5017.     DS:BX -> DWORD containing IP address
  5018. Return: CF clear if successful
  5019.     CF set on error
  5020.     ???
  5021. --------N-6309-------------------------------
  5022. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  5023.     AH = 09h
  5024.     BL = handler type
  5025.     ES:SI -> FAR handler of specified type
  5026. Return: ???
  5027. SeeAlso: AH=0Ah,AH=0Dh
  5028. --------N-630A-------------------------------
  5029. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  5030.     AH = 0Ah
  5031.     BL = handler type
  5032. Return: CF clear if successful
  5033.     CF set on error (no handler of specified type installed)
  5034. SeeAlso: AH=09h
  5035. --------N-630B-------------------------------
  5036. INT 63 - BW-TCP - TCPIP.SYS - ???
  5037.     AH = 0Bh
  5038.     AL = ???
  5039.     DL = ???
  5040.     DS:BX -> ???
  5041.     ES:SI -> ???
  5042. Return: ???
  5043. --------N-630C-------------------------------
  5044. INT 63 - BW-TCP - TCPIP.SYS - ???
  5045.     AH = 0Ch
  5046.     ???
  5047. Return: ???
  5048. Range:    INT 61 to INT 66 ???
  5049. --------N-630D-------------------------------
  5050. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  5051.     AH = 0Dh
  5052.     ???
  5053. Return: ???
  5054. Note:    if not already installed, installs a type 06h handler with AH=09h
  5055. SeeAlso: AH=09h
  5056. --------N-630E-------------------------------
  5057. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  5058.     AH = 0Eh
  5059.     ???
  5060. Return: ???
  5061. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  5062. --------N-630F-------------------------------
  5063. INT 63 - BW-TCP - TCPIP.SYS - ???
  5064.     AH = 0Fh
  5065.     AL = ???
  5066.     SI = ???
  5067.     DS:DI -> ???
  5068.     ???
  5069. Return: ???
  5070. Range:    INT 61 to INT 66 ???
  5071. --------N-6310-------------------------------
  5072. INT 63 - BW-TCP - TCPIP.SYS - ???
  5073.     AH = 10h
  5074.     DS:DI -> ???
  5075.     ???
  5076. Return: ???
  5077. --------N-6311-------------------------------
  5078. INT 63 - BW-TCP - TCPIP.SYS - ???
  5079.     AH = 11h
  5080.     ???
  5081. Return: ???
  5082. --------N-6312-------------------------------
  5083. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  5084.     AH = 12h
  5085.     DS:SI -> ???
  5086.     ES:BP -> ???
  5087. Return: ???
  5088. SeeAlso: INT 61/AH=23h
  5089. --------N-6313-------------------------------
  5090. INT 63 - BW-TCP - TCPIP.SYS - NOP
  5091.     AH = 13h
  5092. Return: nothing
  5093. Range:    INT 61 to INT 66 ???
  5094. --------N-6314-------------------------------
  5095. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  5096.     AH = 14h
  5097.     BX = network descriptor???
  5098.     DS:SI -> ???
  5099.     ES:BP -> ???
  5100. Return: ???
  5101. SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  5102. --------N-6315-------------------------------
  5103. INT 63 - BW-TCP - TCPIP.SYS - ???
  5104.     AH = 15h
  5105.     DS:DI -> ???
  5106.     ???
  5107. Return: ???
  5108. --------N-6316-------------------------------
  5109. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  5110.     AH = 16h
  5111.     DS:DI -> ???
  5112. Return: ???
  5113. Note:    calls AH=17h after preprocessing
  5114. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  5115. --------N-6317-------------------------------
  5116. INT 63 - BW-TCP - TCPIP.SYS - ???
  5117.     AH = 17h
  5118.     DS:DI -> ???
  5119.     ???
  5120. Return: ???
  5121. Range:    INT 61 to INT 66 ???
  5122. SeeAlso: AH=18h
  5123. --------N-6318-------------------------------
  5124. INT 63 - BW-TCP - TCPIP.SYS - ???
  5125.     AH = 18h
  5126.     DS:DI -> ???
  5127.     ???
  5128. Return: ???
  5129. Note:    same as AH=17h, except performed with interrupts disabled
  5130. SeeAlso: AH=17h
  5131. --------N-6319-------------------------------
  5132. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  5133.     AH = 19h
  5134.     DS:DI -> ???
  5135.     ???
  5136. Return: BX = number of bytes NOT written
  5137.     ???
  5138. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  5139. SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  5140. --------N-631A-------------------------------
  5141. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  5142.     AH = 1Ah
  5143.     CX = maximum number of bytes to read
  5144.     ES:BP -> ???
  5145.     ???
  5146. Return: CX = number of bytes actually read
  5147.     ???
  5148. SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
  5149. --------N-631B-------------------------------
  5150. INT 63 - BW-TCP - TCPIP.SYS - ???
  5151.     AH = 1Bh
  5152.     CX = ???
  5153.     ES:BP -> ???
  5154. Return: DX = ???
  5155.     ???
  5156. Range:    INT 61 to INT 66 ???
  5157. --------N-631C-------------------------------
  5158. INT 63 - BW-TCP - TCPIP.SYS - ???
  5159.     AH = 1Ch
  5160.     DS:DI -> ???
  5161.     ???
  5162. Return: ???
  5163. Note:    calls AH=17h with ???
  5164. SeeAlso: AH=17h
  5165. --------N-631D-------------------------------
  5166. INT 63 - BW-TCP - TCPIP.SYS - ???
  5167.     AH = 1Dh
  5168.     ???
  5169. Return: ???
  5170. --------N-631E-------------------------------
  5171. INT 63 - BW-TCP - TCPIP.SYS - ???
  5172.     AH = 1Eh
  5173.     DS:BX -> DWORD containing IP address (big-endian)
  5174.     ???
  5175. Return: CF clear if successful
  5176.     CF set on error
  5177.     ???
  5178. --------N-631F-------------------------------
  5179. INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
  5180.     AH = 1Fh
  5181.     BX = socket number
  5182.     ES:SI -> FAR function for ???
  5183. Return: CF clear if successful
  5184.     CF set on error (out of slots)
  5185. SeeAlso: AH=20h
  5186. --------N-6320-------------------------------
  5187. INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
  5188.     AH = 20h
  5189.     BX = socket number
  5190. Return: CF clear if successful
  5191.     CF set on error (not set)
  5192. Range:    INT 61 to INT 66 ???
  5193. SeeAlso: AH=1Fh
  5194. --------N-6321-------------------------------
  5195. INT 63 - BW-TCP - TCPIP.SYS - ???
  5196.     AH = 21h
  5197.     ES:SI -> ???
  5198. Return: ???
  5199. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  5200. --------N-6322-------------------------------
  5201. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  5202.     AH = 22h
  5203. Return: CF clear
  5204. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  5205.       if the counter reaches zero
  5206. --------N-6323-------------------------------
  5207. INT 63 - BW-TCP - TCPIP.SYS - ???
  5208.     AH = 23h
  5209.     DS:BX -> ???
  5210.     ES:SI -> 6-byte buffer for ???
  5211. Return: CF clear if successful
  5212.     CF set on error
  5213. --------N-6324-------------------------------
  5214. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  5215.     AH = 24h
  5216. Return: AX = socket number (0400h-FFFFh)
  5217. Range:    INT 61 to INT 66 ???
  5218. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5219.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5220.       consecutive interrupt (64h by default) if it is loaded
  5221. SeeAlso: INT 62/AH=12h"ETHDEV",INT 64"BW-NFS"
  5222. --------N-6325-------------------------------
  5223. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  5224.     AH = 25h
  5225. Return: CL:CH:DL:DH = caller's Internet address
  5226. SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
  5227. --------N-6326-------------------------------
  5228. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  5229.     AH = 26h
  5230.     CL:CH:DL:DH = Internet address
  5231. Return: nothing
  5232. Note:    this function sets a different variable than AH=25h returns
  5233. SeeAlso: AH=25h
  5234. --------N-6327-------------------------------
  5235. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  5236.     AH = 27h
  5237.     BX = ???
  5238.     ES:SI -> ???
  5239. Return: ???
  5240. --------N-6328-------------------------------
  5241. INT 63 - BW-TCP - TCPIP.SYS - ???
  5242.     AH = 28h
  5243.     ???
  5244. Return: ???
  5245. --------N-6329-------------------------------
  5246. INT 63 - BW-TCP - TCPIP.SYS - ???
  5247.     AH = 29h
  5248.     ???
  5249. Return: ???
  5250. Range:    INT 61 to INT 66 ???
  5251. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5252.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5253.       consecutive interrupt (64h by default) if it is loaded
  5254. --------*-64---------------------------------
  5255. INT 64 - reserved for user interrupt
  5256. --------d-64---------------------------------
  5257. INT 64 - Adaptec controllers - DRIVE 1 DATA
  5258. Desc:    this vector stores the first four bytes of the parameter table for
  5259.       hard disk 1
  5260. Notes:    these vectors are used by the following Adaptec controllers:
  5261.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  5262.     these vectors are NOT used by the following Adaptec controllers:
  5263.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  5264. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  5265. ----------64---------------------------------
  5266. INT 64 - Oracle SQL Protected Mode Executive - ???
  5267. --------N-64---------------------------------
  5268. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  5269. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  5270.       versions do not use this interrupt for IPX/SPX access, instead
  5271.       getting an entry point from INT 2F/AX=7A00h
  5272. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  5273. --------h-64---------------------------------
  5274. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5275. SeeAlso: INT 65"DG10",INT 66"DG10"
  5276. --------r-64---------------------------------
  5277. INT 64 - Extended Batch Language v3.14+
  5278.     AH = function
  5279.         00h to 5Fh chained to previous handler
  5280.         60h to 6Ch reserved, return immediately
  5281.         80h to FFh chained to previous handler
  5282.         6Dh (v4.01+) insert tone in queue
  5283.         AL = ???
  5284.         CX = frequency in Hertz
  5285.         DL = duration in clock ticks
  5286.         Return: AL = 00h if note stored
  5287.                = 01h if no room to store
  5288.         6Eh clear ??? counter/flag
  5289.         6Fh return counter/flag that AH=6Eh clears
  5290.         70h ???
  5291.         AL = ???
  5292.         71h ???
  5293.         AL = ???
  5294.         72h ???
  5295.         73h insert byte at end of keyboard buffer
  5296.         AL = byte to insert
  5297.         Return: AL = 00h if byte inserted
  5298.                = 01h if no room to store
  5299.         74h insert byte at front of keyboard buffer
  5300.         AL = byte to insert
  5301.         Return: AL = 00h if byte inserted
  5302.                = 01h if no room to store
  5303.         75h ???
  5304.         76h get keyboard "stack" status
  5305.         AL = 'K' if kbd read will read physical keyboard
  5306.              'S' if it will read EBL internal keyboard buffer
  5307.         AH = ???
  5308.         77h clear internal keyboard buffer
  5309.         78h ???
  5310.         AL = ???
  5311.         79h ???
  5312.         7Ah ???
  5313.         AL = ???
  5314.         7Bh ???
  5315.         AL = ???
  5316.         7Ch ???
  5317.         AL = ???
  5318.         7Dh ???
  5319.         AL = ???
  5320.         7Eh clear buffer for ???
  5321.         7Fh installation check
  5322.         Return: CX = version in BCD
  5323.             DI = segment of ???
  5324.             BX = segment of next program's PSP???
  5325. Program: Extended Batch Language is a batch-file enhancer by Seaware
  5326. Notes:    the chaining does not check whether the interrupt had been hooked
  5327.       before, so if you try to chain when the previous vector was
  5328.       0000h:0000h, you'll be in trouble
  5329.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  5330.       floating-point and extended function packages
  5331. Index:    installation check;EBL|installation check;Extended Batch Language
  5332. --------d-64---------------------------------
  5333. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5334. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  5335.       It can either destroy 4 vectors and take no memory or TSR and take
  5336.       up some memory.
  5337. SeeAlso: INT 65"Pdisk"
  5338. --------N-6401-------------------------------
  5339. INT 64 U - BW-NFS - BWRPC - ???
  5340.     AH = 01h
  5341.     ES:BX -> ??? (at least 8 bytes)
  5342.     ES:BP -> DWORD ???
  5343.     ???
  5344. Return: CF clear if successful
  5345.         ???
  5346.     CF set on error
  5347.         CX = 0000h
  5348. Range:    INT 62 to INT 67 ???
  5349. Notes:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5350.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5351.       consecutive interrupt (64h by default) if it is loaded
  5352.     the BWRPC installation check consists of determining the interrupt
  5353.       vector assigned to it (two more than the value returned by reading
  5354.       the ETHDEV27 device), and testing whether the word immediately
  5355.       preceding the interrupt handler is 4257h ('BW')
  5356. SeeAlso: INT 62/AH=00h"ETHDEV",INT 63"BW-TCP"
  5357. Index:    installation checks;BWRPC
  5358. --------N-6402-------------------------------
  5359. INT 64 U - BW-NFS - BWRPC - ???
  5360.     AH = 02h
  5361.     DS:DI -> ???
  5362. Return: ???
  5363. Note:    this call is passed directly through to INT 62/AH=07h
  5364. SeeAlso: INT 62/AH=07h"ETHDEV"
  5365. --------N-6403-------------------------------
  5366. INT 64 U - BW-NFS - BWRPC - ADD ???
  5367.     AH = 03h
  5368.     AL = ???
  5369.     BP = ???
  5370.     ES:SI -> ???
  5371. Return: ???
  5372. Note:    this call is passed directly through to INT 62/AH=0Bh
  5373. SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
  5374. --------N-6404-------------------------------
  5375. INT 64 U - BW-NFS - BWRPC - REMOVE ???
  5376.     AH = 04h
  5377.     BP = ???
  5378. Return: ???
  5379. Range:    INT 62 to INT 67 ???
  5380. Note:    this call is passed directly through to INT 62/AH=0Ch
  5381. SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
  5382. --------N-6405-------------------------------
  5383. INT 64 U - BW-NFS - BWRPC - ???
  5384.     AH = 05h
  5385.     CX = ???
  5386. Return: ???
  5387. Note:    this call is passed directly through to INT 62/AH=13h
  5388. SeeAlso: INT 62/AH=13h"ETHDEV"
  5389. --------N-6406-------------------------------
  5390. INT 64 U - BW-NFS - BWRPC - ???
  5391.     AH = 06h
  5392.     ES:SI -> ???
  5393. Return: AL = 00h if CF clear
  5394. Note:    this call is passed directly through to INT 62/AH=14h
  5395. SeeAlso: INT 62/AH=14h"ETHDEV"
  5396. --------N-6407-------------------------------
  5397. INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
  5398.     AH = 07h
  5399. Return: CX:DX = IP address
  5400. --------N-6410-------------------------------
  5401. INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
  5402.     AH = 10h
  5403.     AL = ETHDEV function number
  5404.     other registers as appropriate for ETHDEV call
  5405. Return: as returned by ETHDEV
  5406. Note:    this call is passed directly through to INT 62
  5407. SeeAlso: INT 62/AH=00h"ETHDEV"
  5408. --------N-6411-------------------------------
  5409. INT 64 U - BW-NFS - BWRPC - NOP???
  5410.     AH = 11h
  5411. Return: CF clear
  5412. Range:    INT 62 to INT 67 ???
  5413. --------N-64FE-------------------------------
  5414. INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
  5415.     AH = FEh
  5416.     AL = direction
  5417.         00h map in driver's memory block
  5418.         01h map out driver's memory block
  5419. Return: CF clear if successful
  5420.     CF set on error
  5421.         AL = error code
  5422. Note:    this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
  5423. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63"BW-TCP"
  5424. --------*-65---------------------------------
  5425. INT 65 - reserved for user interrupt
  5426. --------d-65---------------------------------
  5427. INT 65 - Adaptec controllers - DRIVE 1 DATA
  5428. Desc:    this vector stores the second four bytes of the parameter table for
  5429.       hard disk 1
  5430. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  5431. --------h-65---------------------------------
  5432. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5433. SeeAlso: INT 64"DG10",INT 66"DG10"
  5434. --------N-65---------------------------------
  5435. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  5436. --------U-65---------------------------------
  5437. INT 65 - SD.COM v6.2
  5438. Desc:    The unregistered version of SD62.COM uses the low byte of this vector
  5439.       to count the number of invocations, displaying a registration
  5440.       reminder each time after the 20th use.
  5441. --------d-65---------------------------------
  5442. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5443. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  5444. --------s-65---------------------------------
  5445. INT 65 - Ad Lib SOUND.COM - INTERFACE
  5446.     SI = function number (see also entries below)
  5447.         0000h Init
  5448.         0002h RelTimeStart
  5449.         0003h SetState
  5450.         0004h GetState
  5451.         0005h Flush
  5452.         0006h SetMode
  5453.         0007h GetMode
  5454.         0008h SetRelVolume
  5455.         0009h SetTempo
  5456.         000Ah SetTranspose
  5457.         000Bh GetTranspose
  5458.         000Ch SetActVoice
  5459.         000Dh GetActVoice
  5460.         000Eh PlayNoteDel
  5461.         000Fh PlayNote
  5462.         0010h SetTimbre
  5463.         0011h SetPitch
  5464.         0012h SetTickBeat
  5465.         0013h NoteOn
  5466.         0014h NoteOff
  5467.         0015h Timbre
  5468.         0016h SetPitchBend
  5469.         0017h WaveForm
  5470.     ES:BX -> arguments
  5471. Note:    the installation check consists of checking for the signature block
  5472.       immediately preceding the interrupt handler (see #1960)
  5473. SeeAlso: SI=8000h
  5474. Index:    installation check;Ad Lib SOUND.COM
  5475.  
  5476. Format of AdLib signature block:
  5477. Offset    Size    Description    (Table 1960)
  5478.  00h    WORD    version number
  5479.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  5480.  15h    BYTE    01h
  5481.  16h    BYTE    01h
  5482.  17h    BYTE    00h
  5483. --------s-65----SI0000-----------------------
  5484. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  5485.     SI = 0000h
  5486. --------s-65----SI0003-----------------------
  5487. INT 65 - Ad Lib SOUND.COM - SET STATE
  5488.     SI = 0003h
  5489.     ES:BX -> WORD new state (0000h disabled, 0001h enabled)
  5490. SeeAlso: SI=0004h
  5491. --------s-65----SI0004-----------------------
  5492. INT 65 - Ad Lib SOUND.COM - GET STATE
  5493.     SI = 0004h
  5494. Return: AX = status
  5495.         0000h all done playing sounds
  5496.         else  still playing sounds
  5497. SeeAlso: SI=0003h
  5498. --------s-65----SI0006-----------------------
  5499. INT 65 - Ad Lib SOUND.COM - SET MODE
  5500.     SI = 0006h
  5501.     ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
  5502. SeeAlso: SI=0007h
  5503. --------s-65----SI0007-----------------------
  5504. INT 65 - Ad Lib SOUND.COM - GET MODE
  5505.     SI = 0007h
  5506. Return: AX = mode
  5507.         0000h melodic
  5508.         0001h percussive
  5509. SeeAlso: SI=0006h
  5510. --------s-65----SI000C-----------------------
  5511. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  5512.     SI = 000Ch
  5513.     ES:BX -> WORD voice = 0000h to 0008h
  5514. SeeAlso: SI=000Dh
  5515. --------s-65----SI000D-----------------------
  5516. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  5517.     SI = 000Dh
  5518. Return: AX = voice (0000h to 0008h)
  5519. SeeAlso: SI=000Ch
  5520. --------s-65----SI8000-----------------------
  5521. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  5522.     SI = 8000h
  5523. Return: DX:AX -> internal data structures
  5524. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  5525.       Pro Audio Spectrum sound boards
  5526. SeeAlso: SI=8001h
  5527. --------s-65----SI8001-----------------------
  5528. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  5529.     SI = 8001h
  5530. Return: AX = ???
  5531.     DX = number of voices??? (09h or 0Bh)
  5532. SeeAlso: SI=8000h
  5533. --------s-65----SI8002-----------------------
  5534. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  5535.     SI = 8002h
  5536. SeeAlso: SI=8003h
  5537. --------s-65----SI8003-----------------------
  5538. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  5539.     SI = 8003h
  5540. SeeAlso: SI=8002h
  5541. --------s-65----SI8004-----------------------
  5542. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  5543.     SI = 8004h
  5544. Return: AX = ??? (0280h)
  5545.     DX = ??? (01A0h)
  5546. --------s-65----SI8005-----------------------
  5547. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  5548.     SI = 8005h
  5549.     ???
  5550. Return: ???
  5551. SeeAlso: SI=8000h
  5552. --------S-65---------------------------------
  5553. INT 65 U - EZRECV v1.0 - API
  5554.     AX = function
  5555.         0000h ???
  5556.         Return: AX = ??? or FFFFh
  5557.         0001h ???
  5558.         Return: AX = status (0000h or 0001h)
  5559.         0002h ???
  5560.         Return: AX = status (0000h or 0001h)
  5561.         0003h set ??? to 0001h
  5562.         Return: AX = 0000h
  5563.         0004h ???
  5564.         Return: AX = ???
  5565. Return: BH = COM port being used
  5566.     BL = speed???
  5567.     CH = ???
  5568.     CL = ???
  5569.     DX = ???
  5570.     DS = ???
  5571.     ES = EZRECV data segment
  5572. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  5573. --------*-66---------------------------------
  5574. INT 66 - reserved for user interrupt
  5575. --------d-66---------------------------------
  5576. INT 66 - Adaptec controllers - DRIVE 1 DATA
  5577. Desc:    this vector stores the third four bytes of the parameter table for
  5578.       hard disk 1
  5579. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  5580. --------h-66---------------------------------
  5581. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5582. SeeAlso: INT 64"DG10"
  5583. --------N-66---------------------------------
  5584. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  5585. Program: TurboNET is a NetBIOS-based file redirector and server
  5586. Note:    hooked but not used (IRET) by both redirector and server; called from
  5587.       server's INT 28 handler
  5588. SeeAlso: INT 2F/AX=8100h
  5589. --------d-66---------------------------------
  5590. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5591. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  5592. --------W-66---------------------------------
  5593. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  5594. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  5595.       which will expire and call INT 66.  This timer can be used to
  5596.       calculate elapsed execution time etc.
  5597. --------K-66---------------------------------
  5598. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  5599. Return: immediately (IRET)
  5600. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  5601. Range:    INT 60h to INT 67h, selected by scanning for highest unused vector
  5602. Note:    the installation check consists of testing for the signature bytes
  5603.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment
  5604. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  5605.       before falling back to INT 60-67, but only uses the last of these
  5606.       ranges in v5.4
  5607. SeeAlso: INT 2F/AX=E300h
  5608. Index: installation checks;Newkey|Newkey;installation check
  5609. --------U-66---------------------------------
  5610. INT 66 - PC-Magazin - INCA
  5611.     details not yet availble
  5612. Program: INCA is a utility from PC-Magazin (the German edition of PC Magazine)
  5613.       issue 51-52/85.
  5614. SeeAlso: INT 61"SWAPx"
  5615. --------F-6601-------------------------------
  5616. INT 66 - BitFax Scheduler - SET MODE???
  5617.     AH = 01h
  5618. SeeAlso: AH=02h
  5619. --------F-6602-------------------------------
  5620. INT 66 - BitFax Scheduler - SET MODE???
  5621.     AH = 02h
  5622. SeeAlso: AH=01h
  5623. --------F-6603-------------------------------
  5624. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  5625.     AH = 03h
  5626.     ???
  5627. Return: ???
  5628. SeeAlso: AH=05h
  5629. --------F-6604-------------------------------
  5630. INT 66 - BitFax Scheduler - GET STATUS???
  5631.     AH = 04h
  5632. Return: AX = ??? (0000h or 0001h)
  5633.     DX = BitSched version???  (for versions >= 3.00)
  5634.         9796h (ver. 3.00)
  5635.         97E6h (ver. 3.02)
  5636.         92D0h (ver. 3.04.06)
  5637.         9510h (ver. 3.06.02)
  5638. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  5639. --------F-6605-------------------------------
  5640. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  5641.     AH = 05h
  5642.     BX:CX -> command block (see #1961)
  5643.     ???
  5644. Return: ???
  5645. SeeAlso: AH=03h
  5646.  
  5647. Format of BitFax command block:
  5648. Offset    Size    Description    (Table 1961)
  5649.  00h 18 BYTEs    configuration bytes???
  5650.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  5651.  52h    BYTEs    ASCIZ directory containing BitFax executables
  5652.  92h    BYTEs    ASCIZ telephone number
  5653.  C2h    BYTE    cover page control (00h don't send, 01h do send cover page)
  5654.  C3h 15 BYTEs    configuration bytes???
  5655.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  5656.           configuration information???)
  5657. 122h    BYTEs    configuration bytes???
  5658. 12Ch    BYTE    00h don't send cover page
  5659.         01h send cover page
  5660. 12Dh  7 BYTEs    configuration bytes???
  5661. 134h    BYTEs    ASCIZ path of file to send
  5662. 174h    BYTEs    more configuration bytes???
  5663.     ???
  5664. --------F-6606-------------------------------
  5665. INT 66 - BitFax Scheduler - SET MODE???
  5666.     AH = 06h
  5667. Return: DX = BitSched version??? (same as AH=04h)
  5668. SeeAlso: AH=04h
  5669. --------s-660688-----------------------------
  5670. INT 66 - IBMSND driver - PLAY 8-BIT DIGITIZED SOUND
  5671.     AX = 0688h
  5672.     DS:SI -> SNDSTRUC (see #1962)
  5673. Return: ???
  5674. Program: The IBMSND driver is part of John W. Ratcliff's
  5675.        The IBM Digitized Sound Package
  5676. Note:    the installation check consists of looking for a valid signature
  5677.       string six bytes prior to the interrupt handler; this string may
  5678.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  5679.       determine whether IBMSND is installed)
  5680. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  5681.  
  5682. Format of IBMSND driver SNDSTRUC:
  5683. Offset    Size    Description    (Table 1962)
  5684.  00h    DWORD    -> audio data
  5685.  04h    WORD    length of audio data in bytes
  5686.  06h    DWORD    -> playback status flag
  5687.  0Ah    WORD    playback frequency
  5688. --------s-660689-----------------------------
  5689. INT 66 - IBMSND driver - REPORT SOUND DRIVER STATUS
  5690.     AX = 0689h
  5691. Return: AX = status
  5692.         0000h no sound playing
  5693.         0001h sound effect is currently playing
  5694. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  5695. --------s-66068A-----------------------------
  5696. INT 66 - IBMSND driver - PREFORMAT SOUND
  5697.     AX = 068Ah
  5698.     DS:SI -> SNDSTRUC (see #1962)
  5699. Desc:    convert audio data into output hardware format
  5700. SeeAlso: AX=068Bh
  5701. --------s-66068B-----------------------------
  5702. INT 66 - IBMSND driver - PLAY PREFORMATTED SOUND
  5703.     AX = 068Bh
  5704.     DS:SI -> SNDSTRUC (see #1962)
  5705. Return: AX = ???
  5706. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  5707. --------s-66068C-----------------------------
  5708. INT 66 - IBMSND driver - REPORT AUDIO DRIVER CAPABILITIES
  5709.     AX = 068Ch
  5710. Return: AX = capabilities (see #1963)
  5711.     DX = playback rate if fixed-frequency playback
  5712. SeeAlso: AX=0689h,AX=068Dh
  5713.  
  5714. Bitfields for IBMSND driver capabilities:
  5715. Bit(s)    Description    (Table 1963)
  5716.  0    can play audio in background
  5717.  1    data is massaged
  5718.  2    driver plays at fixed frequency, resampling input data to fit
  5719.  3    driver uses timer interrupt
  5720. --------s-66068D-----------------------------
  5721. INT 66 - IBMSND driver - REPORT CURRENT SAMPLE ADDRESS
  5722.     AX = 068Dh
  5723. Return: AX = current playback address
  5724. Desc:    determine what point in the audio data the playback has reached, for
  5725.       synchronization with video or animation effects
  5726. Notes:    this function applies to background playback only
  5727.     the reported address may be an approximation rather than the exact
  5728.       address
  5729. SeeAlso: AX=068Ch,AX=0691h
  5730. --------s-66068E-----------------------------
  5731. INT 66 - IBMSND driver - SET CALLBACK ADDRESS
  5732.     AX = 068Eh
  5733.     BX:DX -> callback function
  5734.         0000h:0000h to disable callback
  5735.     DS = value to load into DS when calling the callback function
  5736. Desc:    specify the function to be called when playback of a sound effect is
  5737.       completed
  5738. Note:    the callback function will typically be called during a hardware
  5739.       interrupt, so all the usual precautions should be taken except for
  5740.       preserving registers
  5741. SeeAlso: AX=0691h
  5742. --------s-66068F-----------------------------
  5743. INT 66 - IBMSND driver - STOP CURRENT SOUND
  5744.     AX = 068Fh
  5745. Desc:    cause any currently-playing sound effect to be terminated
  5746. SeeAlso: AX=0688h,AX=068Bh
  5747. --------s-660690-----------------------------
  5748. INT 66 - IBMSND driver - "SetAudioHardware" SET UP HARDWARE INFO [obsolete]
  5749.     AX = 0690h
  5750. Note:    this function is no longer implemented
  5751. --------s-660691-----------------------------
  5752. INT 66 - IBMSND driver - REPORT CALLBACK ADDRESS
  5753.     AX = 0691h
  5754. Return: AX:DX -> current callback function
  5755.     BX = original caller's DS register
  5756. Program: The IBMSND driver is part of John W. Ratcliff's
  5757.        The IBM Digitized Sound Package
  5758. SeeAlso: AX=068Eh
  5759. --------s-660701-----------------------------
  5760. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  5761.     AX = 0701h
  5762. Return: AX = digitized sound capabilities
  5763.         0000h if digitized sound driver (functions 06xxh) not available
  5764. Note:    the installation check for the MIDI driver is to test for the signature
  5765.       "MIDI" six bytes before the interrupt handler
  5766. SeeAlso: AX=0688h
  5767. --------n-6610-------------------------------
  5768. INT 66 - PenDOS - TDMOUSE.EXE - GET ???
  5769.     AH = 10h
  5770. Return: CF clear
  5771.     AX = 0000h
  5772.     BX = ??? (0012h)
  5773.     DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
  5774. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  5775.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  5776.       Corporation which makes applications pen-aware
  5777. --------n-6611-------------------------------
  5778. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  5779.     AH = 11h
  5780.     DX:BX -> new handler for ???
  5781. Return: CF clear
  5782.     AX = 0000h
  5783.     DX:BX -> old handler for ??? (points at RETF by default)
  5784. --------n-6612-------------------------------
  5785. INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
  5786.     AH = 12h
  5787. Return:    CF clear
  5788.     AX = 0000h
  5789. Note:    this function calls the old mouse handler with functions 0000h, 0002h,
  5790.       0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
  5791. SeeAlso: AH=13h
  5792. --------n-6613-------------------------------
  5793. INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
  5794.     AH = 13h
  5795. Return: CF clear
  5796.     other register as returned by INT 33/AX=0000h
  5797. SeeAlso: AH=12h
  5798. --------n-6614-------------------------------
  5799. INT 66 - PenDOS - TDMOUSE.EXE - ???
  5800.     AH = 14h
  5801.     BX = ???
  5802.     CX = ???
  5803. Return: CF clear
  5804.     AX = 0000h
  5805. --------n-6615-------------------------------
  5806. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  5807.     AH = 15h
  5808.     DX:BX -> new handler for ???
  5809. Return: CF clear
  5810.     AX = 0000h
  5811.     DX:BX -> old handler (points at RETF by default)
  5812. --------n-6616-------------------------------
  5813. INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
  5814.     AH = 16h to 1Fh
  5815. Return: CF set
  5816. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  5817.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  5818.       Corporation which makes applications pen-aware
  5819. --------n-6621-------------------------------
  5820. INT 66 - PenDOS - PINK - ???
  5821.     AH = 21h
  5822. Return: CF clear if successful
  5823.     CF set on error
  5824. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5825. --------n-6622-------------------------------
  5826. INT 66 - PenDOS - PINK - ???
  5827.     AH = 22h
  5828.     DX:BX -> ???
  5829.     CL = ???
  5830. Return: CF clear if successful
  5831.     CF set on error
  5832.     ???
  5833. SeeAlso: AH=24h
  5834. --------n-6623-------------------------------
  5835. INT 66 - PenDOS - PINK - ???
  5836.     AH = 23h
  5837.     ???
  5838. Return: CF clear if successful
  5839.     CF set on error
  5840.     ???
  5841. --------n-6624-------------------------------
  5842. INT 66 - PenDOS - PINK - ???
  5843.     AH = 24h
  5844.     DX:BX -> ???
  5845.     CL = ???
  5846. Return: CF clear if successful
  5847.     CF set on error
  5848.     ???
  5849. SeeAlso: AH=22h
  5850. --------n-6625-------------------------------
  5851. INT 66 - PenDOS - PINK - ???
  5852.     AH = 25h
  5853.     CL = ??? (NOP if 00h)
  5854.     ???
  5855. Return: CF clear if successful
  5856.     CF set on error
  5857.     ???
  5858. --------n-6627-------------------------------
  5859. INT 66 - PenDOS - PINK - ???
  5860.     AH = 27h
  5861.     BL = ???
  5862.     BH = ???
  5863.     CL = ??? (0-3)
  5864.     DL = ??? (> BL)
  5865.     DH = ??? (> BH)
  5866. Return: ???
  5867. --------n-6628-------------------------------
  5868. INT 66 - PenDOS - PINK - ???
  5869.     AH = 28h
  5870.     ???
  5871. Return: CF clear if successful
  5872.     CF set on error
  5873.     ???
  5874. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5875. --------n-6629-------------------------------
  5876. INT 66 - PenDOS - PINK - ???
  5877.     AH = 29h
  5878.     ???
  5879. Return: ???
  5880. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5881. --------n-662A-------------------------------
  5882. INT 66 - PenDOS - PINK - ???
  5883.     AH = 2Ah
  5884.     DL = ??? (nonzero)
  5885.     DH = ??? (nonzero)
  5886. Return: CF clear if successful
  5887.     CF set on error
  5888.     ???
  5889. --------n-662B-------------------------------
  5890. INT 66 - PenDOS - PINK - ???
  5891.     AH = 2Bh
  5892.     ???
  5893. Return: CF clear if successful
  5894.     CF set on error
  5895.     ???
  5896. --------n-662F-------------------------------
  5897. INT 66 - PenDOS - PINK - INITIALIZE
  5898.     AH = 2Fh
  5899.     ???
  5900. Return: AX = status
  5901.         0000h failed
  5902.         FFFFh successful
  5903.     ???
  5904. Note:    this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
  5905. --------F-663345-----------------------------
  5906. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  5907.     AX = 3345h
  5908. Return: AX = FFFFh error removing TSR
  5909. Note:    the installation check consists of checking for the signature
  5910.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  5911. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  5912. Index:    installation check;BitFax Scheduler
  5913. --------n-6640-------------------------------
  5914. INT 66 - PenDOS - PKEYUS - GET VERSION
  5915.     AH = 40h
  5916. Return: CF clear
  5917.     AX = 0000h
  5918.     BH = major version (02h for version bundled with IBM DOS 6.1)
  5919.     BL = minor version (00h for version bundled with IBM DOS 6.1)
  5920.     DL = ??? (4Eh)
  5921.     DH = ??? (0Eh)
  5922. --------n-6641-------------------------------
  5923. INT 66 - PenDOS - PKEYUS - SET ???
  5924.     AH = 41h
  5925.     BX = ???
  5926.     CL = ??? (08h-20h)
  5927.     DL = screen column??? (<= 50h)
  5928.     DH = screen row???  (<= 3Ch)
  5929. Return: AX = status (0000h successful, 0001h error)
  5930. Note:    this function also sets an internal flag
  5931. SeeAlso: AH=42h,AH=43h
  5932. --------n-6642-------------------------------
  5933. INT 66 - PenDOS - PKEYUS - ???
  5934.     AH = 42h
  5935. Return: CF clear
  5936.     AX = 0000h
  5937. Note:    this function also clears the flag set by AH=41h
  5938. SeeAlso: AH=41h
  5939. --------n-6643-------------------------------
  5940. INT 66 - PenDOS - PKEYUS - ???
  5941.     AH = 43h
  5942.     BX = ???
  5943.     DX = ???
  5944. Return: AX = status
  5945.         0000h if AH=41h flag set
  5946.         else
  5947.         AH = ???
  5948.         AL = ???
  5949.         BX = ???
  5950.         DX = ???
  5951. SeeAlso: AH=41h    
  5952. --------n-6644-------------------------------
  5953. INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
  5954.     AH = 44h to 4Fh
  5955. Return: CF set
  5956. --------n-6650-------------------------------
  5957. INT 66 - PenDOS - PMOUSE - SET ???
  5958.     AH = 50h
  5959.     BX = ???
  5960.     CH = ???
  5961.     DX = ???
  5962. Return: CF clear
  5963.     AX = 0000h
  5964. --------n-6651-------------------------------
  5965. INT 66 - PenDOS - PMOUSE - NOP
  5966.     AH = 51h
  5967. Return: CF set
  5968. --------n-6652-------------------------------
  5969. INT 66 - PenDOS - PMOUSE - ???
  5970.     AH = 52h
  5971.     BX = ???
  5972.     CL = ???
  5973.     DX = ???
  5974. Return: ???
  5975. --------n-6653-------------------------------
  5976. INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
  5977.     AH = 53h to 57h
  5978. Return: CF set
  5979. --------n-66---------------------------------
  5980. INT 66 - PenDOS - PMOUSE - ALTERNATE API
  5981.     AH = function (58h-5Fh)
  5982. Note:    these functions exactly duplicate AH=50h-57h
  5983. ----------66AA02-----------------------------
  5984. INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
  5985.     AX = AA02h
  5986. Return: ES:DI -> 7 byte signature "HelpTSR" if resident
  5987. Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
  5988. --------n-66C5-------------------------------
  5989. INT 66 - PenDOS - VLOAD - API
  5990.     AH = C5h
  5991.     ???
  5992. Return: ???
  5993. --------t-66FFFBBXFFFB-----------------------
  5994. INT 66 - MicroHelp Stay-Res Plus - ???
  5995.     AX = FFFBh
  5996.     BX = FFFBh
  5997.     ???
  5998. Return: ???
  5999. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  6000. --------t-66FFFEBXFFFE-----------------------
  6001. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  6002.     AX = FFFEh
  6003.     BX = FFFEh
  6004. Return: only if unsuccessful
  6005. Notes:    installation check is for the interrupt handler to begin with the bytes
  6006.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  6007.       appear at offset 0005h (older versions) or the offset returned by
  6008.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  6009.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  6010.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  6011. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  6012. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  6013. Index:    installation check;Personal Calendar|installation check;CAL
  6014. --------t-66FFFFBXFFF0-----------------------
  6015. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  6016.     AX = FFFFh
  6017.     BX = FFF0h
  6018. Return: DI = offset of program name in interrupt handler segment
  6019. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  6020. --------d-67---------------------------------
  6021. INT 67 - Adaptec controllers - DRIVE 1 DATA
  6022. Desc:    this vector stores the last four bytes of the parameter table for
  6023.       hard disk 1
  6024. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  6025. --------d-67---------------------------------
  6026. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  6027. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  6028. --------I-67---------------------------------
  6029. INT 67 - Sangoma CCPOP 3270 resident module
  6030. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  6031. --------U-67---------------------------------
  6032. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  6033. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  6034.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  6035. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  6036.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  6037.       the signature value 434Ch:4F4Bh ('CLOK')
  6038. --------N-6700-------------------------------
  6039. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  6040.     AH = 00h
  6041.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6042. Return: AL = status (see #1964)
  6043.     AH = semaphore owner if status=02h
  6044. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  6045.  
  6046. (Table 1964)
  6047. Values for PC-NET semaphore function status:
  6048.  00h    successful
  6049.  01h    invalid function
  6050.  02h    semaphore already locked
  6051.  03h    unable to lock semaphore
  6052.  04h    semaphore space exhausted
  6053. --------N-6701-------------------------------
  6054. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  6055.     AH = 01h
  6056.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6057. Return: AL = status (see #1964)
  6058.     AH = semaphore owner if status=02h
  6059. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  6060. --------N-6702-------------------------------
  6061. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  6062.     AH = 02h
  6063.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6064. Return: AL = status (see #1964)
  6065.     AH = semaphore owner if status=02h
  6066. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  6067. --------m-671E-------------------------------
  6068. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  6069.     AH = 1Eh
  6070. Return: AH = 00h if installed
  6071.         AL destroyed
  6072.         ES:DI -> ASCII signature "MemLimit"
  6073. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  6074. --------m-671F-------------------------------
  6075. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  6076.     AH = 1Fh
  6077.     DS:SI -> request packet (see #1965)
  6078. Return: AH = status (00h successful, 84h invalid function code, etc.)
  6079. SeeAlso: AH=1Eh
  6080.  
  6081. Format of 386MAX MEMLIMIT request packet:
  6082. Offset    Size    Description    (Table 1965)
  6083.  00h    WORD    function code (00h-0Fh)
  6084.  02h    WORD    return code (see #1966)
  6085.  04h  4 BYTEs    ???
  6086.  08h    WORD    ???
  6087.     ???
  6088.  
  6089. (Table 1966)
  6090. Values for 386MAX MEMLIMIT return code:
  6091.  00h    unknown request
  6092.  01h    invalid parameter for VCPI limit
  6093.  02h    VCPI limit set
  6094.  03h    invalid parameter for EMS limit
  6095.  04h    EMS limit set
  6096.  05h    DPMI disabled
  6097.  06h    XMS disabled
  6098.  07h    XMS limit set
  6099.  08h    unable to uninstall
  6100.  09h    unloaded
  6101. --------m-673F--CX5145-----------------------
  6102. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  6103.     AH = 3Fh
  6104.     CX = 5145h ("QE")
  6105.     DX = 4D4Dh ("MM")
  6106. Return: AH = 00h if installed
  6107.         ES:DI -> QEMM API entry point
  6108. Notes:    if no other program has hooked INT 67, an alternate installation
  6109.       check is to test for the string
  6110.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  6111.       handler's segment; the word at offset 12h contains the offset in
  6112.       the handler's segment of the API entry point
  6113.     although this function is still undocumented, Quarterdeck has recently
  6114.       documented two alternate methods for determining the QEMM API entry
  6115.       point, as well as several of the API functions
  6116.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  6117.       the alternate QEMM installation check and entry point functions 00h,
  6118.       02h, and 03h; version 4D only provides the signature string if the
  6119.       commandline argument "DV" is provided
  6120.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  6121.       recognize the returned entry point as providing QEMM's capabilities
  6122.       because a) only functions 0Ch (different from QEMM 0Ch) and
  6123.             1000h-1009h are supported,
  6124.           b) status is returned as for EMS functions, not QEMM funcs
  6125.           c) the protected-mode entry point returned by function 1000h
  6126.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  6127.     the string check mentioned above is not supported by 386MAX
  6128. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  6129. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  6130.  
  6131. (Table 1967)
  6132. Values for calling QEMM "QPI_GetStatus" function:
  6133.     AH = 00h get QEMM state
  6134. Return: CF clear
  6135.     AL = QEMM state
  6136.         bit 0 set if QEMM turned OFF
  6137.         bit 1 set if in "Auto" mode
  6138. Note:    this function is officially documented
  6139.  
  6140. (Table 1968)
  6141. Values for calling QEMM "QPI_SetStatus" function:
  6142.     AH = 01h set QEMM state
  6143.     AL = new state
  6144.         bit 0 set: place QEMM in OFF state
  6145. Return: CF clear if successful
  6146.     CF set on error
  6147. Note:    this function is officially documented
  6148.  
  6149. (Table 1969)
  6150. Values for calling QEMM QPI function 02h:
  6151.     AH = 02h get ???
  6152. Return: CF clear
  6153.     AX = segment of ??? data structure
  6154.     Data Structure
  6155.     Offset    Size    Description
  6156.      00h    DWORD    page table entry for ???
  6157.         ???
  6158.  
  6159. (Table 1970)
  6160. Values for calling QEMM "QPI_GetVersion" function:
  6161.     AH = 03h get QEMM version
  6162. Return: CF clear
  6163.     AX = BX = version in BCD
  6164. Notes:    this function is officially documented.     The most recent official docs
  6165.       state that the version is returned in both AX and BX; older
  6166.       documentation only mentions BX
  6167.     MICEMM returns AX=0001h, BX unchanged
  6168.  
  6169. (Table 1971)
  6170. Values for calling QEMM QPI function 04h:
  6171.     AH = 04h allocate 4K page and set AUTO/ON mode
  6172. Return: CF clear if successful
  6173.         DX = page number of a 4K page
  6174.     CF set if unable to allocate page
  6175. Note:    QEMM mode unchanged if not AUTO/OFF
  6176.  
  6177. (Table 1972)
  6178. Values for calling QEMM QPI function 05h:
  6179.     AH = 05h free 4K page and turn QEMM off
  6180.     DX = page number returned by function 04h
  6181. Return: CF clear
  6182. Note:    QEMM mode unchanged if not AUTO/ON
  6183.  
  6184. (Table 1973)
  6185. Values for calling QEMM QPI function 06h:
  6186.     AH = 06h make new mapping context???
  6187.     DX = page number of 4K page to hold page table
  6188. Return: CF clear
  6189. Note:    copies page table into given page and then sets ??? page table entry
  6190.       to point at copy
  6191.  
  6192. (Table 1974)
  6193. Values for calling QEMM QPI function 07h:
  6194.     AH = 07h get mapping context
  6195. Return: CF clear
  6196.     DX = page number of page table for current mapping context
  6197.  
  6198. (Table 1975)
  6199. Values for calling QEMM QPI function 08h:
  6200.     AH = 08h set mapping context???
  6201.     DX = linear page number of page table
  6202. Return: CF clear
  6203.  
  6204. (Table 1976)
  6205. Values for calling QEMM QPI function 09h:
  6206.     AH = 09h get linear page number for page table entry
  6207.     CX = page table index
  6208. Return: CF clear
  6209.     DX = linear page number
  6210.  
  6211. (Table 1977)
  6212. Values for calling QEMM QPI function 0Ah:
  6213.     AH = 0Ah set linear page number for page table entry
  6214.     CX = page table index
  6215.     DX = linear page number
  6216. Return: CF clear
  6217.  
  6218. (Table 1978)
  6219. Values for calling QEMM QPI function 0Bh:
  6220.     AH = 0Bh map 4K pages
  6221.     BX = number of pages
  6222.     CX = first page number (must be 0100h to allocate HMA)
  6223.     DX = EMS handle (memory belonging to EMS handle will be mapped
  6224.           into the address space beginning with the first page
  6225.           allocated to the handle)
  6226. Return: AH = 00h
  6227.  
  6228. (Table 1979)
  6229. Values for calling QEMM QPI function 0Ch:
  6230.     AH = 0Ch get available memory
  6231. Return: CF clear
  6232.     BX = 0001h
  6233.     CX = total 4K pages???
  6234.     DX = number of 4K pages free
  6235.  
  6236. (Table 1980)
  6237. Values for calling QEMM QPI function 0Dh:
  6238.     AH = 0Dh CRT controller I/O port trapping
  6239.     AL = mode
  6240.         00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
  6241.         01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
  6242.           03D4h, and 03D5h
  6243.         02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
  6244. Return: CF clear
  6245.  
  6246. (Table 1981)
  6247. Values for calling QEMM QPI function 0Eh:
  6248.     AH = 0Eh set cursor virtualization callbacks
  6249.     DS:BX -> FAR routine for getting hardware cursor address
  6250.     ES:DX -> FAR routine for setting hardware cursor address
  6251. Return: CF clear
  6252. Note:    both callbacks are invoked with CL indicating which
  6253.       CRT controller register to access (0Eh for high
  6254.       byte of cursor address, 0Fh for low byte)
  6255.     the DS:BX callback should return BX=cursor address;
  6256.       ES:DX is called with BL or BH (depending on CL)
  6257.       set to the appropriate half of the cursor's address
  6258.  
  6259. (Table 1982)
  6260. Values for calling QEMM QPI function 0Fh:
  6261.     AH = 0Fh unmap 4K pages
  6262.     CX = first page number
  6263.     DX = number of pages
  6264. Return: CF clear
  6265.     AL = 00h/01h if ???
  6266. Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  6267.       simulate a disabled A20
  6268.  
  6269. (Table 1983)
  6270. Values for calling QEMM QPI function 1000h:
  6271.     AX = 1000h get protected-mode interface
  6272.     DS:SI -> 16-byte buffer for two GDT entries
  6273.     ES:DI -> buffer for 4K page table
  6274. Return: CF clear
  6275.     EAX = offset of protected-mode API entry point
  6276.     DS:SI buffer filled with two GDT descriptors
  6277.         first is QEMM code segment, second is data???
  6278.     ES:DI buffer filled with 4K page table
  6279.     DI points to first unused page table entry
  6280. SeeAlso: INT 67/AX=DE01h
  6281.  
  6282. (Table 1984)
  6283. Values for calling QEMM QPI function 1001h:
  6284.     AX = 1001h get CPU debug registers
  6285.     ES:DI -> buffer for debug registers (8 DWORDs)
  6286. Return: CF clear
  6287.     BL = INT01 handling (see function 1002h)
  6288.     ES:DI buffer filled
  6289.  
  6290. (Table 1985)
  6291. Values for calling QEMM QPI function 1002h:
  6292.     AX = 1002h set CPU debug registers
  6293.     BL = INT01 handling
  6294.         00h     reflect all debugging exceptions as V86-mode INT 01's
  6295.         else convert debugging exceptions other than single-step
  6296.           into V86-mode INT 03's, single-step to INT 01's
  6297.     ES:DI -> buffer containing debug registers (8 DWORDs)
  6298. Return: CF clear
  6299. Notes:    identical to INT 67/AX=DE09h if BL=01h
  6300.     the INT01 handling flag is set to 01h by the general-protection
  6301.       violation handler for certain privileged instructions
  6302.  
  6303. (Table 1986)
  6304. Values for calling QEMM QPI function 1003h:
  6305.     AX = 1003h get machine status word CR0
  6306. Return: CF clear
  6307.     EAX = contents of CR0
  6308. SeeAlso: INT 67/AX=DE07h
  6309.  
  6310. (Table 1987)
  6311. Values for calling QEMM QPI function 1004h:
  6312.     AX = 1004h allocate a 4K page
  6313. Return: CF clear if successful
  6314.         EDX = linear address of allocated page
  6315.     CF set on error
  6316. SeeAlso: INT 67/AX=DE04h
  6317.  
  6318. (Table 1988)
  6319. Values for calling QEMM QPI function 1005h:
  6320.     AX = 1005h free 4K page
  6321.     EDX = linear address of page to free
  6322. Return: CF clear
  6323. SeeAlso: INT 67/AX=DE05h
  6324.  
  6325. (Table 1989)
  6326. Values for calling QEMM QPI function 1006h:
  6327.     AX = 1006h NOP
  6328. Return: CF set
  6329.  
  6330. (Table 1990)
  6331. Values for calling QEMM QPI function 1007h:
  6332.     AX = 1007h get maximum physical memory address
  6333. Return: CF clear
  6334.     EDX = physical address of highest 4K memory page
  6335. SeeAlso: INT 67/AX=DE02h
  6336.  
  6337. (Table 1991)
  6338. Values for calling QEMM QPI function 1008h:
  6339.     AX = 1008h get physical address of page in first megabyte
  6340.     CX = page number (linear address shifted right 12 bits)
  6341. Return: CF clear
  6342.     EDX = linear address of page
  6343. SeeAlso: function 1F00h
  6344.  
  6345. (Table 1992)
  6346. Values for calling QEMM QPI function 1009h:
  6347.     AX = 1009h switch to protected mode
  6348.     ESI = linear address in first megabyte of system reg values
  6349.           (see INT 67/AX=DE0Ch)
  6350.     interrupts disabled
  6351. Return: interrupts disabled
  6352.     GDTR, IDTR, LDTR, TR loaded
  6353.     SS:ESP must have at least 16 bytes space, and the
  6354.           entry point is required to set up a new stack
  6355.           before enabling interrupts
  6356.     EAX, ESI, DS, ES, FS, GS destroyed
  6357.  
  6358. (Table 1993)
  6359. Values for calling QEMM QPI function 100Ah:
  6360.     AX = 100Ah switch back to virtual-86 mode
  6361.     DS = selector for data segment from function 1000h
  6362.     SS:ESP in first megabyte of linear memory
  6363.     interrupts disabled
  6364.     STACK:    QWORD  return address from FAR call to 32-bit segment
  6365.         DWORD  EIP
  6366.         DWORD  CS
  6367.         DWORD  reserved for EFLAGS
  6368.         DWORD  ESP
  6369.         DWORD  SS
  6370.         DWORD  ES
  6371.         DWORD  DS
  6372.         DWORD  FS
  6373.         DWORD  GS
  6374.     will switch to virtual86 mode with interrupts disabled, all
  6375.       segment registers loaded, and EAX destroyed.
  6376.  
  6377. (Table 1994)
  6378. Values for calling QEMM QPI function 11h:
  6379.     AH = 11h get memory type map
  6380.     AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  6381.           by QEMM 6.00)
  6382.     ES:DI -> 256-byte buffer for memory types
  6383. Return: CF clear
  6384.     BL = ???
  6385.     ES:DI buffer filled
  6386. Note:    each byte of the buffer corresponds to a 4K page, and
  6387.       contains the type of that page: 00h = mappable,
  6388.       02h = mapped ROM, 03h = high RAM, 04h = excluded,
  6389.       05h = video, 06h = ROM, 07h = adapter ROM,
  6390.       08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  6391.       0Bh = conventional, 83h = high RAM under MS Windows
  6392.  
  6393. (Table 1995)
  6394. Values for calling QEMM QPI function 12h:
  6395.     AH = 12h get HIRAM chain
  6396. Return: CF clear
  6397.     BX = segment of first MCB in high memory
  6398.         0000h if no high memory
  6399.  
  6400. (Table 1996)
  6401. Values for calling QEMM QPI function 1300h:
  6402.     AX = 1300h VIDRAMEGA???
  6403.     BL = 00h copy ???
  6404.          nonzero copy ??? (reverse)
  6405. Return: CF clear
  6406.     AL = status
  6407.         00h if all pages clean
  6408.         01h if any page dirty
  6409.  
  6410. (Table 1997)
  6411. Values for calling QEMM QPI function 1301h:
  6412.     AX = 1301h check if pages modified
  6413.     DX:DI = start address of range to check
  6414.     CX = length of range in paragraphs
  6415. Return: CF clear
  6416.     CX = status
  6417.         0000h none of the indicated pages is dirty
  6418.         DI destroyed
  6419.         1000h one or more pages is dirty
  6420.         DI = low word of first dirty page's linear addr
  6421.  
  6422. (Table 1998)
  6423. Values for calling QEMM QPI function 1302h:
  6424.     AX = 1302h ???
  6425.     BL = ???
  6426.     BH = ???
  6427.     CX = ???
  6428.     SI = offset of ???
  6429.     DI = offset of ???
  6430.     ???
  6431. Return: CF clear
  6432.     ???
  6433. Note:    disables certain interrupts at the two 8259 PICs during
  6434.       execution; also modifies CRT controller during
  6435.       execution under certain circumstances
  6436.  
  6437. (Table 1999)
  6438. Values for calling QEMM QPI function 1303h:
  6439.     AX = 1303h initialize EGA graphics virtualization
  6440.     BX = number of pages (less 1) of EMS to allocate
  6441. Return: CF clear if successful
  6442.         DX = EMS handle
  6443.     CF set on error
  6444.  
  6445. (Table 2000)
  6446. Values for calling QEMM QPI function 1304h:
  6447.     AX = 1304h shutdown EGA graphics virtualization
  6448.     DX = EMS handle being used for virtualization
  6449. Return: CF clear
  6450.  
  6451. (Table 2001)
  6452. Values for calling QEMM QPI function 1305h:
  6453.     AX = 1305h select portion of EGA graphics to virtualize???
  6454.     (related to graphics virtualization, changes memory mappings)
  6455.     CX = start offset within A000h segment of virtualized mem???
  6456. Return: CF clear
  6457. Note:    disables certain interrupts at the two 8259 PICs during
  6458.       execution (see func 130Ch) and runs inside a QEMM
  6459.       critical section
  6460.  
  6461. (Table 2002)
  6462. Values for calling QEMM QPI function 1306h:
  6463.     AX = 1306h set DESQview critical section counter address
  6464.     ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  6465. Return: CF clear
  6466. Note:    also sets a pointer in the low-memory part of QEMM to
  6467.       the current value of INT 15 if ES:BX not 0000h:0000h
  6468.  
  6469. (Table 2003)
  6470. Values for calling QEMM QPI function 1307h:
  6471.     AX = 1307h ??? (changes memory mappings for entire A000h segment)
  6472. Return: CF clear
  6473. Note:    disables certain interrupts at the two 8259 PICs during
  6474.       execution (see func 130Ch) and runs inside a QEMM
  6475.       critical section
  6476.  
  6477. (Table 2004)
  6478. Values for calling QEMM QPI function 1308h:
  6479.     AX = 1308h start/reset CRT controller I/O trapping
  6480.     BL = subfunction
  6481.         00h restore CRTC I/O port trapping to previous state
  6482.         else start trapping all accesses to I/O ports 03B0-03DF
  6483. Return: CF clear
  6484. Note:    if called more than once in a row with BL nonzero, the
  6485.       original state of the I/O port trapping will be lost
  6486.  
  6487. (Table 2005)
  6488. Values for calling QEMM QPI function 1309h:
  6489.     AX = 1309h Hercules mode-change support
  6490.     ES:BX -> new address for Hercules mode-change callback
  6491. Return: CF clear
  6492. Note:    the callback function is called whenever the CRTC mode
  6493.       register is written, with AL set to the value written
  6494.  
  6495. (Table 2006)
  6496. Values for calling QEMM QPI function 130Ah:
  6497.     AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
  6498.     CX:DX -> DAC register virtualization buffer (see #2088)
  6499.         or 0000h:0000h to disable
  6500. Return: CF clear
  6501.  
  6502. (Table 2007)
  6503. Values for calling QEMM QPI function 130Bh:
  6504.     AX = 130Bh ???
  6505.     BL = ??? (??? or 00h)
  6506. Return: CF clear
  6507.     ???
  6508. Note:    calls AX=130Eh in some cases
  6509.  
  6510. (Table 2008)
  6511. Values for calling QEMM QPI function 130Ch:
  6512.     AX = 130Ch set interrupts to mask
  6513.     BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  6514.           AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  6515. Return: CF clear
  6516.  
  6517. (Table 2009)
  6518. Values for calling QEMM QPI function 130Dh:
  6519.     AX = 130Dh map EGA memory at A0000h
  6520.     ???
  6521. Return: CF clear
  6522. Note:    disables certain interrupts at the two 8259 PICs during execution
  6523.       (see #2008) and runs inside a QEMM critical section
  6524.     calls AX=1307h (see #2003)
  6525.  
  6526. (Table 2010)
  6527. Values for calling QEMM QPI function 130Eh:
  6528.     AX = 130Eh ??? (modifies CRT controller setup)
  6529.     ???
  6530. Return: CF clear
  6531.  
  6532. (Table 2011)
  6533. Values for calling QEMM QPI function 130Fh:
  6534.     AX = 130Fh reset ???
  6535. Return: CF clear
  6536.  
  6537. (Table 2012)
  6538. Values for calling QEMM QPI function 1310h:
  6539.     AX = 1310h copy modified pages to physical video RAM???
  6540.     ???
  6541. Return: CF clear
  6542. Note:    disables certain interrupts at the two 8259 PICs during execution
  6543.       (see #2008) and runs inside a QEMM critical section
  6544.     also calls AX=130Dh (see #2009)
  6545.  
  6546. (Table 2013)
  6547. Values for calling QEMM QPI function 1311h:
  6548.     AX = 1311h set ???
  6549.     BL = zero/nonzero???
  6550. Return: CF clear
  6551. Note:    certain operations will be performed with interrupts
  6552.       (as set by AX=130Ch) enabled rather than disabled if
  6553.       called with BL nonzero
  6554.  
  6555. (Table 2014)
  6556. Values for calling QEMM QPI function 1312h:
  6557.     AX = 1312h (v6.02) NOP???
  6558. Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  6559.  
  6560. (Table 2015)
  6561. Values for calling QEMM QPI function 1400h:
  6562.     AX = 1400h initialize DESQview "protection level" support
  6563.     ES:DI -> protection level configuration (at least 24 bytes)
  6564.         (see #2082)
  6565.     BL = highest ??? to return (one less than number of words)
  6566. Return: CF clear
  6567.     AX = ??? (4204h for v6.00)
  6568. Note:    QEMM also sets the protected mode INT 02 and INT 06
  6569.       vectors to alternate handlers in certain cases
  6570.  
  6571. (Table 2016)
  6572. Values for calling QEMM QPI function 1401h:
  6573.     AX = 1401h turn off DESQview protection level support
  6574.         Return: CF clear
  6575.             ???
  6576.         Notes:    clears the DV critical-section flag address set with
  6577.               function 1306h
  6578.             QEMM also sets the protected mode INT 02 and INT 06
  6579.               vectors to the default handlers if they had been
  6580.               revectored by function 1400h
  6581.  
  6582. (Table 2017)
  6583. Values for calling QEMM QPI function 1402h:
  6584.     AX = 1402h set protection level???
  6585.         BL = protection level???
  6586.             00h NOP
  6587.             01h ???
  6588.             02h ???
  6589.             other (03h) ???
  6590.         ES:DI -> ???
  6591.         Return: CF clear
  6592.             ???
  6593.         Format of Data structure:
  6594.         Offset    Size    Description
  6595.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  6596.          02h    WORD    segment of ??? (word at X:0124h set to this)
  6597.          04h    WORD    number of paragraphs of ???
  6598.          06h  3 WORDs    ??? (copied to X:0000h)
  6599.          0Ch    WORD    ???
  6600.  
  6601. (Table 2018)
  6602. Values for calling QEMM QPI function 1403h:
  6603.     AX = 1403h add ??? to end of list and ??? (execute func 1406h)
  6604.         ES:DI -> ??? structure added to end of ??? list
  6605.             (at least 31 bytes, DWORD at offset 06h used for
  6606.              storing pointer to next struc, WORD at offset 00h
  6607.              seems to be a key or index)
  6608.         Return: CF clear
  6609.  
  6610. (Table 2019)
  6611. Values for calling QEMM QPI function 1404h:
  6612.     AX = 1404h NOP
  6613.         Return: CF clear
  6614.  
  6615. (Table 2020)
  6616. Values for calling QEMM QPI function 1405h:
  6617.     AX = 1405h remove ??? from ??? list
  6618.         BX = key???
  6619.         Return: CF clear
  6620.  
  6621. (Table 2021)
  6622. Values for calling QEMM QPI function 1406h:
  6623.     AX = 1406h ???
  6624.         ???
  6625.         Return: CF clear
  6626.             ???
  6627.         Notes:    this function is a NOP unless protection level 2 or 3
  6628.               is active
  6629.             when not a NOP, one of the actions is to write-protect
  6630.               certain memory pages
  6631.  
  6632. (Table 2022)
  6633. Values for calling QEMM QPI function 1407h:
  6634.     AX = 1407h ???
  6635.         ???
  6636.         Return: CF clear
  6637.             ???
  6638.         Note:    same as function 1406h, but only does anything if
  6639.               protection level 2 is active
  6640.  
  6641. (Table 2023)
  6642. Values for calling QEMM QPI function 1408h:
  6643.     AX = 1408h unprotect???
  6644.         ???
  6645.         Return: CF clear
  6646.             ???
  6647.  
  6648. (Table 2024)
  6649. Values for calling QEMM QPI function 1409h:
  6650.     AX = 1409h abort program causing protection violation???
  6651.         ???
  6652.         Return: CF clear
  6653.             ???
  6654.  
  6655. (Table 2025)
  6656. Values for calling QEMM QPI function 140Ah:
  6657.     AX = 140Ah set ???
  6658.         BX = index of ???
  6659.         Return: CF clear
  6660.             ???
  6661.         Notes:    no range checking is performed on BX
  6662.             this function is a NOP unless protection level 3 active
  6663.  
  6664. (Table 2026)
  6665. Values for calling QEMM QPI function 140Bh:
  6666.     AX = 140Bh get ???
  6667.         BX = index of ???
  6668.         SI = 0000h
  6669.         Return: CF clear
  6670.             SI = segment of 256-byte buffer??? or 0000h
  6671.         Notes:    no range checking is performed on BX
  6672.             this function is a NOP unless protection level 3 active
  6673.  
  6674. (Table 2027)
  6675. Values for calling QEMM QPI function 15h:
  6676.     AH = 15h set timer channel 0 virtualization buffer
  6677.         ES:BX -> WORD buffer for timer channel 0 divisor
  6678.             0000h:0000h to disable virtualization
  6679.         Return: CF clear
  6680.  
  6681. (Table 2028)
  6682. Values for calling QEMM v5.00+ QPI function 1600h:
  6683.     AX = 1600h get memory access status
  6684.         ES:DI -> 256-byte buffer
  6685.         Return: ES:DI buffer filled
  6686.         Note:    each byte of the buffer indicates the status of a 4K
  6687.               page (bit 0 set if read, bit 1 set if written)
  6688.  
  6689. (Table 2029)
  6690. Values for calling QEMM v5.00+ QPI function 1601h:
  6691.     AX = 1601h set memory access status
  6692.         ES:DI -> 256-byte buffer containing access statuses (see above)
  6693.  
  6694. (Table 2030)
  6695. Values for calling QEMM v5.00+ QPI function 17h:
  6696.     AH = 17h get memory usage statistics
  6697.         ES:DI -> 81-byte buffer for memory statistics (see #2086)
  6698.         Return: CF clear
  6699.  
  6700. (Table 2031)
  6701. Values for calling QEMM v5.11+ QPI function 18h:
  6702.     AH = 18h check whether conventional memory mapped into address range
  6703.         ES:BX = starting address
  6704.         CX = number of 4K pages
  6705.         Return: CF clear
  6706.             AL = 00h one or more pages is remapped
  6707.                  01h all pages in range are conventional memory
  6708.                 (physical address == virtual address)
  6709.  
  6710. (Table 2032)
  6711. Values for calling QEMM v5.11+ QPI function 19h:
  6712.     AH = 19h NOP
  6713.         Return: CF set
  6714.  
  6715. (Table 2033)
  6716. Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
  6717.     AX = 1A00h get byte from I/O port
  6718.     DX = port number
  6719. Return: CF clear
  6720.     BL = port value
  6721. Note:    this function was officially documented with the release of QEMM 7.50
  6722.  
  6723. (Table 2034)
  6724. Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
  6725.     AX = 1A01h send byte to I/O port
  6726.     BL = value to send
  6727.     DX = port number
  6728. Return: CF clear
  6729. Note:    this function was officially documented with the release of QEMM 7.50
  6730.  
  6731. (Table 2035)
  6732. Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
  6733.     AX = 1A02h
  6734.     BH = index value to send
  6735.     DX = base port number
  6736. Return: CF clear
  6737.     BL = value read from I/O port (DX+1)
  6738. Note:    this function was officially documented with the release of QEMM 7.50
  6739.  
  6740. (Table 2036)
  6741. Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
  6742.     AX = 1A03h send bytes to two consecutive I/O ports
  6743.     BH = value for first I/O port (DX)
  6744.     BL = value for second I/O port (DX+1)
  6745.     DX = base port number
  6746. Return: CF clear
  6747. Note:    this function was officially documented with the release of QEMM 7.50
  6748.  
  6749. (Table 2037)
  6750. Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
  6751.     AX = 1A04h
  6752.     BX = value to write to port
  6753.     CX = direction and size
  6754.         bit 2: output instead of input
  6755.         bit 3: word instead of byte
  6756.     DX = I/O port to be accessed
  6757. Return: CF clear
  6758.     BX = value read (if CX indicates read)
  6759. Note:    this function was officially documented with the release of QEMM 7.50
  6760.  
  6761. (Table 2038)
  6762. Values for calling QEMM v7.03+ function 1A05h
  6763.     AX = 1A05h
  6764.     ???
  6765. Return: ???
  6766.  
  6767. (Table 2039)
  6768. Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
  6769.     AX = 1A06h
  6770. Return: CF clear
  6771.     ES:DI -> current I/O callback function
  6772. Note:    this function was officially documented with the release of QEMM 7.50
  6773.  
  6774. (Table 2040)
  6775. Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
  6776.     AX = 1A07h
  6777.     ES:DI -> new I/O callback function
  6778. Return: CF clear
  6779. Note:    this function was officially documented with the release of QEMM 7.50
  6780.  
  6781. (Table 2041)
  6782. Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
  6783.     AX = 1A08h
  6784.     DX = I/O port number
  6785. Return: CF clear
  6786.     BL = trapping state (00h not being trapped, 01h trap installed)
  6787. Note:    this function was officially documented with the release of QEMM 7.50
  6788.  
  6789. (Table 2042)
  6790. Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
  6791.     AX = 1A09h
  6792.     DX = I/O port number
  6793. Return: CF clear
  6794. Note:    this function was officially documented with the release of QEMM 7.50
  6795.  
  6796. (Table 2043)
  6797. Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
  6798.     AX = 1A0Ah
  6799.     DX = I/O port number
  6800. Return: CF clear
  6801. Note:    this function was officially documented with the release of QEMM 7.50
  6802.  
  6803. (Table 2044)
  6804. Values for calling QEMM v5.11+ QPI function 1B00h:
  6805.     AX = 1B00h get EMM Import Structure address
  6806.     ES:DI -> buffer for EMM import data structure (see #2084)
  6807. Return: CF set on error
  6808.     CF clear if successful
  6809. SeeAlso: INT 21/AX=4402h/SF=01h
  6810.  
  6811. (Table 2045)
  6812. Values for calling QEMM v5.11+ QPI function 1B01h:
  6813.     AX = 1B01h disable V86 mode
  6814. Return: CF set on error
  6815.         (i.e. no Global EMM Import rec. allocated)
  6816.     CF clear if successful
  6817. Note:    shuts down EMS and initializes Global EMM Import record; this function
  6818.       is invoked from the callback supplied by INT 2F/AX=1605h
  6819.  
  6820. (Table 2046)
  6821. Values for calling QEMM v5.11+ QPI function 1B02h:
  6822.     AX = 1B02h enable V86 mode
  6823. Return: CF set on error
  6824.     CF clear if successful
  6825. Note:    restarts EMS and frees Global EMM Import record; this function is
  6826.       invoked from the callback supplied by INT 2F/AX=1605h
  6827.  
  6828. (Table 2047)
  6829. Values for calling QEMM v5.11+ QPI function 1B03h:
  6830.     AX = 1B03h MS Windows initializing
  6831.     CX = segment from which Windows init broadcast made???
  6832.     DX = Windows startup flags
  6833.     DI = Windows version number (major in upper byte)
  6834. Return: CF clear if successful
  6835.         DS:SI -> V86 mode enable/disable callback (see INT 2F/AX=1605h)
  6836.         ES:BX -> startup info structure (see INT 2F/AX=1605h)
  6837.     CF set on error (unable to start Windows)
  6838. SeeAlso: INT 2F/AX=1605h
  6839.  
  6840. (Table 2048)
  6841. Values for calling QEMM v5.11+ QPI function 1B04h:
  6842.     AX = 1B04h MS Windows terminating
  6843. Return: CF clear
  6844.  
  6845. (Table 2049)
  6846. Values for calling QEMM v5.11+ QPI function 1B05h:
  6847.     AX = 1B05h determine whether program is driver
  6848.     DS:DX -> ASCIZ filename
  6849. Return: CF clear
  6850.     AL = status
  6851.         01h if string ends in ".DRV"
  6852.         FFh if string ends in "GDI.EXE"
  6853.         00h otherwise
  6854. Note:    when MS Windows 3.0 standard mode starts, QEMM patches all drivers
  6855.       until GDI.EXE is loaded
  6856.  
  6857. (Table 2050)
  6858. Values for calling QEMM v5.11+ QPI function 1B06h:
  6859.     AX = 1B06h patch protected-mode check in Windows driver
  6860.     CX = length of data pointed at by DS:DX
  6861.     DS:DX -> buffer containing Windows driver code
  6862. Return: CF clear
  6863. Note:    patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
  6864.       sequences, which has the effect that the protected-mode check will
  6865.       only indicate protected mode in native protected mode and not in V86
  6866.       mode
  6867.  
  6868. (Table 2051)
  6869. Values for calling QEMM v5.11+ QPI function 1B07h:
  6870.     AX = 1B07h
  6871. BUG: QEMM 6.00-7.01 accept this and branch randomly
  6872.  
  6873. (Table 2052)
  6874. Values for calling QEMM v5.11+ QPI function 1Bxxh:
  6875.     AX = 1B08h to 1BFFh
  6876. Return: CF set
  6877.  
  6878. (Table 2053)
  6879. Values for calling QEMM v5.11+ QPI function 1C00h:
  6880.     AX = 1C00h disable IRQ0-7 calldowns
  6881. Return: CF clear
  6882.  
  6883. (Table 2054)
  6884. Values for calling QEMM v5.11+ QPI function 1C01h:
  6885.     AX = 1C01h set V86-mode IRQ0-7 handlers
  6886.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  6887. Return: CF clear
  6888.  
  6889. (Table 2055)
  6890. Values for calling QEMM v5.11+ QPI function 1C02h:
  6891.     AX = 1C02h disable IRQ8-15 handlers
  6892. Return: CF clear
  6893.  
  6894. (Table 2056)
  6895. Values for calling QEMM v5.11+ QPI function 1C03h:
  6896.     AX = 1C03h set V86-mode IRQ8-15 handlers
  6897.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  6898. BUG:    although the jump table only contains four entries, QEMM 6.00 will
  6899.       attempt to use it for any value of AL between 00h and 2Ah, thus
  6900.       branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
  6901.       similarly for AL=04h-1Bh
  6902. Note:    when enabled, the appropriate IRQs are reflected back to the specified
  6903.       handlers in virtual-86 mode after the CPU automatically invokes the
  6904.       protected-mode handler inside QEMM
  6905.  
  6906. (Table 2057)
  6907. Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
  6908.     AX = 1C04h
  6909.     BX = number of interrupt to simulate
  6910. Return: ???
  6911. Notes:    this function will allow proper simulation of a hardware interrupt
  6912.       under DESQview and DESQview/X, where the correct interrupt handler
  6913.       may be in a different process with a completely different address
  6914.       space
  6915.     this function was officially documented with the release of QEMM v7.50
  6916.  
  6917. (Table 2058)
  6918. Values for calling QEMM v6.00+ QPI function 1D00h:
  6919.     AX = 1D00h switch to pre-Stealth interrupt vector table
  6920. Return: CF clear if supported (QEMM v6.x)
  6921.     CF set if not supported (QEMM v7+)
  6922. Notes:    also switches VGA Save table pointer
  6923.       (0040h:00A8h) and overwrites the vectors
  6924.       currently assigned for use by the two
  6925.       interrupt controllers (see INT 67/AX=DE0Ah)
  6926.       with the vectors for INT 08-0F and 70-77 (to
  6927.       avoid crashing the system).
  6928.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  6929.       set
  6930.  
  6931. (Table 2059)
  6932. Values for calling QEMM v6.00+ QPI function 1D01h:
  6933.     AX = 1D01h restore user interrupt vector table
  6934. Return: CF clear if supported (QEMM v6.x)
  6935.     CF set if not supported (QEMM v7+)
  6936. Notes:    interrupts should be disabled around the
  6937.       AX=1D00h and AX=1D01h calls because QEMM does
  6938.       not modify the memory maps to map in ROM, so
  6939.       an interrupt could be disastrous
  6940.     clears any pending IRQ7 at end of function
  6941.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  6942.       set
  6943.  
  6944. (Table 2060)
  6945. Values for calling QEMM v6.00+ QPI function 1Dxxh:
  6946.     AX = 1D02h to 1DFFh
  6947. Return: CF set
  6948.  
  6949. (Table 2061)
  6950. Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
  6951.     AX = 1E00h get Stealth configuration
  6952. Return:    CF clear
  6953.     BL = memory configuration flags (documented as "reserved") (see #2085)
  6954.     BH = (v7.00+) disk buffer flags
  6955.         bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
  6956.         bit 1: buffer has already been used
  6957.     CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
  6958.     CH = suspend/resume interrupt (00h none)
  6959.     DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
  6960.     DH = reserved (always 00h for v6.00)
  6961.     SI = reserved (always 0000h for v6.00)
  6962.     DI = reserved (always 0000h for v6.00)
  6963. Note:    this function is officially documented
  6964.  
  6965. (Table 2062)
  6966. Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
  6967.     AX = 1E01h get number of Stealth'ed ROMs
  6968. Return: CF clear
  6969.     BX = number of Stealth'ed ROMs
  6970. Note:    this function is officially documented
  6971.  
  6972. (Table 2063)
  6973. Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
  6974.     AX = 1E02h
  6975.     ES:DI -> buffer for Stealth ROM info (see #2087)
  6976. Return: CF clear
  6977.     BX = number of Stealth'ed ROMs
  6978.     ES:DI buffer filled
  6979. Note:    this function is officially documented
  6980.  
  6981. (Table 2064)
  6982. Values for unimplemented Stealth information functions:
  6983.     AX = 1E03h to 1EFFh
  6984. Return: CF set
  6985.  
  6986.  
  6987. (Table 2065)
  6988. Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
  6989.     AX = 1F00h get page table entry
  6990.     CX = page number (0000h-010Fh)
  6991. Return:    CF clear
  6992.     EDX = page table entry
  6993. Note:    this function is officially documented
  6994.  
  6995. (Table 2066)
  6996. Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
  6997.     AX = 1F01h set page table entry
  6998.     CX = page number (0000h-010Fh)
  6999.     EDX = new page table entry
  7000. Return: CF clear
  7001. Note:    this function is officially documented
  7002. SeeAlso: function 1008h
  7003.  
  7004. (Table 2067)
  7005. Values for calling QEMM v6.00+ QPI function 1Fxxh:
  7006.     AX = 1F02h to 1FFFh
  7007. Return: CF set
  7008.  
  7009. (Table 2068)
  7010. Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
  7011.     AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  7012. Return: CF clear
  7013.     BL = flags
  7014.         bit 7: VirtualHDIRQ setting respected
  7015.           (set if Stealth active)
  7016.         bits 6-1 reserved
  7017.         bit 0: VirtualHDIRQ currently enabled
  7018.         (INT 15/AH=90h suppressed when enabled)
  7019. Note:    this function is officially documented
  7020. SeeAlso: #2069
  7021.  
  7022. (Table 2069)
  7023. Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
  7024.     AX = 2001h set VirtualHDIRQ state
  7025.     BL bit 0 = new VirtualHDIRQ state
  7026. Return: CF clear
  7027.     BL = old VHI setting (bits 0 and 7, see #2068)
  7028. Note:    this function is officially documented
  7029. SeeAlso: #2068
  7030.  
  7031. (Table 2070)
  7032. Values for calling QEMM v6.00+ QPI function 20xxh:
  7033.     AX = 2002h to 20FFh
  7034. Return: CF set
  7035.  
  7036. (Table 2071)
  7037. Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
  7038.     AX = 2100h copy data from Stealthed address space
  7039.     DS:SI -> start address of hidden memory to copy
  7040.     ES:DI -> buffer for copied data
  7041.     ECX = number of bytes to copy
  7042. Return: CF clear if successful
  7043.     CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
  7044. Note:    this function was officially documented with the release of QEMM 7.50
  7045.  
  7046. (Table 2072)
  7047. Values for calling QEMM v6.00+ QPI function 21xxh:
  7048.     AX = 2101h to 21FFh
  7049. Return: CF set
  7050.  
  7051. (Table 2073)
  7052. Values for calling QEMM v6.03+ QPI function 2200h:
  7053.     AX = 2200h DESQview/X support -- get ???
  7054. Return: CF clear
  7055.     ES:DI -> ???
  7056.  
  7057. (Table 2074)
  7058. Values for calling QEMM v6.03+ QPI function 2201h:
  7059.     AX = 2201h DESQview/X support -- set ???
  7060.     ES:DI -> ??? or 0000h:0000h
  7061. Return: CF clear if successful
  7062.     CF set on error
  7063.  
  7064. (Table 2075)
  7065. Values for calling QEMM v6.04+ QPI function 2300h:
  7066.     AX = 2300h get ???
  7067.     BX = which ??? to get (must be 0000h for v6.04)
  7068. Return: CF clear if successful
  7069.         ES:DI -> ???
  7070.     CF set on error
  7071.  
  7072. (Table 2076)
  7073. Values for calling QEMM v6.04+ QPI function 2301h:
  7074.     AX = 2301h set ???
  7075.     BX = which ??? to set (must be 0000h for v6.04)
  7076.     ES:DI -> ???
  7077. Return: CF clear if successful
  7078.     CF set on error
  7079.  
  7080. (Table 2077)
  7081. Values for calling QEMM v6.04+ QPI function 2302h:
  7082.     AX = 2302h clear specified ???
  7083.     BX = which ??? to clear (must be 0000h for v6.04)
  7084. Return: CF clear if successful
  7085.     CF set on error
  7086.  
  7087. (Table 2078)
  7088. Values for calling QEMM v6.04+ QPI function 23FFh:
  7089.     AX = 23FFh clear all ???
  7090. Return: CF clear if successful
  7091.     CF set on error
  7092.  
  7093. (Table 2079)
  7094. Values for calling QEMM v6.04+ QPI function 23xxh:
  7095.     AX = 2303h to 23FEh
  7096. Return: CF set
  7097.  
  7098. (Table 2080)
  7099. Values for calling QEMM v7.01+ QPI function 24h:
  7100.     AH = 24h ST-DBL support
  7101.     AL = subfunction
  7102.         00h set ???
  7103.         EDX -> information table (EDX = segment SHL 16 + offset)
  7104.         01h ???
  7105. Return: CF clear if successful
  7106.     CF set on error
  7107.  
  7108. (Table 2081)
  7109. Values for calling QEMM unimplemented QPI functions:
  7110.     AH = 25h to FFh
  7111. Return: CF set
  7112.  
  7113. Format of QEMM protection level configuration:
  7114. Offset    Size    Description    (Table 2082)
  7115.  00h    WORD    segment of 128 breakpoint (INT 3) instructions for use in
  7116.           DESQview protection level 3 interrupt vector checking, or
  7117.           0000h to disable; in pl3, INTs 00-7F are pointed at these
  7118.           breakpoints
  7119.  02h    DWORD    -> array of actual interrupt handler addresses for INT 00-7F
  7120.           when interrupt vectors are pointed at protection level 3
  7121.           breakpoints
  7122.  06h    DWORD    far pointer to ??? region list (see #2083)
  7123.  0Ah    DWORD    far pointer to buffer for returned ???
  7124.  0Eh    DWORD    seg:ofs of function to call on protection violation???
  7125.  12h    WORD    segment of ???
  7126.  14h    DWORD    far pointer to DWORD containing number of paragraphs of
  7127.           ??? for segment at offset 12h
  7128.     ???
  7129.  
  7130. Format of protection level Region List:
  7131. Offset    Size    Description    (Table 2083)
  7132.  00h    WORD    number of PAIRS of pointers to follow
  7133.  02h 2N DWORDs    start/end seg:ofs addresses of ??? regions
  7134. Note:    QEMM converts the segmented addresses into linear addresses in place
  7135.  
  7136. Format of EMM Import structure:
  7137. Offset    Size    Description    (Table 2084)
  7138.  00h    DWORD    physical address of EMM import struct
  7139.  04h    BYTE    major version (v6.00 sets to 01h)
  7140.  05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  7141. SeeAlso: INT 21/AX=4402h/SF=01h
  7142.  
  7143. Bitfields for memory configuration flags:
  7144. Bit(s)    Description    (Table 2085)
  7145.  0    conventional memory sorted
  7146.  1    conventional memory filled
  7147.  2    ???
  7148.  3    ???
  7149.  4    expanded memory is in use
  7150.  5    ???
  7151.  
  7152. Format of QEMM 6.0 memory statistics:
  7153. Offset    Size    Description    (Table 2086)
  7154.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  7155.  01h    DWORD    initial conventional memory in bytes
  7156.  05h    DWORD    initial extended memory in bytes
  7157.  09h    DWORD    initial expanded memory in bytes
  7158.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  7159.  11h    DWORD    Unavailable conventional memory in bytes
  7160.  15h    DWORD    Unavailable extended memory in bytes
  7161.  19h    DWORD    Unavailable expanded memory in bytes
  7162.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  7163.         Add to offset 49h for Total unavailable top/shadow.
  7164.  21h    DWORD    QEMM code size in bytes
  7165.  25h    DWORD    QEMM data size in bytes
  7166.  29h    DWORD    bytes used for TASKS=
  7167.  2Dh    DWORD    DMA buffer size
  7168.  31h    DWORD    bytes used for MAPS=
  7169.  35h    DWORD    bytes of high RAM
  7170.  39h    DWORD    bytes used by mapped ROMs
  7171.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  7172.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  7173.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  7174.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  7175.         Add to offset 1Dh for Total unavailable top/shadow.
  7176.  4Dh    DWORD    conventional memory overhead in bytes
  7177.         (set to 0 by QEMM.COM prior to call)
  7178.  
  7179. Format of Stealth ROM info [array]:
  7180. Offset    Size    Description    (Table 2087)
  7181.  00h    WORD    starting segment of ROM
  7182.  02h    WORD    length of ROM in paragraphs
  7183.  
  7184. Format of QEMM EGA/VGA DAC register virtualization buffer:
  7185. Offset    Size    Description    (Table 2088)
  7186.  00h    BYTE    (temp) current color register number
  7187.  01h    BYTE    (temp) number of bytes written so far for current color reg
  7188.  02h 768 BYTEs    three bytes per color register
  7189. --------m-6740-------------------------------
  7190. INT 67 - LIM EMS - GET MANAGER STATUS
  7191.     AH = 40h
  7192. Return: AH = status (00h,80h,81h,84h) (see #2089)
  7193. Note:    this call can be used only after establishing that the EMS driver is in
  7194.       fact present
  7195. SeeAlso: AH=3Fh,AX=FFA5h
  7196.  
  7197. (Table 2089)
  7198. Values for EMS function status:
  7199.  00h    successful
  7200.  80h    internal error
  7201.  81h    hardware malfunction
  7202.  83h    invalid handle
  7203.  84h    undefined function requested by application
  7204.  85h    no more handles available
  7205.  86h    error in save or restore of mapping context
  7206.  87h    insufficient memory pages in system
  7207.  88h    insufficient memory pages available
  7208.  89h    zero pages requested
  7209.  8Ah    invalid logical page number encountered
  7210.  8Bh    invalid physical page number encountered
  7211.  8Ch    page-mapping hardware state save area is full
  7212.  8Dh    save of mapping context failed
  7213.  8Eh    restore of mapping context failed
  7214.  8Fh    undefined subfunction
  7215.  90h    undefined attribute type
  7216.  91h    feature not supported
  7217.  92h    successful, but a portion of the source region has been overwritten
  7218.  93h    length of source or destination region exceeds length of region
  7219.       allocated to either source or destination handle
  7220.  94h    conventional and expanded memory regions overlap
  7221.  95h    offset within logical page exceeds size of logical page
  7222.  96h    region length exceeds 1M
  7223.  97h    source and destination EMS regions have same handle and overlap
  7224.  98h    memory source or destination type undefined
  7225.  9Ah    specified alternate map register or DMA register set not supported
  7226.  9Bh    all alternate map register or DMA register sets currently allocated
  7227.  9Ch    alternate map register or DMA register sets not supported
  7228.  9Dh    undefined or unallocated alternate map register or DMA register set
  7229.  9Eh    dedicated DMA channels not supported
  7230.  9Fh    specified dedicated DMA channel not supported
  7231.  A0h    no such handle name
  7232.  A1h    a handle found had no name, or duplicate handle name
  7233.  A2h    attempted to wrap around 1M conventional address space
  7234.  A3h    source array corrupted
  7235.  A4h    operating system denied access
  7236. --------m-6741-------------------------------
  7237. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  7238.     AH = 41h
  7239. Return: AH = status (see also AH=40h)
  7240.         00h function successful
  7241.         BX = segment of page frame
  7242. SeeAlso: AH=58h,AH=68h
  7243. --------m-6742-------------------------------
  7244. INT 67 - LIM EMS - GET NUMBER OF PAGES
  7245.     AH = 42h
  7246. Return: AH = status (see also AH=40h)
  7247.         00h function successful
  7248.         BX = number of unallocated pages
  7249.         DX = total number of pages
  7250. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  7251.       when this call is made; use AH=46h to ensure that EMM386 is ON
  7252.       before making this call
  7253. SeeAlso: INT 2F/AX=2702h
  7254. --------m-6743-------------------------------
  7255. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  7256.     AH = 43h
  7257.     BX = number of logical pages to allocate
  7258. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #2089)
  7259.     DX = handle if AH=00h
  7260. SeeAlso: AH=45h
  7261. --------m-6744-------------------------------
  7262. INT 67 - LIM EMS - MAP MEMORY
  7263.     AH = 44h
  7264.     AL = physical page number (0-3)
  7265.     BX = logical page number
  7266.         or FFFFh to unmap (QEMM)
  7267.     DX = handle
  7268. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #2089)
  7269. SeeAlso: AH=69h
  7270. --------m-6745-------------------------------
  7271. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  7272.     AH = 45h
  7273.     DX = EMM handle
  7274. Return: AH = status (00h,80h,81h,83h,84h,86h) (see #2089)
  7275. SeeAlso: AH=43h
  7276. --------m-6746-------------------------------
  7277. INT 67 - LIM EMS - GET EMM VERSION
  7278.     AH = 46h
  7279. Return: AH = status (00h,80h,81h,84h) (see #2089)
  7280.     AL = EMM version number if AH=00h
  7281. --------m-6747-------------------------------
  7282. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  7283.     AH = 47h
  7284.     DX = handle
  7285. Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #2089)
  7286. SeeAlso: AH=48h
  7287. --------m-6748-------------------------------
  7288. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  7289.     AH = 48h
  7290.     DX = handle
  7291. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #2089)
  7292. SeeAlso: AH=47h
  7293. --------m-6749-------------------------------
  7294. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  7295.     AH = 49h
  7296. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  7297. --------m-674A-------------------------------
  7298. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  7299.     AH = 4Ah
  7300. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  7301. --------m-674B-------------------------------
  7302. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  7303.     AH = 4Bh
  7304. Return: AH = status (00h,80h,81h,83h,84h) (see #2089)
  7305.     BX = number of EMM handles if AH=00h
  7306. --------m-674C-------------------------------
  7307. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  7308.     AH = 4Ch
  7309.     DX = EMM handle
  7310. Return: AH = status (see #1393)
  7311.     BX = number of logical pages if AH=00h
  7312. SeeAlso: AH=4Dh
  7313. --------m-674D-------------------------------
  7314. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  7315.     AH = 4Dh
  7316.     ES:DI -> array to receive information
  7317. Return: AH = status (00h,80h,81h,84h) (see #2089)
  7318.     ---if AH=00h---
  7319.     BX = number of active EMM handles
  7320.     array filled with 2-word entries, consisting of a handle and the
  7321.       number of pages allocated to that handle
  7322. SeeAlso: AH=4Ch
  7323. --------m-674E-------------------------------
  7324. INT 67 - LIM EMS - GET OR SET PAGE MAP
  7325.     AH = 4Eh
  7326.     AL = subfunction
  7327.         00h get mapping registers
  7328.         01h set mapping registers
  7329.         02h get and set mapping registers at once
  7330.         03h get size of page-mapping array
  7331.     DS:SI -> array holding information (AL=01h/02h)
  7332.     ES:DI -> array to receive information (AL=00h/02h)
  7333. Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
  7334.         00h successful
  7335.         AL = bytes in page-mapping array (AL=03h only)
  7336.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  7337. Notes:    this function was designed to be used by multitasking operating systems
  7338.       and should not ordinarily be used by appplication software.
  7339.     MD386 returns the size of the page-mapping array in AX instead of AL
  7340. SeeAlso: AH=4Fh
  7341. --------m-674F-------------------------------
  7342. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  7343.     AH = 4Fh
  7344.     AL = subfunction
  7345.         00h get partial page map
  7346.            DS:SI -> structure containing list of segments whose mapping
  7347.             contexts are to be saved
  7348.            ES:DI -> array to receive page map
  7349.         01h set partial page map
  7350.            DS:SI -> structure containing saved partial page map
  7351.         02h get size of partial page map
  7352.            BX = number of mappable segments in the partial map to be saved
  7353. Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
  7354.         8Bh one of the specified segments is not mappable
  7355.         A3h contents of partial page map corrupted or count of mappable
  7356.         segments exceeds total number of mappable segments in system
  7357.     AL = size of partial page map for subfunction 02h
  7358. SeeAlso: AH=4Eh
  7359. --------m-6750-------------------------------
  7360. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  7361.     AH = 50h
  7362.     AL = subfunction
  7363.         00h use physical page numbers
  7364.         01h use segment addresses
  7365.     DX = handle
  7366.     CX = number of entries in array
  7367.     DS:SI -> mapping array (see #2090)
  7368. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2089)
  7369. SeeAlso: AH=40h
  7370.  
  7371. Format of EMS mapping array entry:
  7372. Offset    Size    Description    (Table 2090)
  7373.  00h    WORD    logical page number or FFFFh to unmap physical page
  7374.  02h    WORD    physical page number or segment address
  7375. --------m-6751-------------------------------
  7376. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  7377.     AH = 51h
  7378.     DX = handle
  7379.     BX = number of pages to be allocated to handle
  7380. Return:    AH = status (00h,80h,81h,83h,84h,87h,88h) (see #2091)
  7381.     BX = actual number of pages allocated to handle
  7382.  
  7383. (Table 2091)
  7384. Values for EMS function status:
  7385.  00h    successful
  7386.  80h    internal error
  7387.  81h    hardware malfunction
  7388.  83h    invalid handle
  7389.  84h    undefined function requested
  7390.  87h    more pages requested than present in system
  7391.  88h    more pages requested than currently available
  7392.  8Ah    invalid logical page number encountered
  7393.  8Bh    invalid physical page number encountered
  7394.  8Fh    undefined subfunction
  7395.  90h    undefined attribute type
  7396.  91h    feature not supported
  7397.  A0h    no such handle name
  7398.  A1h    duplicate handle name
  7399. --------m-6752-------------------------------
  7400. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  7401.     AH = 52h
  7402.     AL = subfunction
  7403.         00h get handle attributes
  7404.         Return: AL = attribute
  7405.                 00h handle is volatile
  7406.                 01h handle is nonvolatile
  7407.         01h set handle attributes
  7408.         BL = new attribute (see returned AL)
  7409.         02h get attribute capability
  7410.         Return: AL = attribute capability
  7411.                 00h only volatile handles supported
  7412.                 01h both volatile and non-volatile supported
  7413.     DX = handle
  7414. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #2089)
  7415. SeeAlso: AH=53h
  7416. --------m-6753-------------------------------
  7417. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  7418.     AH = 53h
  7419.     AL = subfunction
  7420.         00h get handle name
  7421.            ES:DI -> 8-byte buffer for handle name
  7422.         01h set handle name
  7423.            DS:SI -> 8-byte handle name
  7424.     DX = handle
  7425. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #2089)
  7426. SeeAlso: AH=52h
  7427. --------m-6754-------------------------------
  7428. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  7429.     AH = 54h
  7430.     AL = subfunction
  7431.         00h get handle directory
  7432.            ES:DI -> buffer for handle directory (see #2092)
  7433.         01h search for named handle
  7434.            DS:SI -> 8-byte name
  7435.         02h get total number of handles
  7436. Return: AL = number of entries in handle directory (subfunction 00h)
  7437.     DX = value of named handle (subfunction 01h)
  7438.     BX = total number of handles (subfunction 02h)
  7439.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #2091)
  7440.         A1h a handle found had no name
  7441.  
  7442. Format of EMS handle directory entry:
  7443. Offset    Size    Description    (Table 2092)
  7444.  00h    WORD    handle
  7445.  02h  8 BYTEs    handle's name
  7446. --------m-6755-------------------------------
  7447. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  7448.     AH = 55h
  7449.     AL = subfunction
  7450.         00h physical page numbers provided by caller
  7451.         01h segment addresses provided by caller
  7452.     DX = handle
  7453.     DS:SI -> structure containing map and jump address
  7454. Return: (at target address unless error)
  7455.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2089)
  7456. SeeAlso: AH=56h
  7457. --------m-6756-------------------------------
  7458. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  7459.     AH = 56h
  7460.     AL = subfunction
  7461.         00h physical page numbers provided by caller
  7462.         DX = handle
  7463.         DS:SI -> structure containing page map and call address
  7464.         01h segment addresses provided by caller
  7465.         DX = handle
  7466.         DS:SI -> structure containing page map and call address
  7467.         02h get page map stack space required
  7468.         Return: BX = stack space required
  7469. Return: (if successful, the target address is called.  Use a RETF to return and
  7470.      restore mapping context)
  7471.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2089)
  7472. SeeAlso: AH=55h
  7473. --------m-6756FF-----------------------------
  7474. INT 67 - RM386 v6.00 - ???
  7475.     AX = 56FFh
  7476.     DS:SI -> ???
  7477.     ???
  7478. Return: ???
  7479. --------m-6757-------------------------------
  7480. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  7481.     AH = 57h
  7482.     AL = subfunction
  7483.         00h move memory region
  7484.         01h exchange memory region
  7485.     DS:SI -> structure describing source and destination (see #2094)
  7486. Return: AH = status (see #2093)
  7487. Note:    source and destination may overlap for a move, in which case the copy
  7488.       direction is chosen such that the destination receives an intact copy
  7489.       of the source region
  7490.  
  7491. (Table 2093)
  7492. Values for EMS function status:
  7493.  00h    successful
  7494.  80h    internal error
  7495.  81h    hardware failure
  7496.  83h    invalid handle
  7497.  84h    undefined function requested
  7498.  8Ah    invalid logical page number encountered
  7499.  8Fh    undefined subfunction
  7500.  92h    successful, but a portion of the source region has been overwritten
  7501.  93h    length of source or destination region exceeds length of region
  7502.       allocated to either source or destination handle
  7503.  94h    conventional and expanded memory regions overlap
  7504.  95h    offset within logical page exceeds size of logical page
  7505.  96h    region length exceeds 1M
  7506.  97h    source and destination EMS regions have same handle and overlap
  7507.  98h    memory source or destination type undefined
  7508.  A2h    attempted to wrap around 1M conventional address space
  7509.  
  7510. Format of EMS copy data:
  7511. Offset    Size    Description    (Table 2094)
  7512.  00h    DWORD    region length in bytes
  7513.  04h    BYTE    source memory type
  7514.         00h conventional
  7515.         01h expanded
  7516.  05h    WORD    source handle (0000h if conventional memory)
  7517.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  7518.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  7519.  0Bh    BYTE    destination memory type
  7520.         00h conventional
  7521.         01h expanded
  7522.  0Ch    WORD    destination handle
  7523.  0Eh    WORD    destination initial offset
  7524.  10h    WORD    destination initial segment or page
  7525. --------m-6758-------------------------------
  7526. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  7527.     AH = 58h
  7528.     AL = subfunction
  7529.         00h get mappable physical address array
  7530.         ES:DI -> buffer to be filled with array
  7531.         01h get number of entries in m.p.a. array
  7532. Return: CX = number of entries in array
  7533.     AH = status (00h,80h,81h,84h,8Fh) (see #2093)
  7534. Note:    the returned array for subfunction 00h is filled in physical segment
  7535.       address order
  7536.  
  7537. Format of EMS mappable physical address entry:
  7538. Offset    Size    Description    (Table 2095)
  7539.  00h    WORD    physical page segment
  7540.  02h    WORD    physical page number
  7541. --------m-675857-----------------------------
  7542. INT 67 U - NETROOM??? - ???
  7543.     AX = 5857h
  7544.     BX = function??? (0057h,0059h,0159h seen)
  7545.     ???
  7546. Return: ???
  7547. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  7548.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  7549.       AX=580xh or AX=5857h/BX=0x59h should be used
  7550. SeeAlso: AX=5BF0h
  7551. --------m-6759-------------------------------
  7552. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  7553.     AH = 59h
  7554.     AL = subfunction
  7555.         00h get hardware configuration array
  7556.         ES:DI -> buffer to be filled with array (see #2096)
  7557.         01h get unallocated raw page count
  7558.         Return: BX = unallocated raw pages
  7559.             DX = total raw pages
  7560. Return: AH = status (see also AH=58h"EMS 4.0")
  7561.         A4h access denied by operating system
  7562. Note:    subfunction 00h is for use by operating systems only, and can be
  7563.       enabled or disabled at any time by the operating system
  7564.  
  7565. Format of EMS hardware configuration array:
  7566. Offset    Size    Description    (Table 2096)
  7567.  00h    WORD    size of raw EMM pages in paragraphs
  7568.  02h    WORD    number of alternate register sets
  7569.  04h    WORD    size of mapping-context save area in bytes
  7570.  06h    WORD    number of register sets assignable to DMA
  7571.  08h    WORD    DMA operation type
  7572.         0000h DMA with alternate register sets
  7573.         0001h only one DMA register set
  7574. --------m-675A-------------------------------
  7575. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  7576.     AH = 5Ah
  7577.     AL = subfunction
  7578.         00h allocate standard pages
  7579.         01h allocate raw pages
  7580.     BX = number of pages to allocate
  7581. Return: DX = handle
  7582.     AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #2089)
  7583. --------m-675B-------------------------------
  7584. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  7585.     AH = 5Bh
  7586.     AL = subfunction
  7587.         00h get alternate map register set
  7588.         Return: BL = current active alternate map register set number
  7589.             ES:DI -> map register context save area if BL=00h
  7590.         01h set alternate map register set
  7591.         BL = new alternate map register set number
  7592.         ES:DI -> map register context save area if BL=0
  7593.         02h get alternate map save array size
  7594.         Return: DX = array size in bytes
  7595.         03h allocate alternate map register set
  7596.         Return: BL = number of map register set; 00h = not supported
  7597.         04h deallocate alternate map register set
  7598.         BL = number of alternate map register set
  7599. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #2097)
  7600. Note:    this function is for use by operating systems only, and can be
  7601.       enabled or disabled at any time by the operating system
  7602.  
  7603. (Table 2097)
  7604. Values for EMS function status:
  7605.  00h    successful
  7606.  80h    internal error
  7607.  81h    hardware malfunction
  7608.  84h    undefined function requested
  7609.  8Fh    undefined subfunction
  7610.  9Ah    specified alternate map register or DMA register set not supported
  7611.  9Bh    all alternate map register or DMA register sets currently allocated
  7612.  9Ch    alternate map register or DMA register sets not supported
  7613.  9Dh    undefined or unallocated alternate map register/DMA register set
  7614.  9Eh    dedicated DMA channels not supported
  7615.  9Fh    specified dedicated DMA channel not supported
  7616.  A3h    source array corrupted
  7617.  A4h    operating system denied access
  7618. --------m-675B-------------------------------
  7619. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  7620.     AH = 5Bh
  7621.     AL = subfunction
  7622.         05h allocate DMA register set
  7623.         Return: BL = DMA register set number, 00h if not supported
  7624.         06h enable DMA on alternate map register set
  7625.            BL = DMA register set number
  7626.            DL = DMA channel number
  7627.         07h disable DMA on alternate map register set
  7628.            BL = DMA register set number
  7629.         08h deallocate DMA register set
  7630.            BL = DMA register set number
  7631. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #2097)
  7632. Note:    this function is for use by operating systems only, and can be
  7633.       enabled or disabled at any time by the operating system
  7634. --------m-675BE0-----------------------------
  7635. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  7636.     AX = 5BE0h
  7637.     ES:BX -> memory for which to get linear address
  7638. Return: AH = 00h
  7639.     CX:DX = linear address of physical memory corresponding to ES:BX
  7640. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  7641.       MICEMM is a memory manager for some Micronics motherboards
  7642. Note:    this has been superceded by AX=DE06h, which should be used instead
  7643. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  7644. --------m-675BE1-----------------------------
  7645. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  7646.     AX = 5BE1h
  7647. Return: AH = 00h
  7648.     CX = code and data size in bytes
  7649.     DX:BX = physical address of RM386 code
  7650.     DI:SI = total size of RM386 area including handle tables
  7651.     BP = number of additional pages (high DOS, etc.)
  7652. SeeAlso: AX=5BE0h,AX=5BE2h
  7653. --------m-675BE2-----------------------------
  7654. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  7655.     AX = 5BE2h
  7656. Return: DS:SI -> V86-mode table (see #2098)
  7657.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  7658. SeeAlso: AX=5BE0h,AX=5BE1h
  7659.  
  7660. Format of RM386 V86-mode table:
  7661. Offset    Size    Description    (Table 2098)
  7662.  00h    DWORD    original INT 13 vector
  7663.  04h    DWORD    original INT 15 vector
  7664.  08h    DWORD    original INT 19 vector
  7665.  0Ch    DWORD    original INT 21 vector
  7666.  10h    DWORD    original INT 4B vector
  7667.  14h    DWORD    original INT 67 vector
  7668. --------m-675BF0-----------------------------
  7669. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  7670.     AX = 5BF0h
  7671. Return: AH = 00h if MICEMM or RM386 present
  7672.         BX = code segment of driver
  7673. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  7674.       manager included in Helix Software's Netroom
  7675. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  7676. --------m-675BF1-----------------------------
  7677. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  7678.     AX = 5BF1h
  7679.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  7680. Return: AH = 00h
  7681.     ES:BX buffer filled (see #2099)
  7682. Note:    each byte in the buffer specifies the type of a 4K page of memory
  7683. SeeAlso: AX=5BE0h,AX=5BF0h
  7684.  
  7685. (Table 2099)
  7686. Values for MICEMM/RM386 memory type:
  7687.  00h    unused (MICEMM), RAM/available (RM386)
  7688.  02h    DOS extension (XMS UMB)
  7689.  04h    shadowed ROM
  7690.  08h    mappable EMS
  7691.  10h    page frame
  7692.  20h    ROM
  7693.  40h    reserved (video memory, etc)
  7694.  80h    RAM (MICEMM), Windows UMB (RM386)
  7695. --------m-675BF2-----------------------------
  7696. INT 67 - RM386 - GET RM386 INTERNAL DATA
  7697.     AX = 5BF2h
  7698.     CX = size of buffer
  7699.     DS:SI -> buffer for internal data
  7700.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  7701. Return: buffer filled
  7702. Note:    the data returned by this function is release-specific
  7703. SeeAlso: AX=5BF0h
  7704. --------m-675BF3-----------------------------
  7705. INT 67 - RM386 - RETURN TO REAL MODE
  7706.     AX = 5BF3h
  7707. Return: nothing
  7708. Note:    use AX=5DE0h instead of this functin
  7709. SeeAlso: AX=5BF0h,AX=5DE0h
  7710. --------m-675BF4-----------------------------
  7711. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  7712.     AX = 5BF4h
  7713. Return: AH = 00h
  7714.     BX = global flags 1 (see #2100)
  7715.     CX = global flags 2 (see #2101)
  7716.     DX = global flags 3 (see #2102)
  7717.     SI = global flags 4 (see #2103)
  7718. SeeAlso: AX=5BF0h
  7719.  
  7720. Bitfields for RM386 global flags 1:
  7721. Bit(s)    Description    (Table 2100)
  7722.  0-3    reserved
  7723.  4    V86 mode
  7724.  5    reserved
  7725.  6    80386 or higher CPU
  7726.  7,8    reserved
  7727.  9    A20 enabled at startup
  7728.  10    "HIGH_IO"
  7729.  11    ROM
  7730.  12    large frame
  7731.  13,14    reserved
  7732.  15    PS/2-style A20 control
  7733.  
  7734. Bitfields for RM386 global flags 2:
  7735. Bit(s)    Description    (Table 2101)
  7736.  0    HMA in use
  7737.  1    XMS present
  7738.  2    using XMS driver memory
  7739.  3    HIGH (NEAT only)
  7740.  4-7    reserved
  7741.  8    NOBKTRAP
  7742.  9    NORESET
  7743.  10    ALTMAP
  7744.  11    NOFRAME
  7745.  12-15    reserved
  7746.  
  7747. Bitfields for RM386 global flags 3:
  7748. Bit(s)    Description    (Table 2102)
  7749.  0    NOTEST
  7750.  1    NOEBDA
  7751.  2    Windows3 support
  7752.  3    system board mouse
  7753.  4    DISKBUF
  7754.  5    EBDALOW
  7755.  6    A20 global enable flag
  7756.  7    A20 flag
  7757.  8    EBDA moved to stub
  7758.  9    VXD file was found
  7759.  10    reserved
  7760.  11    NOBOOTMAP
  7761.  12    AUTO
  7762.  13    PS/2 machine
  7763.  14    Compaq ROM merge active
  7764.  15    NOHMA set
  7765.  
  7766. Bitfields for RM386 global flags 4:
  7767. Bit(s)    Description    (Table 2103)
  7768.  0    "NOV8259" don't virtualize interrupt controller
  7769.  1    NOSCSI
  7770.  2    NOSCAN
  7771.  3    NOTR
  7772.  4    ALTBOOT
  7773.  5    NOCOMPQ
  7774.  6    KB2TRAP
  7775.  7    DESHADOW
  7776.  8    Video 7 VGA detected
  7777.  9    reserved
  7778.  10    NOVGA
  7779.  11    NOPS2
  7780.  12    DEBUG
  7781.  13    NOVKB
  7782.  14,15    reserved
  7783. --------m-675BF5-----------------------------
  7784. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  7785.     AX = 5BF5h
  7786. Return: AH = status
  7787.         00h successful
  7788.         BX = current number of allocated EMS handles
  7789.         84h function not available
  7790. SeeAlso: AX=5BF0h
  7791. --------m-675C-------------------------------
  7792. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  7793.     AH = 5Ch
  7794. Return: AH = status (see #2104)
  7795.  
  7796. (Table 2104)
  7797. Values for EMS function status:
  7798.  00h    successful
  7799.  80h    internal error
  7800.  81h    hardware malfunction
  7801.  84h    undefined function requested
  7802. --------m-675D-------------------------------
  7803. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  7804.     AH = 5Dh
  7805.     AL = subfunction
  7806.         00h enable OS Function Set
  7807.         01h disable OS Function Set
  7808.         02h return access key (resets memory manager, returns access key at
  7809.         next invocation)
  7810.     BX,CX = access key returned by first invocation
  7811. Return: BX,CX = access key, returned only on first invocation of function
  7812.     AH = status (see also AH=5Ch)
  7813.         8Fh undefined subfunction
  7814.         A4h operating system denied access
  7815. --------m-675D03-----------------------------
  7816. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  7817.     AX = 5D03h
  7818.     ???
  7819. Return: ???
  7820. Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
  7821.       for use with the MultiDOS Plus multitasker
  7822. SeeAlso: AX=5D04h,AX=5E00h
  7823. --------m-675D04-----------------------------
  7824. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  7825.     AX = 5D04h
  7826.     BX = alternate register set number
  7827.     ES:DI -> 1024-byte buffer for map structure
  7828. Return: AH = status (see #2089)
  7829.     buffer filled if AH=00h
  7830. Note:    used for debugging purposes
  7831. SeeAlso: AX=5D05h
  7832. --------m-675D05-----------------------------
  7833. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  7834.     AX = 5D05h
  7835.     BX = handle number
  7836.     ES:DI -> 1024-byte buffer for handle table
  7837. Return: AH = status (see #2089)
  7838.     buffer filled if AH=00h
  7839. Note:    used for debugging purposes
  7840. SeeAlso: AX=5D04h
  7841. --------m-675DE0-----------------------------
  7842. INT 67 - RM386 - DISABLE RM386
  7843.     AX = 5DE0h
  7844. Note:    RM386 traps this function on the initial transition to protected
  7845.       mode caused by the INT instruction, which means it can not be
  7846.       overridden simply by hooking the interrupt
  7847. SeeAlso: AX=5DE1h
  7848. --------m-675DE1-----------------------------
  7849. INT 67 - RM386 - ENABLE RM386
  7850.     AX = 5DE1h
  7851. Note:    RM386 traps this function on the initial transition to protected
  7852.       mode caused by the INT instruction, which means it can not be
  7853.       overridden simply by hooking the interrupt
  7854. SeeAlso: AX=5DE0h
  7855. --------m-675DE2-----------------------------
  7856. INT 67 - RM386 - GET PAGE TABLE
  7857.     AX = 5DE2h
  7858.     ES:DI -> 1088-byte buffer for page table
  7859. Return: ES:DI buffer filled
  7860. Note:    RM386 traps this function on the initial transition to protected
  7861.       mode caused by the INT instruction, which means it can not be
  7862.       overridden simply by hooking the interrupt
  7863. SeeAlso: AX=5DE3h
  7864. --------m-675DE3-----------------------------
  7865. INT 67 - RM386 - SET PAGE TABLE
  7866.     AX = 5DE3h
  7867.     ES:DI -> 1088-byte buffer containing page table
  7868. Notes:    only the access bits of the page table are used, the remainder is
  7869.       ignored
  7870.     RM386 traps this function on the initial transition to protected
  7871.       mode caused by the INT instruction, which means it can not be
  7872.       overridden simply by hooking the interrupt
  7873. SeeAlso: AX=5DE2h
  7874. --------m-675DE4-----------------------------
  7875. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  7876.     AX = 5DE4h
  7877.     BL = page number
  7878.     BH = access (00h read-only, 01h read-write)
  7879. Note:    RM386 traps this function on the initial transition to protected
  7880.       mode caused by the INT instruction, which means it can not be
  7881.       overridden simply by hooking the interrupt
  7882. --------m-675DE5-----------------------------
  7883. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  7884.     AX = 5DE5h
  7885.     EBX = physical page number
  7886.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  7887. Return: AH = status
  7888.         00h successful
  7889.         8Bh invalid destination page (not in first megabyte)
  7890. Note:    RM386 traps this function on the initial transition to protected
  7891.       mode caused by the INT instruction, which means it can not be
  7892.       overridden simply by hooking the interrupt
  7893. SeeAlso: AX=5DE6h
  7894. --------m-675DE6-----------------------------
  7895. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  7896.     AX = 5DE6h
  7897.     BX = logical page number in 4K pages from beginning of memory for EMS
  7898.           handle
  7899.     CX = segment in first megabyte to be remapped
  7900.     DX = previously-allocated EMS handle
  7901. Return: AH = status
  7902.         00h successful
  7903.         83h invalid handle
  7904.         8Ah invalid logical page (out of handle's range)
  7905.         8Bh invalid destination page (not in first megabyte)
  7906. Note:    RM386 traps this function on the initial transition to protected
  7907.       mode caused by the INT instruction, which means it can not be
  7908.       overridden simply by hooking the interrupt
  7909. SeeAlso: AX=5DE5h
  7910. --------m-675DE7-----------------------------
  7911. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  7912.     AX = 5DE7h
  7913.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  7914.     CX = number of pages to set
  7915.     DX = first page number to set (in first megabyte)
  7916. Return: AH = status
  7917.         00h successful
  7918.         8Bh invalid destination page (not in first megabyte)
  7919.         A5h invalid page bits
  7920.         A6h invalid page count (overflows first megabyte)
  7921. Note:    RM386 traps this function on the initial transition to protected
  7922.       mode caused by the INT instruction, which means it can not be
  7923.       overridden simply by hooking the interrupt
  7924. --------m-675DE8-----------------------------
  7925. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  7926.     AX = 5DE8h
  7927.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  7928.     CX = number of page table entries to get
  7929.     ES:DI -> buffer for DWORD page table entries
  7930. Return: AH = status (00h successful, 8Bh invalid page)
  7931. Note:    RM386 traps this function on the initial transition to protected
  7932.       mode caused by the INT instruction, which means it can not be
  7933.       overridden simply by hooking the interrupt
  7934. SeeAlso: AX=5DE9h
  7935. --------m-675DE9-----------------------------
  7936. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  7937.     AX = 5DE9h
  7938.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  7939.     CX = number of page table entries to get
  7940.     DS:SI -> buffer of DWORD page table entries
  7941. Return: AH = status (00h successful, 8Bh invalid destination page)
  7942. Note:    RM386 traps this function on the initial transition to protected
  7943.       mode caused by the INT instruction, which means it can not be
  7944.       overridden simply by hooking the interrupt
  7945. SeeAlso: AX=5DE8h
  7946. --------m-675DEA-----------------------------
  7947. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  7948.     AX = 5DEAh
  7949.     BX = function
  7950.         00h globally disable V86-mode trapping
  7951.         01h globally enable V86-mode trapping
  7952.         CL = interrupt to use for trapping
  7953.         02h get I/O trapping state
  7954. Return: AH = status
  7955.         00h successful
  7956.         BX = current trapping state (function 02h)
  7957.             0000h disabled, 0001h enabled
  7958.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  7959. Notes:    RM386 traps this function on the initial transition to protected
  7960.       mode caused by the INT instruction, which means it can not be
  7961.       overridden simply by hooking the interrupt
  7962.     when I/O trapping is enabled and I/O port access occurs, RM386
  7963.       simulates an INT instruction for the specified interrupt; the
  7964.       interrupt handler is responsible for decoding the trapped instruction
  7965.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  7966.       similar but more-easily used interface.
  7967. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  7968. --------m-675DEB-----------------------------
  7969. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  7970.     AX = 5DEBh
  7971.     BX = function
  7972.         00h disable V86-mode trapping for specified port
  7973.         01h enable V86-mode trapping for specified port
  7974.         02h get V86-mode trapping state for specified port
  7975.     DX = port for which to enable/disable/query trapping
  7976. Return: AH = status
  7977.         00h successful
  7978.         BX = current trapping state (00h off, 01h on) (function 02)
  7979.         A7h invalid port ID
  7980.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  7981. Notes:    RM386 traps this function on the initial transition to protected
  7982.       mode caused by the INT instruction, which means it can not be
  7983.       overridden simply by hooking the interrupt
  7984. SeeAlso: AX=5DEAh
  7985. --------m-675DFD-----------------------------
  7986. INT 67 U - RM386 v6.00 - ???
  7987.     AX = 5DFDh
  7988.     ???
  7989. Return: ???
  7990. Note:    RM386 traps this function on the initial transition to protected
  7991.       mode caused by the INT instruction, which means it can not be
  7992.       overridden simply by hooking the interrupt
  7993. SeeAlso: AX=5DFEh
  7994. --------m-675DFE-----------------------------
  7995. INT 67 U - RM386 v6.00 - ???
  7996.     AX = 5DFEh
  7997.     ???
  7998. Return: ???
  7999. Note:    RM386 traps this function on the initial transition to protected
  8000.       mode caused by the INT instruction, which means it can not be
  8001.       overridden simply by hooking the interrupt
  8002. SeeAlso: AX=5DFDh
  8003. --------m-675DFF-----------------------------
  8004. INT 67 U - RM386 v6.00 - ???
  8005.     AX = 5DFFh
  8006.     ???
  8007. Return: ???
  8008. Note:    RM386 traps this function on the initial transition to protected
  8009.       mode caused by the INT instruction, which means it can not be
  8010.       overridden simply by hooking the interrupt
  8011. SeeAlso: AX=5DFDh,AX=5DFEh
  8012. --------m-675E00-----------------------------
  8013. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  8014.     AX = 5E00h
  8015.     DH = breakpoint number (0-3)
  8016.     DL = breakpoint attributes (used to set DR7)
  8017.     CX:BX = linear address of breakpoint
  8018. SeeAlso: AX=5D03h,AX=5E01h
  8019. --------m-675E01-----------------------------
  8020. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  8021.     AX = 5E01h
  8022.     BL = register number (0-3,7)
  8023. Return: CX:BX = value of specified DRx register
  8024. SeeAlso: AX=5E00h
  8025. --------m-675E02-----------------------------
  8026. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  8027.     AX = 5E02h
  8028.     CX:BX -> exception handler
  8029. Note:    the specified exception handler is called with a simulated interrupt
  8030.       whenever a debug exception occurs which was caused by a hardware
  8031.       breakpoint set with the debug registers
  8032. SeeAlso: AX=5E04h,AX=5E05h
  8033. --------m-675E03-----------------------------
  8034. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  8035.     AX = 5E03h
  8036.     BL = register map set number
  8037.     BH = new state (00h read-only, else read-write)
  8038.     CX = linear page number (linear address SHR 12)
  8039. Note:    setting write protection in map set 0 will cause the setting to become
  8040.       the default for newly-allocated map sets
  8041. --------m-675E04-----------------------------
  8042. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  8043.     AX = 5E04h
  8044. Return: BL = debug exception (low byte of DR6 register)
  8045. SeeAlso: AX=5E02h,AX=5E05h
  8046. --------m-675E05-----------------------------
  8047. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  8048.     AX = 5E05h
  8049. Note:    may be required when using AX=5E02h for handling instruction
  8050.       breakpoints
  8051. SeeAlso: AX=5E02h,AX=5E04h
  8052. --------m-6760-------------------------------
  8053. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  8054.     AH = 60h
  8055.     ES:DI -> buffer
  8056. Return: AH = status (see also AH=40h)
  8057.     AL = number of entries
  8058.     buffer at ES:DI filled
  8059. --------m-6761-------------------------------
  8060. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  8061.     AH = 61h
  8062.     ???
  8063. Return: ???
  8064. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  8065.       ensuring that the cache accurately reflects what the processor would
  8066.       see without the cache.
  8067. --------m-6768-------------------------------
  8068. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  8069.     AH = 68h
  8070.     ES:DI -> buffer
  8071. Return: AH = status (see also AH=40h)
  8072.     AL = number of entries
  8073.     buffer at ES:DI filled
  8074. Note:    equivalent to LIM 4.0 function 58h
  8075. --------m-6769-------------------------------
  8076. INT 67 - EEMS - MAP PAGE INTO FRAME
  8077.     AH = 69h
  8078.     AL = frame number
  8079.     BX = page number
  8080.     DX = handle
  8081. Return: AH = status (see also AH=40h)
  8082. Note:    similar to EMS function 44h
  8083. SeeAlso: AH=44h,AH=50h,AH=6Ah
  8084. --------m-676A-------------------------------
  8085. INT 67 - EEMS - PAGE MAPPING
  8086.     AH = 6Ah
  8087.     AL = subfunction
  8088.         00h save partial page map
  8089.         CH = first page frame
  8090.         CL = number of frames
  8091.         ES:DI -> buffer which is to be filled
  8092.         01h restore partial page map
  8093.         CH = first page frame
  8094.         CL = number of frames
  8095.         DI:SI -> previously saved page map
  8096.         02h save and restore partial page map
  8097.         CH = first page frame
  8098.         CL = number of frames
  8099.         ES:DI = buffer for current page map
  8100.         DI:SI = new page map
  8101.         03h get size of save array
  8102.         CH = first page frame
  8103.         CL = number of frames
  8104.         Return: AL = size of array in bytes
  8105.         04h switch to standard map register setting
  8106.         05h switch to alternate map register setting
  8107.         06h deallocate pages mapped to frames in conventional memory
  8108.         CH = first page frame
  8109.         CL = number of frames
  8110. Return: AH = status (see #2089)
  8111. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  8112.       specified
  8113. SeeAlso: AH=69h
  8114. --------m-676B-------------------------------
  8115. INT 67 - DESQview 2.42-2.53 - BUG
  8116.     AH = 6Bh
  8117. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  8118.       function due to a fencepost error
  8119. --------m-67DD-------------------------------
  8120. INT 67 - Quadtel QMAPS - API
  8121.     AH = DDh
  8122.     AL = function
  8123.     ???
  8124. Return: ???
  8125. Notes:    details are not yet available
  8126.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  8127.       supports this API
  8128. SeeAlso: AH=3Fh,AX=FFA5h
  8129. --------E-67DE00-----------------------------
  8130. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  8131.     AX = DE00h
  8132. Return: AH = status
  8133.         00h VCPI is present
  8134.         BH = major version number
  8135.         BL = minor version number
  8136.         nonzero  VCPI not present
  8137. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  8138. SeeAlso: INT 2F/AX=1687h
  8139. --------E-67DE01-----------------------------
  8140. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  8141.     AX = DE01h
  8142.     ES:DI -> 4K page table buffer
  8143.     DS:SI -> three descriptor table entries in GDT
  8144.         first becomes code segment descriptor, other two for use by
  8145.           main control program
  8146. Return: AH = 00h successful
  8147.         DI -> first unused page table entry in buffer
  8148.         EBX -> protected mode entry point in code segment
  8149.     AH = nonzero  failed
  8150. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  8151.       AX=DE0Ch (in each case, all other registers as appropriate for
  8152.       the function)
  8153. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  8154.  
  8155. (Table 2105)
  8156. Call QEMM v6.03 protected mode entry point additionally with:
  8157.     AX = DF00h ???
  8158.         ???
  8159.         Return: ???
  8160.     AX = DF01h ???
  8161.         ???
  8162.         Return: ???
  8163. --------E-67DE02-----------------------------
  8164. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  8165.     AX = DE02h
  8166. Return: AH = 00h  successful
  8167.         EDX = physical address of highest 4K memory page
  8168.     AH nonzero: failed
  8169. SeeAlso: AH=3Fh
  8170. --------E-67DE03-----------------------------
  8171. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  8172.     AX = DE03h
  8173. Return: AH = 00h  successful
  8174.         EDX = number of free 4K pages
  8175.     AH nonzero: failed
  8176. Notes:    returns total number of pages available to ALL tasks in system
  8177.     also available in protected mode by calling the protected-mode VCPI
  8178.       entry point (see AX=DE01h,#2105)
  8179. SeeAlso: AX=DE04h
  8180. --------E-67DE04-----------------------------
  8181. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  8182.     AX = DE04h
  8183. Return: AH = 00h successful
  8184.         EDX = physical address of allocated page
  8185.     AH nonzero: failed
  8186. Notes:    the client program is responsible for freeing all memory allocated
  8187.       with this call before terminating
  8188.     also available in protected mode by calling the protected-mode VCPI
  8189.       entry point (see AX=DE01h,#2105)
  8190. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  8191. --------E-67DE05-----------------------------
  8192. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  8193.     AX = DE05h
  8194.     EDX = physical address of 4K page
  8195. Return: AH = status
  8196.         00h successful
  8197.         nonzero failed
  8198. Note:    also available in protected mode by calling the protected-mode VCPI
  8199.       entry point (see AX=DE01h,#2105)
  8200. SeeAlso: AH=3Fh,AX=DE04h
  8201. --------E-67DE06-----------------------------
  8202. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  8203.     AX = DE06h
  8204.     CX = page number (linear address shifted right 12 bits)
  8205. Return: AH = status
  8206.         00h successful
  8207.         EDX = physical address of page
  8208.         nonzero invalid page number (AH = 8Bh recommended)
  8209. SeeAlso: AX=5BE0h
  8210. --------E-67DE07-----------------------------
  8211. INT 67 - Virtual Control Program Interface - READ CR0
  8212.     AX = DE07h
  8213. Return: AH = 00h
  8214.     EBX = value of Control Register 0
  8215. SeeAlso: AH=3Fh,AX=DE07h
  8216. --------E-67DE08-----------------------------
  8217. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  8218.     AX = DE08h
  8219.     ES:DI -> array of 8 DWORDs
  8220. Return: AH = 00h
  8221.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  8222. SeeAlso: AH=3Fh,AX=DE09h
  8223. --------E-67DE09-----------------------------
  8224. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  8225.     AX = DE09h
  8226.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  8227. Return: AH = 00h
  8228. Note:    values for DR4 and DR5 ignored
  8229. SeeAlso: AH=3Fh,AX=DE08h
  8230. --------E-67DE0A-----------------------------
  8231. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  8232.     AX = DE0Ah
  8233. Return: AH = 00h successful
  8234.         BX = first vector used by master 8259 (IRQ0)
  8235.         CX = first vector used by slave 8259 (IRQ8)
  8236.     AH nonzero: failed
  8237. Note:    CX is undefined in systems without a slave 8259
  8238. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  8239. --------E-67DE0B-----------------------------
  8240. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  8241.     AX = DE0Bh
  8242.     BX = first vector used by master 8259
  8243.     CX = first vector used by slave 8259
  8244.     interrupts disabled
  8245. Return: AH = 00h successful
  8246.     AH nonzero: failed
  8247. Notes:    This call merely informs the server that the client has changed the
  8248.       interrupt mappings.  The client may not change the mappings if they
  8249.       have already been changed by the server or another client, and is
  8250.       responsible for restoring the original mappings before terminating.
  8251. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  8252. --------E-67DE0C-----------------------------
  8253. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  8254.     AX = DE0Ch
  8255.     ESI = linear address in first megabyte of values for system registers
  8256.     interrupts disabled
  8257. Return: interrupts disabled
  8258.     GDTR, IDTR, LDTR, TR loaded
  8259.     SS:ESP must have at least 16 bytes space, and the entry point is
  8260.           required to set up a new stack before enabling interrupts
  8261.     EAX, ESI, DS, ES, FS, GS destroyed
  8262. Note:    in protected mode, calling the protected-mode VCPI entry point with
  8263.       AX = DE0Ch
  8264.       DS = segment selector mapping entire linear address space obtained
  8265.           via AX=DE01h
  8266.       SS:ESP in first megabyte of linear memory
  8267.       STACK:QWORD  return address from FAR call to 32-bit segment
  8268.         DWORD  EIP
  8269.         DWORD  CS
  8270.         DWORD  reserved for EFLAGS
  8271.         DWORD  ESP
  8272.         DWORD  SS
  8273.         DWORD  ES
  8274.         DWORD  DS
  8275.         DWORD  FS
  8276.         DWORD  GS
  8277.       and interrupts disabled, will switch to virtual86 mode with
  8278.         interrupts disabled, all segment registers loaded, and EAX
  8279.         destroyed.
  8280. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  8281.  
  8282. Format of system register values for switch to protected mode:
  8283. Offset    Size    Description    (Table 2106)
  8284.  00h    DWORD    value for CR3
  8285.  04h    DWORD    linear address in first megabyte of value for GDTR
  8286.  08h    DWORD    linear address in first megabyte of value for IDTR
  8287.  0Ch    WORD    value for LDTR
  8288.  0Eh    WORD    value for TR
  8289.  10h    PWORD    CS:EIP of protected mode entry-point
  8290. --------m-67DE0F-----------------------------
  8291. INT 67 - Netroom3 - ???
  8292.     AX = DE0Fh
  8293.     ???
  8294. Return: ???
  8295. Note:    called by Netroom's DPMI.EXE
  8296. --------m-67EF-------------------------------
  8297. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  8298.     AH = EFh
  8299.     AL = function (00h-12h,80h-8Fh)
  8300.     other register as appropriate for XMS function
  8301. Return: varies by function (see INT 2F/AX=4310h)
  8302. Note:    these functions appear to be equivalent to the XMS functions with the
  8303.       same numbers
  8304. SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h
  8305. --------m-67FFA5-----------------------------
  8306. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  8307.     AX = FFA5h
  8308. Return: AX = 845Ah/84A5h if loaded
  8309.         BX:CX -> API entry point
  8310. Notes:    this call is available even if EMM386 is not providing EMS
  8311.     the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
  8312.     if no other program has hooked INT 67, an alternate installation
  8313.       check is to test for the string
  8314.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  8315.       handler's segment; the word immediately preceding this string
  8316.       contains the offset of the API entry point
  8317. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  8318.  
  8319. (Table 2107)
  8320. Call EMM386.EXE API entry point with:
  8321.     AH = 00h get memory manager's status
  8322.         Return: AH = status
  8323.             bit 0: not active (OFF)
  8324.             bit 1: in "Auto" mode
  8325.     AH = 01h set memory manager's state
  8326.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  8327.     AH = 02h Weitek coprocessor support
  8328.         AL = subfunction
  8329.         00h get Weitek support state
  8330.             Return: AL = status
  8331.                 bit 0: Weitek coprocessor is present
  8332.                 bit 1: Weitek support is enabled
  8333.         01h turn on Weitek support
  8334.         02h turn off Weitek support
  8335.      --- v4.20-4.41 only ---
  8336.     AH = 03h Windows support???
  8337.         AL = subfunction (00h, 01h)
  8338.     AH = 04h print copyright notice to standard output
  8339.          (using INT 21/AH=09h)
  8340.     AH = 05h print available report
  8341.          (the one shown when running EMM386 from the DOS prompt)
  8342. SeeAlso: #0660 at INT 21/AX=4402h/SF=02h,#1309 at INT 2F/AX=12FFh/BX=0106h
  8343. --------m-67FFA5BX4345-----------------------
  8344. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  8345.     AX = FFA5h
  8346.     BX = 4345h ("CE")
  8347.     DX = subfunction
  8348.         0000h unshadow video ROM???
  8349.         0001h shadow video ROM???
  8350.         0002h map pages
  8351.         CX = number of pages (00h=one)
  8352.         ESI = linear address of first page to map into address space
  8353.         EDI = linear starting address at which pages are to be visible
  8354.         0003h get ???
  8355.         Return: DX = ??? (0-2)
  8356.         0004h BUG: crashes system due to fencepost error
  8357. Return: AH = 84h
  8358.     AL = status (84h = error, FFh = success)
  8359. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  8360.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  8361. SeeAlso: AX=FFA5h"EMM386",#0660 at INT 21/AX=4402h/SF=02h,#2107
  8362. --------!---Section--------------------------
  8363.