home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_GEN / INTER40A.ZIP / INTERRUP.B < prev    next >
Text File  |  1994-04-03  |  293KB  |  7,752 lines

  1. Interrupt List, part 2 of 11
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------S-14---------------------------------
  4. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  5. Note:    the installation check for this driver is to determine whether the
  6.       "~DOSXAM~" character device exists
  7. Index:    installation check;Digiboard DigiCHANNEL
  8. --------S-1400-------------------------------
  9. INT 14 - SERIAL - INITIALIZE PORT
  10.     AH = 00h
  11.     AL = port parameters (see below)
  12.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  13. Return: AH = line status (see AH=03h)
  14.         FFh if error on Digiboard XAPCM232.SYS
  15.     AL = modem status (see AH=03h)
  16. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  17.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  18.       bps will result in 4800 bps
  19.     various network and serial-port drivers support the standard BIOS
  20.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  21.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  22. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  23. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  24.  
  25. Bitfields for port parameters:
  26. Bit(s)    Description
  27.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  28.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  29.  2    stop bits (set = 2, clear = 1)
  30.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  31. --------S-1400-------------------------------
  32. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  33.     AH = 00h
  34.     AL = initializing parameters
  35.         7 - 6 - 5       4 - 3     2      1 - 0
  36.         -BAUD RATE-       PARITY   STOP   WORD
  37.                     BITS  LENGTH
  38.         000 19200 bd   00 none  0: 1  00: 5
  39.         001 38400 bd   01 odd   1: 2  01: 6
  40.         010      300 bd   11 even      10: 7
  41.         011      600 bd          11: 8
  42.         100     1200 bd
  43.         101     2400 bd
  44.         110     4800 bd
  45.         111     9600 bd (4800 on PCjr)
  46.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  47. Return: AH = RS-232 status code bits (see below)
  48.     AL = modem status bits
  49.         bit 3: always 1
  50.         bit 7: DCD - carrier detect
  51. SeeAlso: AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  52.  
  53. Bitfields for RS-232 status:
  54. Bit(s)    Description
  55.  0    RDA - input data is available in buffer
  56.  1    OVRN - data has been lost
  57.  5    THRE - room is available in output buffer
  58.  6    TSRE - output buffer empty
  59. --------S-1400-------------------------------
  60. INT 14 - MBBIOS - INITIALIZE PORT
  61.     AH = 00h
  62.     AL = port parameters (see below)
  63.     DX = port number
  64. Return: AH = line status (see AH=03h)
  65.     AL = modem status (see AH=03h)
  66. Note:    MBBIOS was written by H. Roy Engehausen
  67. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  68.  
  69. Bitfields for port parameters:
  70. Bit(s)    Description
  71.  7-5    data rate
  72.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  73.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  74.     if the high-speed option is set)
  75.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  76.  2    stop bits (set = 2, clear = 1)
  77.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  78. --------N-1400--DXFFFF-----------------------
  79. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  80.     AH = 00h
  81.     DX = FFFFh
  82.     ES:DI -> vector string specifying new parameters
  83. Return: AH = return code (00h,03h) (see below)
  84. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  85.       serial ports over an IPX or NetBIOS-based network
  86. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  87.       function, but redirects the port over the network; if DX is any other
  88.       value, the call is chained
  89. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  90.  
  91. Values for return code:
  92.  00h    successful
  93.  01h    no such connection
  94.  02h    invalid connection ID
  95.  03h    invalid subvector found
  96.  04h    communication error (check BH)
  97.  06h    insufficient resources, retry later
  98.  FFh    no data available
  99. --------S-1401-------------------------------
  100. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  101.     AH = 01h
  102.     AL = character to write
  103.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  104. Return: AH bit 7 clear if successful
  105.     AH bit 7 set on error
  106.     AH bits 6-0 = port status (see AH=03h)
  107. Notes:    various network and serial-port drivers support the standard BIOS
  108.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  109.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  110. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  111. --------N-1401--DXFFFF-----------------------
  112. INT 14 - Connection Manager - SEND CHARACTER
  113.     AH = 01h
  114.     DX = FFFFh
  115.     BH = character to send
  116. Return: AH = return code (00h-02h,06h) (see AH=00h/DX=FFFFh)
  117. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  118.       function, but redirects the port over the network; if DX is any other
  119.       value, the call is chained
  120.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  121.       is the preferred function because it provides better performance
  122. SeeAlso: AH=02h/DX=FFFFh,AX=06h/DX=FFFFh,AH=09h/DX=FFFFh
  123. --------S-1402-------------------------------
  124. INT 14 - SERIAL - READ CHARACTER FROM PORT
  125.     AH = 02h
  126.     AL = 00h (ArtiCom)
  127.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  128. Return: AH = line status (see AH=03h)
  129.     AL = received character if AH bit 7 clear
  130. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  131.       data ready
  132.     various network and serial-port drivers support the standard BIOS
  133.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  134.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  135. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  136. --------S-1402-------------------------------
  137. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  138.     AH = 02h
  139.     DX = port number (0-3)
  140. Return: AL = character received
  141.     AH = 00h
  142. SeeAlso: AH=01h,AH=02h"SERIAL"
  143. --------N-1402--DXFFFF-----------------------
  144. INT 14 - Connection Manager - RECEIVE CHARACTER
  145.     AH = 02h
  146.     DX = FFFFh
  147.     BH = character to send
  148. Return: AH = return code (00h-02h,04h,FFh) (see AH=00h/DX=FFFFh)
  149.     BH = line status (see AH=03h)
  150.     AL = received character (if any)
  151. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  152.       function, but redirects the port over the network; if DX is any other
  153.       value, the call is chained
  154.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  155.       is the preferred function because it provides better performance
  156. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  157. --------S-1403-------------------------------
  158. INT 14 - SERIAL - GET PORT STATUS
  159.     AH = 03h
  160.     AL = 00h (ArtiCom)
  161.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  162. Return: AH = line status (see below)
  163.     AL = modem status (see below)
  164.     AX = 9E00h if disconnected (ArtiCom)
  165. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  166. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  167.  
  168. Bitfields for line status:
  169. Bit(s)    Description
  170.  7    timeout
  171.  6    transmit shift register empty
  172.  5    transmit holding register empty
  173.  4    break detected
  174.  3    framing error
  175.  2    parity error
  176.  1    overrun error
  177.  0    receive data ready
  178.  
  179. Bitfields for modem status:
  180. Bit(s)    Description
  181.  7    carrier detect
  182.  6    ring indicator
  183.  5    data set ready
  184.  4    clear to send
  185.  3    delta carrier detect
  186.  2    trailing edge of ring indicator
  187.  1    delta data set ready
  188.  0    delta clear to send
  189. --------N-1403--DXFFFF-----------------------
  190. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  191.     AH = 03h
  192.     DX = FFFFh
  193.     AL = connection ID
  194. Return: AH = return code (00h-02h) (see AH=00h/DX=FFFFh)
  195.     BH = line status (see below)
  196.     BL = modem status (see AH=03h above) (only bits 4,5,7; all others zero)
  197. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  198.       function, but redirects the port over the network; if DX is any other
  199.       value, the call is chained
  200. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  201.  
  202. Bitfields for line status:
  203. Bit(s)    Description
  204.  7    CTS changed
  205.  6    current CTS state
  206.  5    timeout
  207.  4    break
  208.  3    framing error
  209.  2    parity error
  210.  1    overrun
  211.  0    current carrier state (0 active, 1 no carrier)
  212. --------S-1404-------------------------------
  213. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  214.     AH = 04h
  215.     AL = break status
  216.         00h if break
  217.         01h if no break
  218.     BH = parity (see below)
  219.     BL = number of stop bits
  220.         00h one stop bit
  221.         01h two stop bits (1.5 if 5 bit word length)
  222.     CH = word length (see below)
  223.     CL = bps rate (see below)
  224.     DX = port number
  225. Return: AX = port status code (see AH=00h)
  226. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  227.  
  228. Values for parity:
  229.  00h    no parity
  230.  01h    odd parity
  231.  02h    even parity
  232.  03h    stick parity odd
  233.  04h    stick parity even
  234.  
  235. Values for word length:
  236.  00h    5 bits
  237.  01h    6 bits
  238.  02h    7 bits
  239.  03h    8 bits
  240.  
  241. Values for bps rate:
  242.  00h    110
  243.  01h    150
  244.  02h    300
  245.  03h    600
  246.  04h    1200
  247.  05h    2400
  248.  06h    4800
  249.  07h    9600
  250.  08h    19200
  251. --------S-1404-------------------------------
  252. INT 14 - FOSSIL - INITIALIZE DRIVER
  253.     AH = 04h
  254.     DX = port number
  255.     optionally BX=4F50h
  256.            ES:CX -> byte to be set upon ^C
  257. Return: AX = 1954h (if successful)
  258.     BL = maximum function number supported (excluding 7Eh and above)
  259.     BH = revision of FOSSIL specification supported
  260.     DTR is raised
  261. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  262.       following byte contains the maximum function number supported; this
  263.       can serve as an installation check
  264. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  265. Index:    installation check;FOSSIL
  266. --------S-1404-------------------------------
  267. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  268.     AH = 04h
  269. Return: port initialized; if Hayes-compatible modem, a connection has been
  270.       established
  271. Note:    the port number is stored at offset BEh in the Task Control Block
  272.       (see INT 15/AH=13h"MultiDOS")
  273. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  274. --------S-1404-------------------------------
  275. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  276.     AH = 04h
  277.     AL = initializing parameters
  278.         bits 7-5 unused
  279.         bits 4,3: parity (00 none, 01 odd, 11 even)
  280.         bit 2: stop bits (0 = one, 1 = two)
  281.         bits 1,0: data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  282.     BX = baud rate
  283.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  284. Return: AH = status
  285.         00h successful
  286.         FFh error
  287. SeeAlso: AH=05h"Digiboard"
  288. --------S-1404-------------------------------
  289. INT 14 - MBBIOS - INSTALLATION CHECK
  290.     AH = 04h
  291.     DX = port number
  292. Return: AX = AA55h if installed on specified port
  293. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  294. --------N-1404--DXFFFF-----------------------
  295. INT 14 - Connection Manager - OPEN COMMUNICATION
  296.     AH = 04h
  297.     DX = FFFFh
  298.     ES:DI -> Connection Request protocol vector (see below)
  299. Return: AH = return code
  300.         00h successful
  301.         AL = connection ID
  302.         BH = connection type
  303.             00h direct connection or no dialing
  304.             01h Connection Server dialed phone
  305.         01h no response from Connection Server
  306.         03h invalid request
  307. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  308.       serial ports over an IPX or NetBIOS-based network
  309. Desc:    initiate a connection to the Connection Server listed in the current
  310.       Client parameter set
  311. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  312.       function, but redirects the port over the network; if DX is any other
  313.       value, the call is chained
  314.     all subvectors of the Connection Request vector are optional; if
  315.       missing, default values are provided by the default connection
  316.       parameter set
  317. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  318. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  319.  
  320. Format of protocol command vector:
  321. Offset    Size    Description
  322.  00h    WORD    (big-endian) total length of command (including this word)
  323.  02h    WORD    (big-endian) command code
  324.         EF01h Connection Request
  325.         EF06h Modify Connection Parameters
  326.  04h  N BYTEs    list of subvectors (see below)
  327.         allowable subvector types are 01h-04h,17h,18h for command code
  328.           EF01h; 03h,04h for command code EF06h
  329.  
  330. Values for subvector type code:
  331.  01h    Connection ID
  332.  02h    Destination ID
  333.  03h    Asynchronous line parameters
  334.  04h    Data transfer parameters
  335.  09h    Line speed
  336.  0Ah    Serial coding
  337.  0Bh    Packet size
  338.  0Ch    Timers
  339.  0Dh    Special characters
  340.  0Eh    Target ID
  341.  0Fh    Telephone number
  342.  10h    ASCII destination ID
  343.  11h    Parity
  344.  12h    Bits per character
  345.  13h    Number of stop bits
  346.  14h    Packet timer
  347.  15h    Intercharacter timer
  348.  17h    Flags
  349.  18h    Parameter ranges
  350.  19h    Flow control
  351.  
  352. Format of subvector:
  353. Offset    Size    Description
  354.  00h    BYTE    length of subvector
  355.  01h    BYTE    type code (see above)
  356.  02h N-2 BYTEs    data, which may include subvectors
  357.  
  358. Format of Connection ID subvector:
  359. Offset    Size    Description
  360.  00h    BYTE    03h (length)
  361.  01h    BYTE    01h (subvector "Connection ID")
  362.  02h    BYTE    connection ID
  363.  
  364. Format of Destination ID subvector:
  365. Offset    Size    Description
  366.  00h    BYTE    length
  367.  01h    BYTE    02h (subvector "Destination ID")
  368.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  369.  
  370. Format of Asynchronous line parameters subvector:
  371. Offset    Size    Description
  372.  00h    BYTE    length
  373.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  374.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  375.  
  376. Format of Data transfer parameters subvector:
  377. Offset    Size    Description
  378.  00h    BYTE    length
  379.  01h    BYTE    04h (subvector "Data transfer parameters")
  380.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  381.  
  382. Format of Line speed subvector:
  383. Offset    Size    Description
  384.  00h    BYTE    04h (length)
  385.  01h    BYTE    09h (subvector "Line speed")
  386.  02h    WORD    bit map, highest set bit selects speed
  387.         bit 0: 2400
  388.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  389.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  390.  
  391. Format of Serial coding subvector:
  392. Offset    Size    Description
  393.  00h    BYTE    length
  394.  01h    BYTE    0Ah (subvector "Serial coding")
  395.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  396.  
  397. Format of Packet size subvector:
  398. Offset    Size    Description
  399.  00h    BYTE    04h (length)
  400.  01h    BYTE    0Bh (subvector "Packet size")
  401.  02h    WORD    (big-endian) packet size, 1 to 1024
  402.  
  403. Format of Timers subvector:
  404. Offset    Size    Description
  405.  00h    BYTE    length
  406.  01h    BYTE    0Ch (subvector "Timers")
  407.  02h  8 BYTEs    subvector of type 14h or 15h
  408.  
  409. Format of Special characters subvector:
  410. Offset    Size    Description
  411.  00h    BYTE    length
  412.  01h    BYTE    0Dh (subvector "Special characters")
  413.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  414.  
  415. Format of Target ID:
  416. Offset    Size    Description
  417.  00h    BYTE    length
  418.  01h    BYTE    0Eh (subvector "Target ID")
  419.  02h  N BYTEs    target ID, 1-16 bytes
  420.  
  421. Format of Telephone number subvector:
  422. Offset    Size    Description
  423.  00h    BYTE    length
  424.  01h    BYTE    0Fh (subvector "Telephone number")
  425.  02h  N BYTEs    telephone number
  426.  
  427. Format of ASCII destination ID subvector:
  428. Offset    Size    Description
  429.  00h    BYTE    length
  430.  01h    BYTE    10h (subvector "ASCII destination ID")
  431.  02h  N BYTEs    destination ID
  432.  
  433. Format of Parity subvector:
  434. Offset    Size    Description
  435.  00h    BYTE    03h (length)
  436.  01h    BYTE    11h (subvector "Parity")
  437.  02h    BYTE    parity type (see below)
  438.  
  439. Bitfields for parity type:
  440. Bit(s)    Description
  441.  7    odd
  442.  6    even
  443.  5    mark
  444.  4    space
  445.  3    none
  446.  
  447. Format of Bits per character subvector:
  448. Offset    Size    Description
  449.  00h    BYTE    03h (length)
  450.  01h    BYTE    12h (subvector "Bits per character")
  451.  02h    BYTE    bits per character
  452.         bit 7: seven
  453.         bit 6: eight
  454.  
  455. Format of Number of stop bits subvector:
  456. Offset    Size    Description
  457.  00h    BYTE    03h (length)
  458.  01h    BYTE    13h (subvector "Number of stop bits")
  459.  02h    BYTE    stop bits
  460.         bit 7: one
  461.         bit 6: 1.5
  462.         bit 5: two
  463.  
  464. Format of Packet timer and Intercharacter timer subvectors:
  465. Offset    Size    Description
  466.  00h    BYTE    04h (length)
  467.  01h    BYTE    subvector type
  468.         14h Packet timer
  469.         15h Intercharacter timer
  470.  02h    WORD    (big-endian) unit of value representing 20ms
  471.  
  472. Format of Flags subvector:
  473. Offset    Size    Description
  474.  00h    BYTE    03h (length)
  475.  01h    BYTE    17h (subvector "Flags")
  476.  02h    BYTE    flags
  477.         bit 7: queueing requested
  478.  
  479. Format of Parameter ranges subvector:
  480. Offset    Size    Description
  481.  00h    BYTE    length
  482.  01h    BYTE    18h (subvector "Parameter ranges")
  483.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  484.  
  485. Format of Flow control subvector:
  486. Offset    Size    Description
  487.  00h    BYTE    length (02h-04h)
  488.  01h    BYTE    19h (subvector "Flow control")
  489.  02h    BYTE    XOFF character
  490.  03h    BYTE    XON character
  491. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  492.       character will be accepted as XON after an XOFF
  493. --------S-140400-----------------------------
  494. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  495.     AX = 0400h
  496. Return: AX = 0FF0h
  497. SeeAlso: AX=0401h,AX=0408h
  498. --------S-140401-----------------------------
  499. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  500.     AX = 0401h
  501.     CX = mode
  502. SeeAlso: AX=0400h,AX=0402h
  503. --------S-140402-----------------------------
  504. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  505.     AX = 0402h
  506.     CL = parameters
  507. SeeAlso: AX=0400h,AX=0401h
  508. --------S-140403-----------------------------
  509. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  510.     AX = 0403h
  511.     CX = timeout
  512. SeeAlso: AX=0400h
  513. --------S-140404-----------------------------
  514. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  515.     AX = 0404h
  516. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  517. --------S-140405-----------------------------
  518. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  519.     AX = 0405h
  520. Return: AX = number of characters in buffer
  521. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  522. --------S-140406-----------------------------
  523. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  524.     AX = 0406h
  525. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  526. --------S-140407-----------------------------
  527. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  528.     AX = 0407h
  529. Return: AX = number of characters in the buffer
  530. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  531. --------S-140408-----------------------------
  532. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  533.     AX = 0408h
  534. SeeAlso: AX=0400h
  535. --------S-1405-------------------------------
  536. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  537.     AH = 05h
  538.     AL = function
  539.         00h read modem control register
  540.           Return: BL = modem control register (see below)
  541.               AH = status
  542.         01h write modem control register
  543.           BL = modem control register (see below)
  544.           Return: AX = status
  545.     DX = port number
  546. Note:    also supported by ArtiCom
  547. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  548.  
  549. Bitfields for modem control register:
  550. Bit(s)    Description
  551.  0    data terminal ready
  552.  1    request to send
  553.  2    OUT1
  554.  3    OUT2
  555.  4    LOOP
  556.  5-7    reserved
  557. --------S-1405-------------------------------
  558. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  559.     AH = 05h
  560.     DX = port number
  561. Return: none
  562.     DTR is not affected
  563. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  564. --------S-1405-------------------------------
  565. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  566.     AH = 05h
  567.     AL = timeout in seconds (00h = never)
  568. Return: AL = status
  569.         00h successful
  570.         AH = character read
  571.         01h read error
  572.         02h timed out
  573.         other modem status (CTS, DSR) changed
  574. Note:    the port number is stored at offset BEh in the Task Control Block
  575. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  576. SeeAlso: INT 15/AH=13h"MultiDOS"
  577. --------S-1405-------------------------------
  578. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  579.     AH = 05h
  580.     AL = protocol (see below)
  581.     BH = new XOFF character (00h = current)
  582.     BL = new XON character (00h = current)
  583.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  584. Return: AH = status
  585.         00h successful
  586.         FFh error
  587. SeeAlso: AH=04h"Digiboard"
  588.  
  589. Bitfields for protocol:
  590. Bit(s)    Description
  591.  7-4    unused
  592.  3    RTS/CTS
  593.  2    DSR
  594.  1,0    XON/XOFF
  595. --------S-1405-------------------------------
  596. INT 14 - MBBIOS - DROP DTR AND RTS
  597.     AH = 05h
  598.     DX = port number
  599. Return: none
  600. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  601. --------S-1405-------------------------------
  602. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  603.     AH = 05h
  604.     AL = new port protocol (see below)
  605.     BH = new XOFF character
  606.     BL = new XON character
  607.     DX = port number
  608. Return: AH = FFh if invalid protocol
  609. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  610.  
  611. Bitfields for port protocol:
  612. Bit(s)    Description
  613.  7    set to enable/disable CD monitoring, clear to set protocol
  614. ---bit 7 set---
  615.  4    CD monitoring enabled
  616.  5    automatic restart enabled
  617. ---bit 7 clear---
  618.  0    receive XON/XOFF
  619.  1    transmit XON/XOFF
  620.  2    DTR/DSR
  621.  3    RTS/CTS
  622. --------N-1405--DXFFFF-----------------------
  623. INT 14 - Connection Manager - CLOSE COMMUNICATION
  624.     AH = 05h
  625.     DX = FFFFh
  626.     AL = connection ID
  627. Return: AH = return code
  628.         00h successful
  629.         01h no such connection
  630.         02h invalid connection ID
  631.         AL = correct connection ID
  632. Desc:    terminate existing connection to allow another one to be established
  633. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  634.       function, but redirects the port over the network; if DX is any other
  635.       value, the call is chained
  636. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  637. --------S-1406-------------------------------
  638. INT 14 - FOSSIL - RAISE/LOWER DTR
  639.     AH = 06h
  640.     DX = port
  641.     AL = DTR state to be set
  642.         00h = lower
  643.         01h = raise
  644. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  645. --------S-1406-------------------------------
  646. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  647.     AH = 06h
  648.     AL = character
  649. Return: AL = status
  650.         00h successful
  651. Notes:    the port number is stored at offset BEh in the Task Control Block
  652.     if output queue is full, the calling task is blocked until the
  653.       character can be stored
  654. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  655. SeeAlso: INT 15/AH=13h"MultiDOS"
  656. --------S-1406-------------------------------
  657. INT 14 - MBBIOS - RAISE DTR AND RTS
  658.     AH = 06h
  659.     DX = port number
  660. Return: none
  661. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  662. --------S-1406-------------------------------
  663. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  664.     AH = 06h
  665.     DX = port number
  666. Return: AH bit 7 set
  667.     AL = number of highest function supported by driver
  668. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  669.       operating system by The Software Link, Inc.
  670. SeeAlso: AH=18h"PC-MOS"
  671. --------N-1406-------------------------------
  672. INT 14 - TelAPI - WRITE???
  673.     AH = 06h
  674.     CX = number of characters to write???
  675.     DX = port number
  676.     ES:DI -> buffer containing data???
  677. Return: AX = number of characters actually sent??? (negative on error)
  678.     CX = ???
  679. Note:    under Novell TELAPI.EXE v4.01, this function and AH=07h are implemented
  680.       with identical code
  681. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI"
  682. --------N-1406--DXFFFF-----------------------
  683. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  684.     AH = 06h
  685.     DX = FFFFh
  686.     AL = connection ID
  687.     CX = number of characters to send
  688.     ES:DI -> buffer containing data to be sent
  689. Return: AH = return code (see AH=00h/DX=FFFFh)
  690. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  691.       serial ports over an IPX or NetBIOS-based network
  692. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  693. --------S-1407-------------------------------
  694. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  695.     AH = 07h
  696. Return: AL = timer tick interrupt number
  697.     AH = ticks per second on interrupt number in AL
  698.     DX = approximate number of milliseconds per tick
  699. SeeAlso: AH=16h
  700. --------S-1407-------------------------------
  701. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  702.     AH = 07h
  703. Return: CL = modem status (see AH=03h)
  704.     CH = character at head of input queue (if any)
  705.     DX = number of characters in input queue
  706. Note:    the port number is stored at offset BEh in the Task Control Block
  707. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  708. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  709. --------S-1407-------------------------------
  710. INT 14 - MBBIOS - SEND BREAK
  711.     AH = 07h
  712.     DX = port number
  713. Return: none
  714. SeeAlso: AH=06h"MBBIOS"
  715. --------S-1407-------------------------------
  716. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  717.     AH = 07h
  718.     BX = duration of break in clock ticks
  719.     DX = port number
  720. Return: nothing
  721. --------N-1407-------------------------------
  722. INT 14 - TelAPI - WRITE???
  723.     AH = 07h
  724.     CX = number of characters to write???
  725.     DX = port number
  726.     ES:DI -> buffer containing data???
  727. Return: AX = number of characters actually sent??? (negative on error)
  728.     CX = ???
  729. Note:    under Novell TELAPI.EXE v4.01, this function and AH=06h are implemented
  730.       with identical code
  731. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI"
  732. --------N-1407--DXFFFF-----------------------
  733. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  734.     AH = 07h
  735.     DX = FFFFh
  736.     AL = connection ID
  737.     BL = flag
  738.         00h wait for data
  739.         nonzero do not wait if no data avaiable
  740.     CX = size of receive buffer
  741.     ES:DI -> buffer for received characters
  742. Return: AH = return code (00h-02h,04h,FFh) (see AH=00h/DX=FFFFh)
  743.     BH = line status (see AH=03h/DX=FFFFh)
  744.     CX = number of characters received
  745. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  746.       serial ports over an IPX or NetBIOS-based network
  747. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  748. --------S-1408-------------------------------
  749. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  750.     AH = 08h
  751.     DX = port number
  752. SeeAlso: AH=09h"FOSSIL"
  753. --------S-1408-------------------------------
  754. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  755.     AH = 08h
  756. Return: AL = line status (see AH=03h)
  757.     AH destroyed
  758. Notes:    the port number is stored at offset BEh in the Task Control Block
  759.     on every line status change, the line status is ORed with the line
  760.       status accumulator; this function returns the accumulator and clears
  761.       it
  762. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  763. --------S-1408-------------------------------
  764. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  765.     AH = 08h
  766.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  767. Return: AH = RS232 status bits (see AH=03h)
  768.     ZF set if no characters queued
  769.     ZF clear if character available
  770.         AL = next character
  771. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  772. --------S-1408-------------------------------
  773. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  774.     AH = 08h
  775.     DX = port number
  776. Return: AL = character (if AH bit 0 set)
  777.     AH = status (see AH=03h)
  778. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  779. --------S-1408-------------------------------
  780. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  781.     AH = 08h
  782.     DX = port number
  783. Return: CF set if carrier loss detected
  784.     ZF set if input buffer empty
  785.     ZF clear if characters available
  786.         AL = next character dequeued
  787. --------N-1408--DXFFFF-----------------------
  788. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  789.     AH = 08h
  790.     DX = FFFFh
  791.     CX = size of buffer for parameters or 0000h to get length
  792.     ES:DI -> buffer for parameter vector (see AH=04h/DX=FFFFh)
  793. Return: AH = return code
  794.         00h successful
  795.         CX = number of bytes required (if CX=0000h on entry)
  796.         CX = number of bytes omitted for lack of space (if CX nonzero)
  797.         nonzero invalid request
  798. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  799.       serial ports over an IPX or NetBIOS-based network
  800. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  801. --------S-1409-------------------------------
  802. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  803.     AH = 09h
  804.     DX = port number
  805. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  806. --------S-1409-------------------------------
  807. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  808.     AH = 09h
  809. Return: modem status byte cleared
  810. Note:    the port number is stored at offset BEh in the Task Control Block
  811. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  812. --------S-1409-------------------------------
  813. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  814.     AH = 09h
  815.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  816. Return: AH = status
  817.         00h successful
  818.         FFh error
  819. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  820. --------S-1409-------------------------------
  821. INT 14 - MBBIOS - GET/SET OPTIONS
  822.     AH = 09h
  823.     AL = option byte (see below)
  824.     DX = port number???
  825. Return: AL = old option byte
  826. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  827.  
  828. Bitfields for option byte:
  829. Bit(s)    Description
  830.  0    transmit buffering enabled
  831.  2    hardware handshaking enabled
  832.  5    high-speed option enabled (see AH=00h"MBBIOS")
  833.  other    reserved
  834. --------S-1409-------------------------------
  835. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  836.     AH = 09h
  837.     DX = port number
  838. Return: nothing
  839. SeeAlso: AH=13h"PC-MOS"
  840. --------N-1409--DXFFFF-----------------------
  841. INT 14 - Connection Manager - SEND BREAK
  842.     AH = 09h
  843.     DX = FFFFh
  844.     AL = connection ID
  845. Return: AH = return code (00h-02h) (see AH=00h/DX=FFFFh)
  846. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  847.       serial ports over an IPX or NetBIOS-based network
  848. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  849. --------S-140A-------------------------------
  850. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  851.     AH = 0Ah
  852.     DX = port number
  853. SeeAlso: AH=09h"FOSSIL",AH=85h
  854. --------S-140A-------------------------------
  855. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  856.     AH = 0Ah
  857.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  858. Return: AX = number of characters available in buffer
  859. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  860. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  861. --------S-140A-------------------------------
  862. INT 14 - MBBIOS - WRITE BUFFER
  863.     AH = 0Ah
  864.     CX = count
  865.     ES:DI -> buffer
  866. Return: AX = status (see AH=03h)
  867.     CX = unsent character count
  868.     DI updated
  869. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  870.       contains the segment of a buffer containing the packet to be sent,
  871.       which by default will be freed once the packet has been sent.     Use
  872.       AH=0Ch"MBBIOS" to allocate the buffer.
  873. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  874.  
  875. Format of PACCOM buffer:
  876. Offset    Size    Description
  877.  00h 504 BYTEs    data area
  878. 1F8h    WORD    length of data in data area
  879. 1FAh    BYTE    flags/status
  880.         bit 7: don't discard buffer after transmitting data
  881.         bit 6: buffer has been transmitted
  882. 1FBh    BYTE    reserved (0) for additional flags/status
  883. 1FCh    WORD    user data
  884. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  885. --------N-140A--DXFFFF-----------------------
  886. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  887.     AH = 0Ah
  888.     DX = FFFFh
  889.     ES:DI -> vector string containing new parameters (see AH=04h/DX=FFFFh)
  890. Return: AH = return code (00h-03h,06h) (see AH=00h/DX=FFFFh)
  891. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  892.       serial ports over an IPX or NetBIOS-based network
  893. Note:    any subvectors valid for the Change Parameters command replace the
  894.       existing values in the current set
  895. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  896. --------S-140B-------------------------------
  897. INT 14 - FOSSIL - TRANSMIT NO WAIT
  898.     AH = 0Bh
  899.     AL = character
  900.     DX = port number
  901. Return: AX = 0000h character not accepted
  902.        = 0001h character accepted
  903. SeeAlso: AH=01h
  904. --------S-140B-------------------------------
  905. INT 14 - MBBIOS - READ BUFFER
  906.     AH = 0Bh
  907.     CX = size of buffer
  908.     ES:DI -> buffer
  909. Return: AH = composite line status (see AH=03h) formed by ORing all statuses
  910.           on receive interrupts; bit 0 set if additional characters
  911.           available
  912.     AL = composite modem status (see AH=03h) formed by ORing all statuses
  913.     CX = number of characters actually read
  914.     DI updated
  915. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  916.       instead returning ES set to the segment of the buffer containing a
  917.       received packet, or 0000h if no packets available; the buffer may
  918.       be freed with AH=0Ch"MBBIOS"
  919. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  920. --------N-140B--DXFFFF-----------------------
  921. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  922.     AH = 0Bh
  923.     DX = FFFFh
  924.     AL = service name
  925.         00h use parameter file or default
  926.         01h use specified name
  927.         ES:DI -> 16-byte blank-padded name
  928.     BH = connection notification
  929.         00h program awaiting connection, don't notify user
  930.         01h notify user on connecting
  931.     BL = connection type
  932.         00h connection will use Connection Manager API
  933. Return: AH = return code (00h-02h) (see AH=00h/DX=FFFFh)
  934.     AL = connection ID if AH=00h
  935. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  936.       serial ports over an IPX or NetBIOS-based network
  937. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  938. --------S-140C-------------------------------
  939. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  940.     AH = 0Ch
  941.     DX = port number
  942. Return: AX = FFFFh character not available
  943.     AX = 00xxh character xx available
  944. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  945. --------S-140C-------------------------------
  946. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  947.     AH = 0Ch
  948.     ES = segment of buffer to free, or 0000h to allocate new buffer
  949. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  950. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  951.       AH=0Ah and AH=0Bh
  952. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  953. --------N-140C--DXFFFF-----------------------
  954. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  955.     AH = 0Ch
  956.     DX = FFFFh
  957.     AL = connection ID from AH=0Bh/DX=FFFFh
  958. Return: AH = return code (00h-03h) (see also AH=00h/DX=FFFFh)
  959.         03h not prepared for inbound connection
  960.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  961. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  962.       serial ports over an IPX or NetBIOS-based network
  963. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  964. --------S-140D-------------------------------
  965. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  966.     AH = 0Dh
  967. Return: AX = result
  968.         FFFFh character not available
  969.         xxyyh standard IBM-style scan code
  970. SeeAlso: AH=0Eh
  971. --------S-140D-------------------------------
  972. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  973.     AH = 0Dh
  974.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  975. Return: ES:BX -> CH_KEY_RDY flag
  976. SeeAlso: AH=0Ah"Digiboard"
  977.  
  978. Values for CH_KEY_RDY flag:
  979.  00h    receive buffer empty
  980.  FFh    characters available
  981. --------S-140D-------------------------------
  982. INT 14 - MBBIOS PACCOM support - SET TXD
  983.     AH = 0Dh
  984.     AL = new setting (FFh = 1.0)
  985. Desc:    specify the time from RTS to start or packet
  986. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  987. --------N-140D--DXFFFF-----------------------
  988. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  989.     AH = 0Dh
  990.     DX = FFFFh
  991. Return: AH = return code
  992.         00h successful
  993.         nonzero operation not terminated
  994. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  995.       serial ports over an IPX or NetBIOS-based network
  996. Desc:    end all Connection Client TSR activity to allow it to be removed from
  997.       memory
  998. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  999. --------S-140D00-----------------------------
  1000. INT 14 - MBBIOS - GET AVAILABLE BYTES
  1001.     AX = 0D00h
  1002. Return: AX = bytes in transmit buffer
  1003.     CX = bytes in receive buffer
  1004. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  1005. --------S-140D01-----------------------------
  1006. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  1007.     AX = 0D01h
  1008. Note:    this function lowers DTR, RTS, etc.
  1009. SeeAlso: AX=0D02h
  1010. --------S-140D02-----------------------------
  1011. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  1012.     AX = 0D02h
  1013. Note:    this function raises DTR, RTS, etc.
  1014. SeeAlso: AX=0D01h
  1015. --------S-140D03-----------------------------
  1016. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  1017.     AX = 0D03h
  1018.     CL = new handshake byte
  1019. Return: CL = previous handshake byte
  1020. Note:    this function lowers DTR, RTS, etc.
  1021. --------S-140E-------------------------------
  1022. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  1023.     AH = 0Eh
  1024. Return: AX = xxyyh standard IBM-style scan code
  1025. SeeAlso: AH=0Dh"FOSSIL"
  1026. --------S-140E-------------------------------
  1027. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  1028.     AH = 0Eh
  1029.     CX = number of characters to write
  1030.     ES:BX -> string
  1031.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1032. Return: AX = number of characters actually written
  1033.     ZF clear if successful
  1034.     ZF set on error
  1035. SeeAlso: AH=0Fh"Digiboard"
  1036. --------S-140E-------------------------------
  1037. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  1038.     AH = 0Eh
  1039.     AL = new setting (FFh = 1.0)
  1040. Desc:    specify the time from end of DCD to RTS
  1041. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  1042. --------N-140E--DXFFFF-----------------------
  1043. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  1044.     AH = 0Eh
  1045.     DX = FFFFh
  1046.     AL = connection ID from AH=04h/DX=FFFFh
  1047.     BL = RTS state (00h off, 01h on)
  1048. Return: AH = return code (00h-03h) (see also AH=00h/DX=FFFFh)
  1049.         03h invalid request (BL not 00h or 01h)
  1050. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1051.       serial ports over an IPX or NetBIOS-based network
  1052. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  1053. --------S-140F-------------------------------
  1054. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  1055.     AH = 0Fh
  1056.     AL = bit mask describing requested flow control (see below)
  1057.     DX = port number
  1058. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  1059.  
  1060. Bitfields for requested flow control:
  1061. Bit(s)    Description
  1062.  0    XON/XOFF on transmit (watch for XOFF while sending)
  1063.  1    CTS/RTS (CTS on transmit/RTS on receive)
  1064.  2    reserved
  1065.  3    XON/XOFF on receive (send XOFF when buffer near full)
  1066.  4-7    all 1
  1067. --------S-140F-------------------------------
  1068. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  1069.     AH = 0Fh
  1070.     CX = number of characters to read
  1071.     ES:BX -> buffer
  1072.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1073. Return: AX = number of characters read
  1074.     ZF clear if successful
  1075.     ZF set on error (line status or wrong number of characters)
  1076. SeeAlso: AH=0Eh"Digiboard"
  1077. --------S-140F-------------------------------
  1078. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  1079.     AH = 0Fh
  1080.     AL = new setting in clock ticks
  1081. Desc:    specify the time from end of DCD to RTS
  1082. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  1083. --------N-140F--DXFFFF-----------------------
  1084. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  1085.     AH = 0Fh
  1086.     DX = FFFFh
  1087.     AL = connection ID
  1088.     CX = size of buffer or 0000h to get length of returned vector
  1089.     ES:DI -> buffer for connection parameter vector (see AH=04h/DX=FFFFh)
  1090. Return: AH = return code (00h-02h,06h) (see AH=00h/DX=FFFFh)
  1091.     CX = number of bytes which could not be returned because the given
  1092.           buffer was too small
  1093. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1094.       serial ports over an IPX or NetBIOS-based network
  1095. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  1096. --------S-1410-------------------------------
  1097. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  1098.     AH = 10h
  1099.     AL = bit mask
  1100.         bit 0: enable/disable ^C/^K checking
  1101.         bit 1: enable/disable the transmitter
  1102.     DX = port number
  1103. SeeAlso: AH=0Fh"FOSSIL"
  1104. --------S-1410-------------------------------
  1105. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  1106.     AH = 10h
  1107.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1108. Return: AH = status
  1109.         00h successful
  1110.         FFh error
  1111. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  1112. --------S-1410-------------------------------
  1113. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  1114.     AH = 10h
  1115.     AL = new setting in clock ticks (should be at least 5 character times)
  1116. Desc:    specify the time from start of last character to dropping RTS
  1117. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  1118. --------N-1410--DXFFFF-----------------------
  1119. INT 14 - Connection Manager - QUERY SERVICE NAMES
  1120.     AH = 10h
  1121.     DX = FFFFh
  1122.     CL = subfunction
  1123.         00h search first
  1124.         01h search next
  1125.     ES:DI -> pattern buffer (see below)
  1126. Return: AH = return code (00h,01h,03h,06h) (see also AH=00h/DX=FFFFh)
  1127.         01h no (more) matching names
  1128.         03h invalid request
  1129.     ES:DI buffer filled with reply buffer (see below) containing matched
  1130.           name if AH=00h
  1131. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1132.       serial ports over an IPX or NetBIOS-based network
  1133. Desc:    obtain the names of groups and lines available for connection requests,
  1134.       and the names of active Connection Servers
  1135. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  1136.  
  1137. Format of pattern/reply buffer:
  1138. Offset    Size    Description
  1139.  00h    WORD    length of pattern (30h or 32h)
  1140.  02h 16 BYTEs    server pattern or name
  1141.  12h 16 BYTEs    group pattern or name
  1142.  22h 16 BYTEs    line pattern or name
  1143.  23h    BYTE    (optional) ???
  1144.  24h    BYTE    (optional, returned) current line status
  1145.         00h available
  1146.         01h out of service
  1147.         02h currently allocated to a connection
  1148. Note:    pattern may include '?' wildcard to match any character
  1149. --------S-1411-------------------------------
  1150. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  1151.     AH = 11h
  1152.     DH = row
  1153.     DL = column
  1154. Note:    this is the same as INT 10/AH=02h
  1155. SeeAlso: AH=12h"FOSSIL"
  1156. --------S-1411-------------------------------
  1157. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  1158.     AH = 11h
  1159.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1160. Return: AH = status
  1161.         00h successful
  1162.         FFh error
  1163. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  1164. --------S-1411-------------------------------
  1165. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  1166.     AH = 11h
  1167.     DX = port number
  1168. Return: AL = status
  1169.         00h successful
  1170.         01h IRQ for port is shared
  1171.         02h IRQ was reserved
  1172. SeeAlso: AH=04h,AH=05h,AH=12h"PC-MOS"
  1173. --------S-1412-------------------------------
  1174. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  1175.     AH = 12h
  1176. Return: DH = row
  1177.     DL = column
  1178. Note:    this is the same as INT 10/AH=03h
  1179. SeeAlso: AH=11h"FOSSIL"
  1180. --------S-1412-------------------------------
  1181. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  1182.     AH = 12h
  1183.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1184. Return: AX = number of bytes free
  1185. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  1186. --------S-1412-------------------------------
  1187. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  1188.     AH = 12h
  1189.     DX = port number
  1190. Return: AH = status
  1191.         FFh port number invalid
  1192.     AL = line parameters (see AH=00h)
  1193.     AH = flow control configuration (see AH=05h"PC-MOS")
  1194.     CX:BX = bps rate
  1195.     DL = XOFF character or 00h for none
  1196.     DH = XON character or 00h for none
  1197. --------S-1413-------------------------------
  1198. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  1199.     AH = 13h
  1200.     AL = character
  1201. Note:    should not be called if it is unsafe to call DOS
  1202. SeeAlso: AH=15h
  1203. --------S-1413-------------------------------
  1204. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  1205.     AH = 13h
  1206.     DX = port number
  1207. Return: AH = status
  1208.         FFh port number invalid
  1209.         else
  1210.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  1211. SeeAlso: AH=17h"PC-MOS"
  1212. --------S-1414-------------------------------
  1213. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  1214.     AH = 14h
  1215.     AL = 01h enable watchdog
  1216.          00h disable watchdog
  1217.     DX = port number
  1218. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  1219. --------S-1414-------------------------------
  1220. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  1221.     AH = 14h
  1222.     CX = number of characters in string
  1223.     DX = port number
  1224.     ES:BX -> string to be sent
  1225.     SI = timeout in timer ticks or 0000h for default
  1226. Return: AX = number of bytes actually sent
  1227.     ZF clear if successful
  1228.     ZF set on timeout
  1229. SeeAlso: AH=01h,AH=15h"PC-MOS"
  1230. --------S-1414-------------------------------
  1231. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  1232.     AH = 14h
  1233. Return: AX = number of boards installed
  1234. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  1235. --------S-1415-------------------------------
  1236. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  1237.     AH = 15h
  1238.     AL = character
  1239. SeeAlso: AH=13h"FOSSIL"
  1240. --------S-1415-------------------------------
  1241. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  1242.     AH = 15h
  1243.     CX = size of buffer
  1244.     DX = port number
  1245.     ES:BX -> buffer for received characters
  1246.     SI = timeout in clock ticks or 0000h for default
  1247. Return: AX = number of characters actually read
  1248.     ZF set on timeout (no data available)
  1249. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  1250. --------S-1415-------------------------------
  1251. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  1252.     AH = 15h
  1253.     AL = new state (00h disabled, 01h enabled)
  1254. Return: AH = status
  1255.         00h successful
  1256.         80h error
  1257.         FFh error
  1258. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  1259. --------S-1416-------------------------------
  1260. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  1261.     AH = 16h
  1262.     AL = function
  1263.         00h = delete
  1264.         01h = add
  1265.     ES:DX -> routine to call
  1266. Return: AX = status
  1267.         0000h successful
  1268.         0001h unsuccessful
  1269. SeeAlso: AH=07h"FOSSIL"
  1270. --------S-1416-------------------------------
  1271. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  1272.     AH = 16h
  1273.     ES:BX -> calling driver's INT 14 entry point
  1274. Return: nothing
  1275. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1276.       operating system by The Software Link, Inc.
  1277. --------S-1416-------------------------------
  1278. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  1279.     AH = 16h
  1280.     AL = CCB command number (see below) (see also following entries)
  1281.     BL = byte 2
  1282.     BH = byte 3
  1283.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  1284.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1285. Return: AH = status
  1286.         00h successful
  1287.         80h error
  1288.         FFh error
  1289. SeeAlso: AX=1646h,AH=18h"Digiboard"
  1290.  
  1291. Values for CCB command number:
  1292.  40h    Set Receive Mid Water Mark
  1293.  41h    Set Receive High Water Mark
  1294.  42h    Flush Receive Buffer
  1295.  43h    Flush Transmit Buffer
  1296.  44h    Transmit Pause
  1297.  45h    Transmit Resume
  1298.  46h    Set Interrupt to Host Mask
  1299.  47h    Set Baud, Data, Stop and Parity
  1300.  48h    Send Break
  1301.  49h    Set Modem Lines
  1302.  4Ah    Set Break Count
  1303.  4Bh    Set Handshake
  1304.  4Ch    Set Xon/Xoff Characters
  1305.  4Dh    Set Transmit Mid Water Mark
  1306.  4Eh    IRQ Polling Timer to Host
  1307.  4Fh    Buffer Set All
  1308.  50h    Port On
  1309.  51h    Port Off
  1310.  52h    Receive Pause
  1311.  53h    Special Character Interrupt
  1312.  54h    RS-422 Enable
  1313. --------S-141646-----------------------------
  1314. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  1315.     AX = 1646h
  1316.     BL = bits to set
  1317.     BH = bits to clear
  1318.     CL = byte 1
  1319.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1320. Return: AH = status
  1321.         00h successful
  1322.         80h error
  1323.         FFh error
  1324. SeeAlso: AH=16h"Digiboard",AX=1647h
  1325. --------S-141647-----------------------------
  1326. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  1327.     AX = 1647h
  1328.     BL = baud
  1329.     BH = datatype
  1330.     CL = byte 1
  1331.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1332. Return: AH = status
  1333.         00h successful
  1334.         80h error
  1335.         FFh error
  1336. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  1337. --------S-141649-----------------------------
  1338. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  1339.     AX = 1649h
  1340.     BL = bits to set
  1341.     BH = bits to clear
  1342.     CL = byte 1
  1343.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1344. Return: AH = status
  1345.         00h successful
  1346.         80h error
  1347.         FFh error
  1348. SeeAlso: AH=16h"Digiboard",AX=1647h
  1349. --------S-14164A-----------------------------
  1350. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  1351.     AX = 164Ah
  1352.     BL = break count
  1353.     CL = byte 1
  1354.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1355. Return: AH = status
  1356.         00h successful
  1357.         80h error
  1358.         FFh error
  1359. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  1360. --------S-14164B-----------------------------
  1361. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  1362.     AX = 164Bh
  1363.     BL = bits to set
  1364.     BH = bits to clear
  1365.     CL = byte 1
  1366.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1367. Return: AH = status
  1368.         00h successful
  1369.         80h error
  1370.         FFh error
  1371. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  1372. --------S-14164C-----------------------------
  1373. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  1374.     AX = 164Ch
  1375.     BL = XON character
  1376.     BH = XOFF character
  1377.     CL = byte 1
  1378.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1379. Return: AH = status
  1380.         00h successful
  1381.         80h error
  1382.         FFh error
  1383. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  1384. --------S-14164D-----------------------------
  1385. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  1386.     AX = 164Dh
  1387.     BX = new mid-water mark
  1388.     CL = byte 1
  1389.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1390. Return: AH = status
  1391.         00h successful
  1392.         80h error
  1393.         FFh error
  1394. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  1395. --------S-14164E-----------------------------
  1396. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  1397.     AX = 164Eh
  1398.     BL = ticks
  1399.     BH = ???
  1400.     CL = mode
  1401.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1402. Return: AH = status
  1403.         00h successful
  1404.         80h error
  1405.         FFh error
  1406. SeeAlso: AH=16h"Digiboard",AX=164Dh
  1407. --------S-14164F-----------------------------
  1408. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  1409.     AX = 164Fh
  1410.     BL = size
  1411.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1412. Return: AH = status
  1413.         00h successful
  1414.         80h error
  1415.         FFh error
  1416. SeeAlso: AH=16h"Digiboard",AX=164Dh
  1417. --------S-141653-----------------------------
  1418. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  1419.     AX = 1653h
  1420.     BL = enable/disable
  1421.     BH = special character
  1422.     CL = byte 1
  1423.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1424. Return: AH = status
  1425.         00h successful
  1426.         80h error
  1427.         FFh error
  1428. SeeAlso: AH=16h"Digiboard",AX=1646h
  1429. --------S-1417-------------------------------
  1430. INT 14 - FOSSIL - REBOOT SYSTEM
  1431.     AH = 17h
  1432.     AL = method
  1433.         00h = cold boot
  1434.         01h = warm boot
  1435. SeeAlso: INT 19
  1436. --------S-1417-------------------------------
  1437. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  1438.     AH = 17h
  1439.     AL = new value for UART's modem control register
  1440.     DX = port number
  1441. Return: nothing
  1442. --------S-1418-------------------------------
  1443. INT 14 - FOSSIL - READ BLOCK
  1444.     AH = 18h
  1445.     CX = maximum number of characters to transfer
  1446.     DX = port number
  1447.     ES:DI -> user buffer
  1448. Return: AX = number of characters transferred
  1449. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  1450. --------S-1418-------------------------------
  1451. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  1452.     AH = 18h
  1453.     ES:BX -> 16-byte command string
  1454.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1455. Return: AH = status
  1456.         00h successful
  1457.         80h timeout
  1458.     AL = mailbox status
  1459.         00h no errors
  1460.         8Xh BIOS error
  1461.     ES:BX buffer filled in with mailbox string
  1462.     ZF clear if no errors
  1463.     ZF set if either status byte contains an error code
  1464. SeeAlso: AH=16h"Digiboard"
  1465. --------S-1418-------------------------------
  1466. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  1467.     AH = 18h
  1468.     DX = port number
  1469. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  1470.         driver
  1471. SeeAlso: AH=06h"PC-MOS"
  1472. --------S-1419-------------------------------
  1473. INT 14 - FOSSIL - WRITE BLOCK
  1474.     AH = 19h
  1475.     CX = maximum number of characters to transfer
  1476.     DX = port number
  1477.     ES:DI -> user buffer
  1478. Return: AX = number of characters transferred
  1479. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  1480. --------S-1419-------------------------------
  1481. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  1482.     AH = 19h
  1483.     BL = flag
  1484.         00h disable special character interrupt
  1485.         FFh enable interrupt
  1486.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1487. Return: AH = status
  1488.         00h successful
  1489.         FFh failed
  1490. SeeAlso: AH=1Ah"Digiboard"
  1491. --------S-1419-------------------------------
  1492. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  1493.     AH = 19h
  1494.     AL = what to flush
  1495.         bit 0: input buffer
  1496.         bit 1: output buffer
  1497.     DX = port number
  1498. Return: nothing
  1499. SeeAlso: AH=09h"PC-MOS"
  1500. --------S-141A-------------------------------
  1501. INT 14 - FOSSIL - BREAK BEGIN OR END
  1502.     AH = 1Ah
  1503.     AL = 00h stop sending 'break'
  1504.          01h start sending 'break'
  1505.     DX = port number
  1506. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  1507. --------S-141A-------------------------------
  1508. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  1509.     AH = 1Ah
  1510.     BX = subfunction
  1511.         00h return pointer to special character flag byte
  1512.         01h return pointer to special character counter word
  1513.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1514. Return: ES:BX -> special character flag or counter
  1515. Notes:    flag is FFh if one or more special characters are in the receive
  1516.       buffer; it is 00h and the counter is invalid if no special characters
  1517.       are in the receive buffer
  1518.     counter (if valid) contains the number of characters in the receive
  1519.       buffer up to and including the last-received special character
  1520. --------S-141B-------------------------------
  1521. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  1522.     AH = 1Bh
  1523.     DX = port number
  1524.     CX = size of user buffer
  1525.     ES:DI -> user buffer for driver info (see below)
  1526. Return: AX = number of characters transferred
  1527.     CX = 3058h ("0X") (X00 FOSSIL only)
  1528.     DX = 2030h (" 0") (X00 FOSSIL only)
  1529.  
  1530. Format of driver info:
  1531. Offset    Size    Description
  1532.  00h    WORD    size of structure in bytes
  1533.  02h    BYTE    FOSSIL spec driver conforms to
  1534.  03h    BYTE    revision level of this specific driver
  1535.  04h    DWORD    pointer to ASCIZ identification string
  1536.  08h    WORD    size of the input buffer
  1537.  0Ah    WORD    number of bytes left in buffer
  1538.  0Ch    WORD    size of the output buffer
  1539.  0Eh    WORD    number of bytes left in buffer
  1540.  10h    BYTE    width of screen
  1541.  11h    BYTE    length of screen
  1542.  12h    BYTE    actual baud rate, computer to modem
  1543. --------S-141C-------------------------------
  1544. INT 14 - X00 FOSSIL - ACTIVATE PORT
  1545.     AH = 1Ch
  1546.     DX = port number
  1547. Return: AX = 1954h if successful
  1548.     BL = maximum function number supported (not including 7Eh and above)
  1549.     BH = revision of FOSSIL specification supported
  1550. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  1551.       with the PS/2 BIOS in a future release
  1552. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  1553. --------S-141D-------------------------------
  1554. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  1555.     AH = 1Dh
  1556.     DX = port number
  1557. Return: none
  1558. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  1559.       with the PS/2 BIOS in a future release
  1560.     ignored if the port was never activated with AH=04h or AH=1Ch
  1561. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  1562. --------S-141E-------------------------------
  1563. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  1564.     AH = 1Eh
  1565.     AL = break status
  1566.         00h if break
  1567.         01h if no break
  1568.     BH = parity (see below)
  1569.     BL = number of stop bits
  1570.         00h one stop bit
  1571.         01h two stop bits (1.5 if 5 bit word length)
  1572.     CH = word length (see below)
  1573.     CL = bps rate (see below)
  1574.     DX = port number
  1575. Return: AX = port status code (see AH=00h)
  1576. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  1577.     if the port was locked at X00 load time, the appropriate parameters are
  1578.       ignored
  1579. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  1580.  
  1581. Values for parity:
  1582.  00h    no parity
  1583.  01h    odd parity
  1584.  02h    even parity
  1585.  03h    stick parity odd
  1586.  04h    stick parity even
  1587.  
  1588. Values for word length:
  1589.  00h    5 bits
  1590.  01h    6 bits
  1591.  02h    7 bits
  1592.  03h    8 bits
  1593.  
  1594. Values for bps rate:
  1595.  00h    110
  1596.  01h    150
  1597.  02h    300
  1598.  03h    600
  1599.  04h    1200
  1600.  05h    2400
  1601.  06h    4800
  1602.  07h    9600
  1603.  08h    19200
  1604. --------S-141E------------------------------------
  1605. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  1606.     AH = 1Eh
  1607.     CX = channel number (00h COM1, 01h COM2, ...)
  1608.     DS:BX -> buffer for communications parameters (see below)
  1609. Return: DS:BX buffer filled
  1610. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  1611.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  1612. SeeAlso: AH=20h"HUNTER"
  1613.  
  1614. Format of communications parameters:
  1615. Offset    Size    Description
  1616.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  1617.  01h    BYTE    port number (00h COM1, 01h COM2)
  1618.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  1619.         05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  1620.  03h    BYTE    data bits (01h seven, 02h eight)
  1621.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  1622.  05h    BYTE    stop bits (00h one, 01h two)
  1623.  06h    BYTE    handshake (see below)
  1624.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  1625.  08h    BYTE    Nulls after CR (0-20)
  1626.  09h    BYTE    LF (00h off, 01h on)
  1627.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  1628.                80h: Serig off
  1629.  0Bh    BYTE    echo (00h off, 01h on)
  1630.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  1631.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  1632.  0Eh  5 BYTEs    reserved
  1633.  
  1634. Bitfields for handshake:
  1635. Bit(s)    Description
  1636.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  1637.  2    DTR enabled
  1638.  4    CTS enabled
  1639.  5    DSR enabled
  1640.  6    DCD enabled
  1641. --------S-141F-------------------------------
  1642. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  1643.     AH = 1Fh
  1644.     AL = 00h read modem control register
  1645.           Return: BL = modem control register (see below)
  1646.               AH = status
  1647.     AL = 01h write modem control register
  1648.           BL = modem control register (see below)
  1649.           Return: AX = status
  1650.     DX = port number
  1651. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  1652.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  1653. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  1654.  
  1655. Bitfields for modem control register:
  1656. Bit(s)    Description
  1657.  0    data terminal ready
  1658.  1    request to send
  1659.  2    OUT1
  1660.  3    OUT2 (interrupts) enabled
  1661.  4    LOOP
  1662.  5-7    reserved
  1663. --------S-1420-------------------------------
  1664. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  1665.     AH = 20h
  1666.     DX = port number
  1667. Return: AH = 00h if character was available
  1668.         AL = next character (removed from receive buffer)
  1669.     AX = FFFFh if no character available
  1670. SeeAlso: AH=0Ch,AH=21h"X00"
  1671. --------S-1420-------------------------------
  1672. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  1673.     AH = 20h
  1674.     AL = logical port (01h COM1, 02h COM2)
  1675.     DX = physical port number
  1676. Return: AX = status
  1677.         0000h successful
  1678.         FFFFh failed
  1679. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  1680. --------S-1420-------------------------------
  1681. INT 14 - MultiDOS Plus - INITIALIZE PORT
  1682.     AH = 20h
  1683.     AL = port parameters (see AH=00h"SERIAL")
  1684.     DX = port number (0-3)
  1685. Return: AH = status
  1686.         00h successful
  1687.         41h no such port
  1688.         64h monitor mode already active
  1689. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  1690. --------S-1420-------------------------------
  1691. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  1692.     AH = 20h
  1693.     DX = port number
  1694. Return: AX = number of bytes in output buffer
  1695. SeeAlso: AH=0Ah"PC-MOS"
  1696. --------S-1420------------------------------------
  1697. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  1698.     AH = 20h
  1699.     CX = channel number (00h COM1, 01h COM2, ...)
  1700.     DS:BX -> buffer with communications parameter (see AH=1Eh"HUNTER")
  1701. Return: AX = status
  1702.         0000h successful
  1703.         0001h invalid parameter
  1704. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  1705. --------S-1421-------------------------------
  1706. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  1707.     AH = 21h
  1708.     AL = character
  1709.     DX = port number
  1710. Notes:    the given character is inserted at the end of the receive buffer as if
  1711.       it had just arrived from the serial port; all normal receive
  1712.       processing (XON/XOFF, ^C/^K) is performed on the character
  1713.     fully re-entrant
  1714. SeeAlso: AH=20h"X00"
  1715. --------S-1421-------------------------------
  1716. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  1717.     AH = 21h
  1718.     DX = physical port number
  1719. Return: AX = status
  1720.         0000h successful
  1721.         FFFFh failed
  1722. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  1723. --------S-1421-------------------------------
  1724. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  1725.     AH = 21h
  1726.     AL = character to send
  1727.     DX = port number
  1728. Return: AH = status (see below)
  1729. Note:    monitor mode must have been turned on with AH=24h before calling
  1730. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  1731.  
  1732. Values for status:
  1733.  00h    successful
  1734.  39h    no DSR or CTS
  1735.  3Ch    no DSR
  1736.  3Bh    no CTS
  1737.  41h    no such port
  1738.  42h    monitor mode not active
  1739.  97h    timed out
  1740. --------S-1421-------------------------------
  1741. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  1742.     AH = 21h
  1743.     AL = char to send
  1744.     DX = port number
  1745.     SI = timeout in timer ticks (0000h = default)
  1746. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1747.       operating system by The Software Link, Inc.
  1748. SeeAlso: AH=01h,AH=0Eh"PC/MOS",AH=22h"PC-MOS"
  1749. --------S-1421------------------------------------
  1750. INT 14 - HUNTER 16 - EXTENDED CONTROL
  1751.     AH = 21h
  1752.     AL = command
  1753.         01h force transmission of buffer
  1754.         02h clear transmit buffer
  1755.         03h clear receive buffer
  1756.     DX = port (00h COM1, 01h COM2)
  1757. Return: AH = extended status
  1758. Desc:    executes the command on the selected port
  1759. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  1760. --------S-1422-------------------------------
  1761. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  1762.     AH = 22h
  1763.     AL = logical port (01h COM1, 02h COM2)
  1764. Return: AX = status (0000h successful)
  1765. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  1766. --------S-1422-------------------------------
  1767. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  1768.     AH = 22h
  1769.     DX = port number
  1770. Return: AH = status (see also AH=21h"MultiDOS")
  1771.         00h successful
  1772.         AL = character
  1773.         3Dh framing and parity error
  1774.         3Eh overrun error
  1775.         3Fh framing error
  1776.         40h parity error
  1777.         96h ring buffer overflow
  1778. Note:    if no character is available, this function waits until a character
  1779.       arrives or an implementation-dependent timeout elapses
  1780. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  1781. --------S-1422-------------------------------
  1782. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  1783.     AH = 22h
  1784.     DX = port number
  1785.     SI = timeout in timer ticks (0000h = default)
  1786. Return: AH = port status (see AH=03h bits 0..6)
  1787.          bit 7 = 1 indicates time-out
  1788.     AL = character received
  1789. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1790.       operating system by The Software Link, Inc.
  1791. SeeAlso: AH=02h,AH=0Fh"PC-MOS",AH=21h"PC-MOS"
  1792. --------S-1422------------------------------------
  1793. INT 14 - HUNTER 16 - EXTENDED STATUS
  1794.     AH = 22h
  1795.     DX = port (00h COM1, 01h COM2)
  1796. Return: AH = extended status
  1797.     BX = number of characters in input buffer
  1798.     CX = number of characters in output buffer
  1799. Desc:    returns the most recent Extended Status code for the port
  1800. SeeAlso: AH=21h"HUNTER"
  1801. --------S-1423-------------------------------
  1802. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  1803.     AH = 23h
  1804.     AL = logical port (01h COM1, 02h COM2)
  1805.     DH = user ID
  1806.     DL = process ID (DH,DL both FFh for current task)
  1807. Return: AL = MW386 port mode (see below)
  1808.     CX = MW386 port number
  1809.     DH = owner's user ID
  1810.     DL = owner's task ID
  1811. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  1812.  
  1813. Bitfields for MW386 port mode:
  1814. Bit(s)    Description
  1815.  0    port is shared (spooler only)
  1816.  1    port is spooled instead of direct (spooler only)
  1817.  2    port is assigned as logical COM device, not in spooler
  1818.  3    port is free
  1819. --------S-1423-------------------------------
  1820. INT 14 - MultiDOS Plus - GET PORT STATUS
  1821.     AH = 23h
  1822.     DX = port number
  1823. Return: AH = line status (see AH=03h)
  1824.     AL = modem status (see AH=03h)
  1825. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  1826. --------S-1423-------------------------------
  1827. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  1828.     AH = 23h
  1829.     DX = port number
  1830.     BX = TCB segment/selector address of owner task
  1831. Return: nothing
  1832. SeeAlso: AH=0Dh"PC-MOS"
  1833. --------S-1423------------------------------------
  1834. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  1835.     AH = 23h
  1836.     BH = handshake line to set (00h RTS, 01h DTR)
  1837.     BL = new level (00h low, 01h high)
  1838. Desc:    sets the handshake lines of COM1 to the desired level
  1839. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  1840. --------S-1424-------------------------------
  1841. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  1842.     AH = 24h
  1843.     CX = physical I/O port number
  1844.     DS:DX -> configuration table (see below)
  1845. Return: AH = 00h
  1846. Note:    invalid port numbers are merely ignored
  1847. SeeAlso: INT 17/AH=96h
  1848.  
  1849. Format of configuration table:
  1850. Offset    Size    Description
  1851.  00h    BYTE    baud rate (see below)
  1852.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  1853.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  1854.  03h    BYTE    stop bits (00h=1, 01h=2)
  1855.  04h    BYTE    receive flow control
  1856.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  1857.  05h    BYTE    transmit flow control (as for receive)
  1858.  
  1859. Values for baud rate:
  1860.  00h    38400
  1861.  01h    19200
  1862.  02h    9600
  1863.  03h    7200
  1864.  04h    4800
  1865.  05h    3600
  1866.  06h    2400
  1867.  07h    2000
  1868.  08h    1200
  1869.  09h    600
  1870.  0Ah    300
  1871.  0Bh    150
  1872.  0Ch    134.5
  1873. --------S-1424-------------------------------
  1874. INT 14 - MultiDOS Plus - SET MONITOR MODE
  1875.     AH = 24h
  1876.     AL = port status storage
  1877.         00h single status for entire receive buffer
  1878.         01h separate status kept for each byte in receive buffer
  1879.     DX = port number
  1880. Return: AH = status
  1881.         00h successful
  1882.         3Ah invalid status storage specified
  1883.         41h no such port
  1884.         64h monitor mode already active
  1885. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  1886.       port
  1887. SeeAlso: AH=20h"MultiDOS",AH=25h
  1888. --------S-1424-------------------------------
  1889. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  1890.     AH = 24h
  1891. Return: ???
  1892. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1893.       operating system by The Software Link, Inc.
  1894. --------S-1424------------------------------------
  1895. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  1896.     AH = 24h
  1897.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  1898. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  1899. --------S-1425-------------------------------
  1900. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  1901.     AH = 25h
  1902.     AL = function
  1903.         00h only clear buffers
  1904.         01h clear buffers and deactivate
  1905.     DX = port number
  1906. Return: AH = status
  1907.         00h successful
  1908.         3Ah invalid function
  1909.         41h no such port
  1910.         42h monitor mode not active
  1911. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  1912. --------S-1425------------------------------------
  1913. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  1914.     AH = 25h
  1915.     AL = new state of RS232 drivers (00h off, 01h on)
  1916. Note:    this function can be used to save power by turning off the RS232 
  1917.       drivers.  It can also be used to turn on the RS232 drivers before
  1918.       connecting to a remote system to avoid "garbage" while the drivers
  1919.       turn on.
  1920. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  1921. --------S-1426------------------------------------
  1922. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  1923.     AH = 26h
  1924.     AL = 00h enable RI power up
  1925.         else disable RI power up
  1926. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  1927. --------S-1427-------------------------------
  1928. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  1929.     AH = 27h
  1930.     DX = port number
  1931. Return: AH = status
  1932.         00h successful
  1933.         41h no such port
  1934.         42h monitor mode not active
  1935.     AL = number of characters in receive buffer
  1936. --------S-1427------------------------------------
  1937. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  1938.     AH = 27h
  1939.     AL = number of extended protocols installed (since last call)
  1940. Return: AL = total number installed, including new ones
  1941. Desc:    Returns the number of extended communication protocols installed
  1942. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  1943. --------S-1428------------------------------------
  1944. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  1945.     AH = 28h
  1946.     AL = protocol handle
  1947.     DS:BX -> 8 character buffer for protocol name
  1948. Return:    AH = status
  1949.         00h successful
  1950.         DS:BX buffer filled with the protocol name
  1951.         FFh failed
  1952. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  1953. --------S-1429------------------------------------
  1954. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  1955.     AH = 29h
  1956.     DS:BX -> buffer containing the protocol name
  1957. Return: AH = status 
  1958.         00h successful
  1959.         AL = handle
  1960.         FFh failed
  1961. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  1962. --------S-142A------------------------------------
  1963. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  1964.     AH = 2Ah
  1965.     AL = protocol handle
  1966. Return: AH = status
  1967.         00h successful
  1968.         FFh failed
  1969.     AL = menu handle
  1970. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  1971. --------S-142B------------------------------------
  1972. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  1973.     AH = 2Bh
  1974.     AL = protocol handle
  1975.     DS:BX -> buffer for extended protocol parameters
  1976. Return: AH = status    
  1977.         00h successful
  1978.         DS:BX buffer filled with extended parameters
  1979.         FFh failed
  1980. SeeAlso: AH=2Ah"HUNTER"
  1981. --------S-142C00----------------------------------
  1982. INT 14 - HUNTER 16 - GET DTR
  1983.     AX = 2C00h
  1984. Return: AH = 00h
  1985.     BL = current state
  1986.         00h     normal DTR operation
  1987.         else DTR is forced high
  1988. Desc:    Indicates whether the DTR signal on COM1 is forced high
  1989. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  1990.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  1991. SeeAlso: AH=2Ch"SET DTR"
  1992. --------S-142C------------------------------------
  1993. INT 14 - HUNTER 16 - SET DTR
  1994.     AH = 2Ch
  1995.     AL nonzero
  1996.     BL = new state
  1997.         00h     normal operation
  1998.         else force DTR high
  1999. Return: AH = 00h
  2000. Desc:    determine whether the DTR signal on COM1 should be forced high
  2001. SeeAlso: AX=2C00h
  2002. --------S-1456-------------------------------
  2003. INT 14 U - BWCOM14 - INSTALLATION CHECK
  2004.     AH = 56h
  2005. Return: CX = 0001h if installed
  2006. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  2007.       connected to the serial port) distributed as part of the
  2008.       Beame&Whiteside BW-NFS package
  2009. SeeAlso: AH=57h,AH=58h
  2010. --------S-1457-------------------------------
  2011. INT 14 U - BWCOM14 - INITIALIZE
  2012.     AH = 57h
  2013.     DL = port number
  2014. Return: AL = initialization status (00h successful, 01h already initialized)
  2015.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  2016. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  2017.       port will be handled by BWCOM14 until AH=58h is called
  2018. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  2019. --------S-1458-------------------------------
  2020. INT 14 U - BWCOM14 - SHUTDOWN
  2021.     AH = 58h
  2022. Return: CX = status (0001h successful, 0002h not initialized)
  2023. Note:    after this call, BWCOM14 will no longer redirect the COM port
  2024. SeeAlso: AH=56h,AH=57h
  2025. --------N-146F--BXFFFE-----------------------
  2026. INT 14 U - Connection Manager - ???
  2027.     AH = 6Fh
  2028.     BX = FFFEh
  2029.     ???
  2030. Return: ???
  2031. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2032.       serial ports over an IPX or NetBIOS-based network
  2033. --------N-146F--BXFFFF-----------------------
  2034. INT 14 - Connection Manager - INSTALLATION CHECK
  2035.     AH = 6Fh
  2036.     BX = FFFFh
  2037. Return: DX:BX -> Connection Manager Communication Table if installed
  2038.     BX = FFFFh if not installed
  2039. SeeAlso: AH=0Dh/DX=FFFFh
  2040. --------S-147E-------------------------------
  2041. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  2042.     AH = 7Eh
  2043.     AL = code assigned to external application (80h-BFh)
  2044.         80h reserved for communications FOSSIL
  2045.         81h video FOSSIL
  2046.         82h reserved for keyboard FOSSIL
  2047.         83h reserved for system FOSSIL
  2048.     ES:DX -> entry point
  2049. Return: AX = 1954h
  2050.     BL = code assigned to application (same as input AL)
  2051.     DH = 00h failed
  2052.          01h successful
  2053. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  2054. --------S-147F-------------------------------
  2055. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  2056.     AH = 7Fh
  2057.     AL = code assigned to external application
  2058.     ES:DX -> entry point
  2059. Return: AX = 1954h
  2060.     BL = code assigned to application (same as input AL)
  2061.     DH = 00h failed
  2062.          01h successful
  2063. SeeAlso: AH=7Eh
  2064. --------S-1480-------------------------------
  2065. INT 14 - COMMUNICATIONS FOSSIL
  2066.     AH = 80h
  2067. SeeAlso: AH=7Eh
  2068. --------S-1480-------------------------------
  2069. INT 14 - COURIERS.COM - INSTALLATION CHECK
  2070.     AH = 80h
  2071. Return: AH = E8h if loaded
  2072. Program: COURIERS is a TSR utility by PC Magazine
  2073. --------S-148000-----------------------------
  2074. INT 14 - ARTICOM - INSTALLATION CHECK
  2075.     AX = 8000h
  2076. Return: AL = FFh if installed
  2077.         BH = major version
  2078.         BL = minor version
  2079. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  2080.       works on top of NetBIOS and allows modem/serial-port sharing by
  2081.       programs using INT 14 for serial I/O.
  2082. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  2083.       drivers
  2084. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  2085. --------S-148001-----------------------------
  2086. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  2087.     AX = 8001h
  2088. Return: AX = error code, if error (see AX=8003h)
  2089. SeeAlso: AX=8000h,AX=8002h,AX=8003h
  2090. Index:    uninstall;ARTICOM
  2091. --------S-148002-----------------------------
  2092. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  2093.     AX = 8002h
  2094.     ES:DI -> buffer for redirector status structure (see below)
  2095. Return: AX = error code, if error (see AX=8003h)
  2096. SeeAlso: AX=8000h,AX=8003h
  2097.  
  2098. Format of redirector status:
  2099. Offset    Size    Description
  2100.  00h    WORD    redirector major and minor version numbers
  2101.  02h    WORD    redirectable ports found
  2102.  04h    WORD    redirectable ports + local ports found
  2103.  06h    WORD    redirector internal buffer size
  2104.  08h    WORD    maximum servers maintained
  2105.  0Ah    WORD    number of adapters found
  2106. --------S-148003-----------------------------
  2107. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  2108.     AX = 8003h
  2109.     CX = error number to translate
  2110. Return: ES:DI -> ASCIZ error text or NULL if can't translate.
  2111. SeeAlso: AX=8000h
  2112.  
  2113. Values for error codes:
  2114.  00h    "No error"
  2115.  01h    "An invalid port number was specified"
  2116.  02h    "Port is already redirected"
  2117.  03h    "Too many ports redirected"
  2118.  04h    "Cannot locate the server"
  2119.  05h    "Server is busy"
  2120.  06h    "Access denied"
  2121.  07h    "Resource in use"
  2122.  08h    "Resource in use - request queued"
  2123.  09h    "No such resource"
  2124.  0Ah    "Invalid username/password pair"
  2125.  0Bh    "Noncompatible version number"
  2126.  0Ch    "Can't remove from memory"
  2127.  0Dh    "Bad NETBIOS adapter number"
  2128.  0Eh    "No more entries in list"
  2129.  0Fh    "Resource is not available at this time"
  2130.  10h    "Invalid value to INT 14 call"
  2131. --------S-148004-----------------------------
  2132. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  2133.     AX = 8004h
  2134.     DX = port to redirect (COM1=0, COM2=1, ...)
  2135.     CH = attach type
  2136.     CL = adapter to use for attach, 0FFh to search all
  2137.     ES:DI -> attachment structure (see below)
  2138. Return: AX = error code, if error (see AX=8003h)
  2139. Note:    The wildcard '*' is supported in the server and resource fields.  If
  2140.       wild cards are used then the first matching available server is
  2141.       attached.
  2142. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  2143.  
  2144. Format of attachment structure:
  2145. Offset    Size    Description
  2146.  00h 16 BYTEs    server to look for attach
  2147.  10h 16 BYTEs    attach to resource name
  2148.  20h 16 BYTEs    username for attach
  2149.  30h 16 BYTEs    password for username or resource
  2150.  40h    BYTE    attach type
  2151.         00h normal
  2152.         01h queue if resource is in use (not yet supported in v1.00)
  2153. --------S-148005-----------------------------
  2154. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  2155.     AX = 8005h
  2156.     DX = port to detach (COM1=0, COM2=1, ...)
  2157. Return: AX = error code, if error (see AX=8003h)
  2158. Note:    only a previously attached resource can be detached
  2159. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  2160. --------S-148006-----------------------------
  2161. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  2162.     AX = 8006h
  2163.     BX = remote port (COM1=0, COM2=1, ...)
  2164.     CL = adapter number, FFh to try all adapters
  2165.     ES:DI -> resource information structure (see below)
  2166.     DS:SI -> 16 byte server name. See note.
  2167. Return: AX = error code, if error (see AX=8003h)
  2168.     BX = next remote port, recall to get next resource info
  2169. Note:    Wild cards supported in both the resource field and server name
  2170.     string DS:SI. If wild cards used then first matching available
  2171.     resource information is searched. Set the resource field to FFh to
  2172.     return all resources.
  2173. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  2174.  
  2175. Format of resource information structure:
  2176. Offset    Size    Description
  2177.  00h    BYTE    00h = free, else used
  2178.  01h 16 BYTEs    resource name
  2179.  11h 16 BYTEs    username of resource user
  2180.  21h    WORD    amount of time used
  2181.  23h    WORD    amount of time remaining
  2182.  53h 48 BYTEs    description of resource
  2183.  93h 64 BYTEs    initialization string for modem
  2184.  B3h 32 BYTEs    dial string for modem
  2185.  D3h 32 BYTEs    hang-up string for modem
  2186. --------S-148007-----------------------------
  2187. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  2188.     AX = 8007h
  2189.     DX = port index (COM1=0, COM2=1, ...)
  2190.     ES:DI -> buffer for port information structure (see below)
  2191. Return: CF clear if redirection info returned and port is redirected
  2192.     CF set if not a redirected port
  2193.     AX = error code, if error (see AX=8003h)
  2194. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  2195.  
  2196. Format of port information structure:
  2197. Offset    Size    Description
  2198.  00h 16 BYTEs    server name resource is on
  2199.  10h    BYTE    adapter number server is on
  2200.  11h 16 BYTEs    resource name
  2201.  21h    WORD    remote port index, use to get additional information
  2202.  23h    WORD    buffer size
  2203.  25h    WORD    baud rate (see below)
  2204.  26h    BYTE    modem status register
  2205.  27h    BYTE    modem control register
  2206.  28h    BYTE    line status register
  2207.  29h    BYTE    line control register
  2208.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  2209.  2Bh    WORD    send timeout in ticks
  2210.  2Dh    WORD    receive timeout in ticks
  2211.  2Fh    WORD    time used on remote port
  2212.  31h    WORD    time left before timeout
  2213.  33h    BYTE    if server changes allowed?
  2214.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  2215.  
  2216. Values for baud rate:
  2217.  00h    110
  2218.  01h    150
  2219.  02h    300
  2220.  03h    600
  2221.  04h    1200
  2222.  05h    2400
  2223.  06h    4800
  2224.  07h    9600
  2225.  08h    19200
  2226.  09h    38400
  2227.  0Ah    57600
  2228.  0Bh    115200
  2229.  0Ch    134.5
  2230.  0Dh    1800
  2231.  0Eh    2000
  2232.  0Fh    3600
  2233.  10h    7200
  2234. --------S-148008-----------------------------
  2235. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  2236.     AX = 8008h
  2237.     BX = server index (0,1,...)
  2238.     ES:DI -> server name structure (see below)
  2239. Return: AX = error code, if error (see AX=8003h)
  2240.     BX = next remote port, repeat call to get next available server
  2241. Note:    the wildcard '*' is supported in the server name field.     Set the
  2242.       server name to FFh to search for all servers.
  2243. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  2244.  
  2245. Format of server name structure:
  2246. Offset     Size      Description
  2247.   00h 16 BYTEs      (call) ASCIZ server name
  2248.   10h     BYTE      (return) the adapter server is found
  2249. --------S-148009-----------------------------
  2250. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  2251.     AX = 8009h
  2252.     BX = send timeout in ticks
  2253.     CX = receive timeout in ticks
  2254.     DX = port index (COM1=0, COM2=1, ...)
  2255. Return: nothing
  2256. SeeAlso: AX=8000h,AX=800Ah
  2257. --------S-14800A-----------------------------
  2258. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  2259.     AX = 800Ah
  2260.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  2261.     DX = port index (COM1=0, COM2=1, ...)
  2262. Return: AX = error code, if error (see AX=8003h)
  2263. Note:    for attached ports only!
  2264. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  2265. --------S-148025-----------------------------
  2266. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  2267.     AX = 8025h
  2268.     DS:DX -> address of trap function (see below) to call on read/write
  2269. Note:    setting the vector to a user function allows the redirector's activity
  2270.       to be monitored.
  2271. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  2272.  
  2273. Trap function called with:
  2274.     AH = operation
  2275.         80h reading character
  2276.         81h writing character
  2277.     AL = character
  2278.     Return: AX must be preserved
  2279.         far JUMP to old trap function (see AX=8035h)
  2280. --------S-148035-----------------------------
  2281. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  2282.     AX = 8035h
  2283. Return: ES:BX -> address of current send/receive routine
  2284. Note:    this function returns the address of the routine which is called
  2285.       inside A-REDIR.EXE each time a character is received or sent on the
  2286.       active COM port.
  2287. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  2288. --------S-1481-------------------------------
  2289. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  2290.     AH = 81h
  2291.     AL = port number (1-4)
  2292. Return: AH = 00h port available
  2293.          01h port exists but already in use
  2294.          02h port nonexistent
  2295. Program: COURIERS is a TSR utility by PC Magazine
  2296. SeeAlso: AH=83h,AH=8Dh
  2297. --------S-1481-------------------------------
  2298. INT 14 - Egberto Willies COMM-DRV - EXTENDED INITIALIZATION
  2299.     AH = 81h
  2300.     BX:DI -> port control block
  2301. Return: ???
  2302. SeeAlso: AH=00h
  2303.  
  2304. Format of port control block:
  2305. Offset    Type    Description
  2306.  00h    WORD    port IO address
  2307.  02h    WORD    port IRQ
  2308.  04h    WORD    baud rate
  2309.  06h    WORD    parity
  2310.  08h    WORD    data bits
  2311.  0Ah    WORD    stop bits
  2312.  0Ch    WORD    break status
  2313.         0000h off
  2314.  0Eh    WORD    flow control protocol
  2315.  10h    BYTE    input block
  2316.  11h    BYTE    output block
  2317.  12h    WORD    low threshold
  2318.  14h    WORD    high threshold
  2319.  16h    WORD    segment of buffer
  2320.  18h    WORD    offset of buffer
  2321.  1Ah    WORD    input buffer length
  2322.  1Ch    WORD    output buffer length
  2323.  1Eh    BYTE    auxiliary address
  2324.  1Fh    BYTE    spare
  2325.  20h  4 WORDs    spares
  2326. --------V-148100-----------------------------
  2327. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  2328.     AX = 8100h
  2329.     ES:DI -> buffer for VFOSSIL information (see below)
  2330. Return: AX = 1954h if installed
  2331. SeeAlso: AH=7Eh,AX=8101h
  2332.  
  2333. Format of VFOSSIL information:
  2334. Offset    Size    Description
  2335.  00h    WORD    size of information in bytes, including this field
  2336.  02h    WORD    VFOSSIL major version
  2337.  04h    WORD    VFOSSIL revision level
  2338.  06h    WORD    highest VFOSSIL application function supported
  2339. --------V-148101-----------------------------
  2340. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  2341.     AX = 8101h
  2342.     ES:DI -> buffer for application function table (see below)
  2343.     CX = length of buffer in bytes
  2344. Return: AX = 1954h if installed
  2345.         BH = highest VFOSSIL application function supported
  2346. Note:    the number of initialized pointers in the application function table
  2347.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  2348.       will be initialized
  2349. SeeAlso: AX=8102h
  2350.  
  2351. Format of application function table:
  2352. Offset    Size    Description
  2353.  00h    DWORD    -> function to query current video mode (VioGetMode)
  2354.  04h    DWORD    -> function to set video mode (VioSetMode)
  2355.  08h    DWORD    -> function to query hardware config (VioGetConfig)
  2356.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY)
  2357.  10h    DWORD    -> function to get current ANSI state (VioGetANSI)
  2358.  14h    DWORD    -> function to set new ANSI state (VioSetANSI)
  2359.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  2360.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos)
  2361.  20h    DWORD    -> function to get cursor shape (VioGetCurType)
  2362.  24h    DWORD    -> function to set cursor shape (VioSetCurType)
  2363.  28h    DWORD    -> function to scroll screen up (VioScrollUp)
  2364.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn)
  2365.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  2366.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  2367.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  2368.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  2369.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  2370.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  2371.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  2372.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  2373.  
  2374. Format of video mode data structure:
  2375. Offset    Size    Description
  2376.  00h    WORD    length of structure including this field
  2377.  02h    BYTE    mode characteristics
  2378.         bit 0: clear if MDA, set otherwise
  2379.         bit 1: graphics mode
  2380.         bit 2: color disabled (black-and-white)
  2381.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  2382.  04h    WORD    number of text columns
  2383.  06h    WORD    number of text rows
  2384.  08h    WORD    reserved
  2385.  0Ah    WORD    reserved
  2386.  0Ch    DWORD    reserved
  2387.  
  2388. Format of video configuration data:
  2389. Offset    Size    Description
  2390.  00h    WORD    structure length including this field
  2391.  02h    WORD    adapter type
  2392.         00h monochrome/printer
  2393.         01h CGA
  2394.         02h EGA
  2395.         03h VGA
  2396.         07h 8514/A
  2397.  04h    WORD    display type
  2398.         00h monochrome
  2399.         01h color
  2400.         02h enhanced color
  2401.         09h 8514
  2402.  06h    DWORD    adapter memory size
  2403.  
  2404. Format of cursor type record:
  2405. Offset    Size    Description
  2406.  00h    WORD    cursor start line
  2407.  02h    WORD    cursor end line
  2408.  04h    WORD    cursor width (always 01h)
  2409.  06h    WORD    cursor attribute (FFFFh = hidden)
  2410.  
  2411. Call VioGetMode with:
  2412.     STACK:    WORD    VIO handle (must be 00h)
  2413.         DWORD    pointer to video mode data structure (see above)
  2414. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see below)
  2415.  
  2416. Values for error code:
  2417.  0000h    successful
  2418.  0074h    internal VIO failure
  2419.  0163h    unsupported mode
  2420.  0166h    invalid row value
  2421.  0167h    invalid column value
  2422.  017Eh    buffer too small
  2423.  01A5h    invalid VIO parameter
  2424.  01B4h    invalid VIO handle
  2425.  
  2426. Call VioSetMode with:
  2427.     STACK:    WORD    VIO handle (must be 00h)
  2428.         DWORD    pointer to video mode data structure (see above)
  2429. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
  2430.  
  2431. Call VioGetConfig with:
  2432.     STACK:    WORD    VIO handle (must be 00h)
  2433.         DWORD    pointer to video configuration data buffer (see above)
  2434. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
  2435.  
  2436. Call VioWrtTTY with:
  2437.     STACK:    WORD    VIO handle (must be 00h)
  2438.         WORD    length of string
  2439.         DWORD    pointer to character string to be written to screen
  2440. Return: AX = error code (00h, 74h, 1B4h) (see above)
  2441. Notes:    write wraps at end of line and terminates if it reaches end of screen
  2442.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  2443.       not required to be reentrant; in non-ANSI mode, the function is
  2444.       reentrant and may be called from within an MS-DOS function call
  2445.  
  2446. Call VioGetANSI with:
  2447.     STACK:    WORD    VIO handle (must be 00h)
  2448.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  2449.             or 01h if ANSI is on
  2450. Return: AX = error code (00h, 74h, 1B4h) (see above)
  2451.  
  2452. Call VioSetANSI with:
  2453.     STACK:    WORD    VIO handle (must be 00h)
  2454.         DWORD    pointer to WORD indicating new state of ANSI
  2455.             00h off
  2456.             01h on
  2457. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  2458.  
  2459. Call VioGetCurPos with:
  2460.     STACK:    WORD    VIO handle (must be 00h)
  2461.         DWORD    pointer to WORD to hold current cursor column (0-based)
  2462.         DWORD    pointer to WORD to hold current cursor row (0-based)
  2463. Return: AX = error code (00h, 74h, 1B4h) (see above)
  2464.  
  2465. Call VioSetCurPos with:
  2466.     STACK:    WORD    VIO handle (must be 00h)
  2467.         WORD    cursor column
  2468.         WORD    cursor row
  2469. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2470. Note:    if either coordinate is invalid, the cursor is not moved
  2471.  
  2472. Call VioGetCurType with:
  2473.     STACK:    WORD    VIO handle (must be 00h)
  2474.         DWORD    pointer to cursor type record (see above)
  2475. Return: AX = error code (00h, 74h, 1B4h) (see above)
  2476.  
  2477. Call VioSetCurType with:
  2478.     STACK:    WORD    VIO handle (must be 00h)
  2479.         DWORD    pointer to cursor type record (see above)
  2480. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  2481.  
  2482. Call VioScrollUp with:
  2483.     STACK:    WORD    VIO handle (must be 00h)
  2484.         DWORD    pointer to char/attr cell for filling emptied rows
  2485.         WORD    number or rows to scroll (FFFFh = clear area)
  2486.         WORD    right column of scroll area
  2487.         WORD    bottom row of scroll area
  2488.         WORD    left column of scroll area
  2489.         WORD    top row of scroll area
  2490. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2491.  
  2492. Call VioScrollDn with:
  2493.     STACK:    WORD    VIO handle (must be 00h)
  2494.         DWORD    pointer to char/attr cell for filling emptied rows
  2495.         WORD    number or rows to scroll (FFFFh = clear area)
  2496.         WORD    right column of scroll area
  2497.         WORD    bottom row of scroll area
  2498.         WORD    left column of scroll area
  2499.         WORD    top row of scroll area
  2500. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2501.  
  2502. Call VioReadCellStr with:
  2503.     STACK:    WORD    VIO handle (must be 00h)
  2504.         WORD    column at which to start reading
  2505.         WORD    row at which to start reading
  2506.         DWORD    pointer to WORD containing length of buffer in bytes
  2507.             on return, WORD contains number of bytes actually read
  2508.         DWORD    pointer to buffer for cell string
  2509. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  2510.  
  2511. Call VioReadCharStr with:
  2512.     STACK:    WORD    VIO handle (must be 00h)
  2513.         WORD    column at which to start reading
  2514.         WORD    row at which to start reading
  2515.         DWORD    pointer to WORD containing length of buffer in bytes
  2516.             on return, WORD contains number of bytes actually read
  2517.         DWORD    pointer to buffer for character string
  2518. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  2519.  
  2520. Call VioWrtCellStr with:
  2521.     STACK:    WORD    VIO handle (must be 00h)
  2522.         WORD    column at which to start writing
  2523.         WORD    row at which to start writing
  2524.         WORD    length of cell string in bytes
  2525.         DWORD    pointer to cell string to write
  2526. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2527. Note:    write wraps at end of line and terminates if it reaches end of screen
  2528.  
  2529. Call VioWrtCharStr with:
  2530.     STACK:    WORD    VIO handle (must be 00h)
  2531.         WORD    column at which to start writing
  2532.         WORD    row at which to start writing
  2533.         WORD    length of character string
  2534.         DWORD    pointer to character string to write
  2535. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2536. Note:    write wraps at end of line and terminates if it reaches end of screen
  2537.  
  2538. Call VioWrtCharStrAttr with:
  2539.     STACK:    WORD    VIO handle (must be 00h)
  2540.         DWORD    pointer to attribute to be applied to each character
  2541.         WORD    column at which to start writing
  2542.         WORD    row at which to start writing
  2543.         WORD    length of character string
  2544.         DWORD    pointer to character string to write
  2545. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2546. Note:    write wraps at end of line and terminates if it reaches end of screen
  2547.  
  2548. Call VioWrtNAttr with:
  2549.     STACK:    WORD    VIO handle (must be 00h)
  2550.         WORD    column at which to start writing
  2551.         WORD    row at which to start writing
  2552.         WORD    number of times to write attribute
  2553.         DWORD    pointer to display attribute to replicate
  2554. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2555. Note:    write wraps at end of line and terminates if it reaches end of screen
  2556.  
  2557. Call VioWrtNCell with:
  2558.     STACK:    WORD    VIO handle (must be 00h)
  2559.         WORD    column at which to start writing
  2560.         WORD    row at which to start writing
  2561.         WORD    number of times to write cell
  2562.         DWORD    pointer to cell to replicate
  2563. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2564. Note:    write wraps at end of line and terminates if it reaches end of screen
  2565.  
  2566. Call VioWrtNChar with:
  2567.     STACK:    WORD    VIO handle (must be 00h)
  2568.         WORD    column at which to start writing
  2569.         WORD    row at which to start writing
  2570.         WORD    number of times to write character
  2571.         DWORD    pointer to character to replicate
  2572. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  2573. Note:    write wraps at end of line and terminates if it reaches end of screen
  2574. --------V-148102-----------------------------
  2575. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  2576.     AX = 8102h
  2577. Return: AX = 1954h
  2578. Note:    terminates all operations; after this call, the video FOSSIL may either
  2579.       be removed from memory or reinitialized
  2580. SeeAlso: AX=8101h,AX=8103h
  2581. --------V-148103-----------------------------
  2582. INT 14 - VIDEO FOSSIL - UNINSTALL
  2583.     AX = 8103h
  2584. Return: AX = 1954h
  2585. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  2586. --------K-1482-------------------------------
  2587. INT 14 - KEYBOARD FOSSIL
  2588.     AH = 82h
  2589. SeeAlso: AH=7Eh
  2590. --------S-1482-------------------------------
  2591. INT 14 - COURIERS.COM - CONFIGURE PORT
  2592.     AH = 82h
  2593.     AL = port number (1-4)
  2594.     BX = speed (bps)
  2595.     CX = bit flags
  2596.         bit 0: enable input flow control
  2597.         bit 1: enable output flow control
  2598.         bit 2: use X.PC protocol (not yet implemented)
  2599. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  2600. ----------1483-------------------------------
  2601. INT 14 - SYSTEM FOSSIL
  2602.     AH = 83h
  2603. SeeAlso: AH=7Eh
  2604. --------S-1483-------------------------------
  2605. INT 14 - COURIERS.COM - START INPUT
  2606.     AH = 83h
  2607.     ES:BX -> circular input buffer
  2608.     CX = length of buffer
  2609.         (should be at least 128 bytes if input flow control enabled)
  2610. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  2611. --------S-1484-------------------------------
  2612. INT 14 - COURIERS.COM - READ CHARACTER
  2613.     AH = 84h
  2614. Return: ZF set if no characters available
  2615.     ZF clear
  2616.        AL = character
  2617.        AH = modem status bits
  2618.         bit 7: set on input buffer overflow
  2619. SeeAlso: AH=02h,AH=86h,AH=89h
  2620. --------S-1485-------------------------------
  2621. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  2622.     AH = 85h
  2623. SeeAlso: AH=0Ah,AH=88h
  2624. --------S-1486-------------------------------
  2625. INT 14 - COURIERS.COM - START OUTPUT
  2626.     AH = 86h
  2627.     ES:BX -> output buffer
  2628.     CX = length of output buffer
  2629. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  2630. --------S-1487-------------------------------
  2631. INT 14 - COURIERS.COM - OUTPUT STATUS
  2632.     AH = 87h
  2633. Return: AX = number of unsent characters
  2634. --------S-1488-------------------------------
  2635. INT 14 - COURIERS.COM - ABORT OUTPUT
  2636.     AH = 88h
  2637. SeeAlso: AH=09h,AH=85h
  2638. --------S-1489-------------------------------
  2639. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  2640.     AH = 89h
  2641.     CL = character to send
  2642. SeeAlso: AH=01h,AH=84h
  2643. --------S-148A-------------------------------
  2644. INT 14 - COURIERS.COM - SEND BREAK
  2645.     AH = 8Ah
  2646. SeeAlso: AH=89h,AH=FAh
  2647. --------S-148C-------------------------------
  2648. INT 14 - COURIERS.COM - SET SPEED
  2649.     AH = 8Ch
  2650.     BX = speed in bps
  2651. SeeAlso: AH=00h,AH=82h"COURIERS"
  2652. --------S-148D-------------------------------
  2653. INT 14 - COURIERS.COM - DECONFIGURE PORT
  2654.     AH = 8Dh
  2655. SeeAlso: AH=82h"COURIERS"
  2656. --------S-14A0-------------------------------
  2657. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  2658.     AH = A0h
  2659.     ES:BX -> ASCIZ internet host name
  2660.     CX = length of name
  2661. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see below)
  2662.     CL = session ID
  2663. Program: the Bridge Application Program Interface is a set of functions which
  2664.       makes many of the details of LAN communications transparent
  2665. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  2666. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  2667.  
  2668. Values for return code:
  2669.  00h    successful
  2670.  01h    no characters written
  2671.  02h    no characters read
  2672.  03h    no such session
  2673.  04h    clearinghouse name not found
  2674.  05h    no response from host
  2675.  06h    no more sessions available
  2676.  07h    session aborted
  2677.  08h    invalid clearinghouse name
  2678.  09h    not supported
  2679.  0Ah    internal (general) network error
  2680.  0Bh    out of memory
  2681.  0Ch    invalid IP address
  2682. --------S-14A0--CXFFFF-----------------------
  2683. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  2684.     AH = A0h
  2685.     CX = FFFFh
  2686. Return: CF clear if successful
  2687.         AX = 5445h ('TE')
  2688.         CX <> FFFFh
  2689.         DX = port number
  2690.     CF set on error
  2691. Program: TES is a network serial port emulation program
  2692. SeeAlso: AH=A1h"TES"
  2693. --------S-14A1-------------------------------
  2694. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  2695.     AH = A1h
  2696.     DH = session ID (00h for external session managment)
  2697. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  2698.     AL destroyed (Novell TELAPI.EXE)
  2699. SeeAlso: AH=A0h"BAPI"
  2700. --------S-14A1-------------------------------
  2701. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  2702.     AH = A1h
  2703. Return: CX = number of active sessions
  2704.     ES:SI -> status array (see below)
  2705. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  2706.  
  2707. Format of status array entry:
  2708. Offset    Size    Description
  2709.  00h    BYTE    status
  2710.  01h    WORD    offset of name
  2711. --------S-14A2-------------------------------
  2712. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  2713.     AH = A2h
  2714.     AL = character
  2715.     DH = session ID (00h for external session managment)
  2716. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  2717. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  2718. --------S-14A2-------------------------------
  2719. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  2720.     AH = A2h
  2721. Return: CX = number of servers
  2722.     ES:SI -> array of offsets from ES for server names
  2723. SeeAlso: AH=A1h"TES"
  2724. --------S-14A3-------------------------------
  2725. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  2726.     AH = A3h
  2727.     DH = session ID (00h for external session managment)
  2728. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  2729.     AL = character read or 00h if none available
  2730. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  2731. --------S-14A3-------------------------------
  2732. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  2733.     AH = A3h
  2734.     ES:SI -> ???
  2735. Return: CF clear if successful
  2736.         AX = 5445h ('TE')
  2737.         CX <> FFFFh
  2738.         DX = port number
  2739.     CF set on error
  2740. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  2741. --------S-14A4-------------------------------
  2742. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  2743.     AH = A4h
  2744.     CX = length of buffer in bytes
  2745.     DH = session ID (00h for external session managment)
  2746.     ES:BX -> buffer containing data
  2747. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  2748.     CX = number of bytes actually sent
  2749. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  2750. --------S-14A4-------------------------------
  2751. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  2752.     AH = A4h
  2753.     ???
  2754. Return: ???
  2755. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  2756. --------S-14A5-------------------------------
  2757. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  2758.     AH = A5h
  2759.     CX = length of buffer
  2760.     DH = session ID (00h for external session managment)
  2761.     ES:BX -> buffer for data
  2762. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  2763.     CX = number of bytes actually read
  2764. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  2765. SeeAlso: AH=A7h"BAPI",AX=FF02h
  2766. --------S-14A5-------------------------------
  2767. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  2768.     AH = A5h
  2769.     AL = session number
  2770. Return: ???
  2771. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  2772. --------S-14A6-------------------------------
  2773. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  2774.     AH = A6h
  2775.     DH = session ID (00h for external session managment)
  2776. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  2777. Desc:    generate a short break signal; if data delivery was turned off by the
  2778.       break, wait for the host to turn it on again
  2779. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  2780. --------S-14A6-------------------------------
  2781. INT 14 - Interconnections Inc. TES - DROP A SESSION
  2782.     AH = A6h
  2783.     AL = session number
  2784. Return: AH = status
  2785.         00h successful
  2786.         else error
  2787. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  2788. --------S-14A7-------------------------------
  2789. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  2790.     AH = A7h
  2791.     DH = session ID (00h for external session managment)
  2792. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  2793.     CX = number of bytes available for reading
  2794. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  2795. SeeAlso: AH=A5h"BAPI"
  2796. --------S-14A7-------------------------------
  2797. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  2798.     AH = A7h
  2799.     ???
  2800. Return: ???
  2801. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  2802. --------S-14A8-------------------------------
  2803. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  2804.     AH = A8h
  2805.     AL = 00h no visible response
  2806.     ES:SI -> ASCIZ command
  2807. Return: ???
  2808. --------N-14A8-------------------------------
  2809. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  2810.     AH = A8h
  2811.     DH = session ID???
  2812.     CH = subfunction
  2813.         02h ???
  2814.         0Dh ???
  2815.         0Fh ???
  2816.         10h ???
  2817.         11h ???
  2818.         28h ???
  2819.         else
  2820.         Return: AH = 09h (not supported)
  2821. Return: AH = return code (see AH=A0h"BAPI")
  2822.         00h successful
  2823.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  2824.         CL = ??? (7Fh/FFh) (subfunction 28h)
  2825.         CX = ??? (subfunction 11h)
  2826. SeeAlso: AH=A9h"TelAPI"
  2827. --------N-14A9-------------------------------
  2828. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  2829.     AH = A9h
  2830.     DH = session ID???
  2831.     CH = subfunction
  2832.         02h ???
  2833.         0Dh ???
  2834.         0Fh ???
  2835.         10h ???
  2836.         11h ???
  2837.         28h ???
  2838.         else
  2839.         Return: AH = 09h (not supported)
  2840.     ???
  2841. Return: AH = return code (see AH=A0h"BAPI")
  2842.     ???
  2843. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  2844. --------V-14AA01-----------------------------
  2845. INT 14 - DimVGA v2.0 - INSTALLATION CHECK
  2846.     AX = AA01h
  2847. Return: AX = FFFFh if installed, unchanged
  2848.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  2849. Program: DimVGA is a public domain screen saver by Menno Pieters
  2850. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0255h/BX=6900h,INT 12"KEYBUI"
  2851. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  2852. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  2853. SeeAlso: INT 2F/AX=E300h
  2854. Index:    screen saver;DimVGA
  2855. --------V-14AA02-----------------------------
  2856. INT 14 - DimVGA v2.0 - SET TIME-OUT (BLANKING) PERIOD
  2857.     AX = AA02h
  2858.     BX = number of clock ticks
  2859. Return: AX = FFFFh
  2860. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  2861. Index:    screen saver;DimVGA
  2862. --------V-14AA03-----------------------------
  2863. INT 14 - DimVGA v2.0 - SET DIMMING FACTOR
  2864.     AX = AA03h
  2865.     BX = percentage remaining visible (0-100)
  2866. Return: AX = FFFFh
  2867. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  2868. Index:    screen saver;DimVGA
  2869. --------V-14AA04-----------------------------
  2870. INT 14 - DimVGA v2.0 - GET TIME-OUT PERIOD
  2871.     AX = AA04h
  2872. Return: AX = FFFFh
  2873.     BX = current time-out in clock ticks
  2874. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  2875. Index:    screen saver;DimVGA
  2876. --------V-14AA05-----------------------------
  2877. INT 14 - DimVGA v2.0 - GET DIMMING FACTOR
  2878.     AX = AA05h
  2879. Return: AX = FFFFh
  2880.     BX = current dimming factor
  2881. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  2882. Index:    screen saver;DimVGA
  2883. --------V-14AA06-----------------------------
  2884. INT 14 - DimVGA v2.0 - DISABLE
  2885.     AX = AA06h
  2886. Return: AX = FFFFh
  2887. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  2888. Index:    screen saver;DimVGA
  2889. --------V-14AA07-----------------------------
  2890. INT 14 - DimVGA v2.0 - ENABLE
  2891.     AX = AA07h
  2892. Return: AX = FFFFh
  2893. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  2894. Index:    screen saver;DimVGA
  2895. --------V-14AA08-----------------------------
  2896. INT 14 - DimVGA v2.0 - DIM SCREEN 'MANUALLY'
  2897.     AX = AA08h
  2898. Return: AX = FFFFh
  2899. Note:    this function will dim the screen immediately, even if DimVGA is
  2900.       currently disabled
  2901. SeeAlso: AX=AA01h,AX=AA09h
  2902. Index:    screen saver;DimVGA
  2903. --------V-14AA09-----------------------------
  2904. INT 14 - DimVGA v2.0 - UNDIM SCREEN 'MANUALLY'
  2905.     AX = AA09h
  2906. Return: AX = FFFFh
  2907. Note:    this function will undim the screen immediately, even if DimVGA is
  2908.       currently disabled
  2909. SeeAlso: AX=AA01h,AX=AA08h
  2910. Index:    screen saver;DimVGA
  2911. --------V-14AA0A-----------------------------
  2912. INT 14 - DimVGA v2.0 - CHECK WHETHER ENABLED
  2913.     AX = AA0Ah
  2914. Return: AX = FFFFh
  2915.     BX = current state (0000h disabled, 0001h enabled)
  2916. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  2917. Index:    screen saver;DimVGA
  2918. --------S-14AF00BXAAAA-----------------------
  2919. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  2920.     AX = AF00h
  2921.     BX = AAAAh
  2922. Return: AX = AF01h if installed
  2923.         BH = protocol type (if BX=AAAAh on entry)
  2924.         01h NetManage TCP/IP
  2925.         BL = version for protocol type (if BX=AAAAh on entry)
  2926. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  2927.       behavior is used to determine whether the newer functions (AH=B0h,
  2928.       AH=B1h,etc) are available
  2929. SeeAlso: AH=A0h"BAPI"
  2930. --------S-14B0-------------------------------
  2931. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  2932.     AH = B0h
  2933.     AL = new state (00h disabled, 01h enabled)
  2934. Return: AH = return code (00h,07h,0Ah) (see AH=A0h"BAPI")
  2935. Note:    disabling the ECM character allows applications to send data which
  2936.       includes the ECM character
  2937. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  2938. --------S-14B1-------------------------------
  2939. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  2940.     AH = B1h
  2941. Return: AH = return code (00h,07h,0Ah) (see AH=A0h"BAPI")
  2942. Desc:    provide a means for the application or terminal emulator to perform
  2943.       the same action normally caused by the ECM character
  2944. SeeAlso: AH=B0h,AH=B2h
  2945. --------S-14B2-------------------------------
  2946. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  2947.     AH = B2h
  2948. Return: AH = return code (00h,07h,0Ah) (see AH=A0h"BAPI")
  2949.     AL = watch flag (00h disabled, 01h enabled)
  2950. Desc:    determine whether the ECM character is enabled
  2951. SeeAlso: AH=B0h,AH=B1h
  2952. --------S-14B3-------------------------------
  2953. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  2954.     AH = B3h
  2955.     AL = direction (00h get, 01h set)
  2956.     DH = session ID (00h for external session managment)
  2957.     DL = configuration item (00h = end-of-line mapping)
  2958.     CX = new configuration item value (if AL=01h)
  2959.         ---if DL=00h---
  2960.         CH = application EOL type (app to Telnet client)
  2961.         01h application will send lone CR
  2962.         02h application will send CR-? pair
  2963.         CL = driver EOL type (Telnet client to Telnet server)
  2964.         01h driver should send CR-NUL pair
  2965.         02h driver should send CR-LF pair
  2966. Return: AH = return code (00h,03h,09h-0Bh) (see AH=A0h"BAPI")
  2967.     ---if AL=00h---
  2968.     CX = configuration item value (see above)
  2969. SeeAlso: AH=B2h
  2970. --------N-14E0-------------------------------
  2971. INT 14 - TelAPI - ???
  2972.     AH = E0h
  2973.     BX = ???
  2974.     CX:DX = ???
  2975.     DS:DI -> ???
  2976.     ES:SI -> ???
  2977. Return: AX = status (0000h,FF37h,etc.)
  2978.     ES:SI -> ??? if ???
  2979.     ???
  2980. SeeAlso: AH=ECh,AX=FF00h
  2981. --------S-14E000-----------------------------
  2982. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  2983.     AX = E000h
  2984.     DX = port number (0-3)
  2985. Return: ES:BX -> status block (see below)
  2986. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  2987.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  2988.       the .DRV extension)
  2989. SeeAlso: AX=E006h
  2990.  
  2991. Format of status block:
  2992. Offset    Size    Description
  2993.  00h    BYTE    flag: active (00h no, 01h yes)
  2994.  01h    BYTE    MNP level (2,4,5)
  2995.  02h    BYTE    series ID from remote MNP
  2996.  03h    DWORD    total packets transmitted
  2997.  07h    DWORD    duplicate packets transmitted
  2998.  0Bh    DWORD    maximum speed
  2999.  0Fh    DWORD    total packets received
  3000.  13h    DWORD    duplicate packets received
  3001.  17h    DWORD    maximum speed
  3002. --------S-14E001-----------------------------
  3003. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  3004.     AX = E001h
  3005.     BH = function
  3006.         00h get MNP level
  3007.         01h set MNP level
  3008.         BL = new level (00h none, 02h/04h/05h MNP level N)
  3009.     DX = port number (0-3)
  3010. Return: BL = MNP level
  3011. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  3012. --------S-14E002-----------------------------
  3013. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  3014.     AX = E002h
  3015.     BH = function
  3016.         00h get answer/originate mode
  3017.         01h set mode
  3018.         BL = new mode (00h originate [default], 01h answer)
  3019.     DX = port number (0-3)
  3020. Return: BL = answer/originate mode
  3021. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  3022. --------S-14E003-----------------------------
  3023. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  3024.     AX = E003h
  3025.     BH = function
  3026.         00h get wait ticks
  3027.         01h set wait ticks
  3028.         BL = MNP wait ticks (default 0Eh)
  3029.     DX = port number (0-3)
  3030. Return: BL = wait ticks
  3031. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  3032. --------S-14E004-----------------------------
  3033. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  3034.     AX = E004h
  3035.     BH = function
  3036.         00h get sound level
  3037.         01h set sound level
  3038.         BL = new sound level (00h off, 01h on [default])
  3039.     DX = port number
  3040. Return: BL = sound state
  3041. Desc:    specify whether MX5 should generate beeps after an MNP connection
  3042.       (three high beeps if successful, high then low on connection failure)
  3043. SeeAlso: AX=E002h,AX=E006h
  3044. --------S-14E005-----------------------------
  3045. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  3046.     AX = E005h
  3047. Return: BX = segment of MX5's memory block or 0000h on failure
  3048. Note:    caller must free the returned memory block to complete the uninstall
  3049. SeeAlso: AX=E006h
  3050. --------S-14E006BX0000-----------------------
  3051. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  3052.     AX = E006h
  3053.     BX = 0000h
  3054. Return: BX = 4D58h ('MX') if installed
  3055.         AH = major version
  3056.         AL = minor version
  3057. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  3058. --------S-14E007-----------------------------
  3059. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  3060.     AX = E007h
  3061.     CX = number of ticks to wait
  3062. Return: nothing
  3063. SeeAlso: AX=E006h
  3064. --------N-14E1-------------------------------
  3065. INT 14 - TelAPI - ???
  3066.     AH = E1h
  3067.     BX = connection ID
  3068.     ???
  3069. Return: AX = status (0000h,FFF7h,maybe others)
  3070.     ???
  3071. SeeAlso: AH=E6h,AX=FF00h
  3072. --------N-14E2-------------------------------
  3073. INT 14 - TelAPI - BUFFERED READ
  3074.     AH = E2h
  3075.     BX = connection ID
  3076.     CX = length of buffer in bytes
  3077.     ES:SI -> buffer for data
  3078. Return: AX = number of characters actually read??? (negative on error)
  3079. SeeAlso: AH=E6h,AX=FF00h,INT 6B/AH=01h
  3080. --------N-14E3-------------------------------
  3081. INT 14 - TelAPI - BUFFERED WRITE
  3082.     AH = E3h
  3083.     BX = connection ID
  3084.     CX = length of buffer in bytes
  3085.     ES:SI -> buffer containing data
  3086. Return: AX = number of characters actually written??? (negative on error)
  3087. SeeAlso: AH=07h"TelAPI",AH=E6h,AX=FF00h,INT 6B/AH=00h
  3088. --------N-14E4-------------------------------
  3089. INT 14 - TelAPI - CONNECTION CONTROL???
  3090.     AH = E4h
  3091.     BX = connection ID
  3092.     CX = ???
  3093.     ES:SI -> 10-byte buffer containing ???
  3094. Return: ???
  3095. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  3096. --------N-14E5-------------------------------
  3097. INT 14 - TelAPI - ???
  3098.     AH = E5h
  3099. Return: AX = status???
  3100. SeeAlso: AH=E6h,AX=FF00h
  3101. --------N-14E6-------------------------------
  3102. INT 14 - TelAPI - ???
  3103.     AH = E6h
  3104. Return: AX = status???
  3105. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  3106.     this function invokes AH=E5h internally
  3107. SeeAlso: AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  3108. --------N-14E7-------------------------------
  3109. INT 14 - TelAPI - GET ???
  3110.     AH = E7h
  3111.     ES:SI -> 20-byte buffer for ???
  3112. Return: AX = 0000h (successful)
  3113.     ES:SI buffer filled
  3114. SeeAlso: AX=FF00h
  3115. --------N-14E8-------------------------------
  3116. INT 14 - TelAPI - SET ???
  3117.     AH = E8h
  3118.     BX = connection ID
  3119.     CL = new value for ???
  3120.     DX = ??? (ignored by Novell TELAPI v4.01)
  3121. Return: AX = status (0000h,FFFFh)
  3122. SeeAlso: AX=FF00h
  3123. --------N-14E9-------------------------------
  3124. INT 14 - TelAPI - ???
  3125.     AH = E9h
  3126.     DX = ???
  3127. Return: ???
  3128. SeeAlso: AX=FF00h
  3129. --------N-14EA-------------------------------
  3130. INT 14 - TelAPI - GET CONNECTION INFO???
  3131.     AH = EAh
  3132.     BX = connection ID
  3133.     ES:SI -> buffer for info???
  3134. Return: AX = status (0000h,FFFFh,etc.)
  3135. SeeAlso: AX=FF00h
  3136. --------N-14EB-------------------------------
  3137. INT 14 - TelAPI - GET ???
  3138.     AH = EBh
  3139.     ES:SI -> buffer for ???
  3140. Return: ES:SI buffer filled
  3141. SeeAlso: AX=FF00h
  3142. --------N-14EC-------------------------------
  3143. INT 14 - TelAPI - ???
  3144.     AH = ECh
  3145.     BX = ???
  3146.     CX:DX = ???
  3147.     DS:DI -> ???
  3148.     ES:SI -> ???
  3149. Return: AX = status (0000h,FF37h,etc.)
  3150.     ES:SI -> ??? if ???
  3151.     ???
  3152. Note:    this function is not supported by the Microdyne TelAPI v3.7
  3153. SeeAlso: AH=E0h"TelAPI",AX=FF00h
  3154. --------N-14ED-------------------------------
  3155. INT 14 - TelAPI - ???
  3156.     AH = EDh
  3157.     BX = connection ID
  3158. Return: AX = status (0000h,FFFFh,etc.)
  3159. Note:    this function is not supported by the Microdyne TelAPI v3.7
  3160. SeeAlso: AX=FF00h
  3161. --------a-14F0F0-----------------------------
  3162. INT 14 - ASAP v1.0 - ???
  3163.     AX = F0F0h
  3164.     DX = ???
  3165.     ???
  3166. Return: ???
  3167. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  3168.       MicroTalk
  3169. SeeAlso: AX=F0F1h
  3170. --------a-14F0F1DX0000-----------------------
  3171. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  3172.     AX = F0F1h
  3173.     DX = 0000h
  3174. Return: DX = segment of resident code
  3175.        = 0000h if not installed
  3176. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  3177.       MicroTalk
  3178. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  3179. --------S-14F4FF-----------------------------
  3180. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  3181.     AX = F4FFh
  3182.     DX = port (00h-03h)
  3183. Return: CF clear if present
  3184.         AX = 0000h
  3185.     CF set if not present
  3186.         AX <> 0000h
  3187. --------S-14F9-------------------------------
  3188. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  3189.     AH = F9h
  3190.     DX = port (00h-03h)
  3191. --------S-14FA-------------------------------
  3192. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  3193.     AH = FAh
  3194.     DX = port (00h-03h)
  3195. SeeAlso: AH=1Ah,AH=8Ah
  3196. --------S-14FB-------------------------------
  3197. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  3198.     AH = FBh
  3199.     AL = modem control register (see AH=05h)
  3200.     DX = port (00h-03h)
  3201. SeeAlso: AH=05h"SERIAL"
  3202. --------S-14FC-------------------------------
  3203. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  3204.     AH = FCh
  3205.     DX = port (00h-03h)
  3206. Return: AH = RS232 status bits (see AH=00h)
  3207.     AL = character
  3208. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  3209. --------S-14FD02-----------------------------
  3210. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  3211.     AX = FD02h
  3212. Return: CX = number of characters available
  3213. --------N-14FF00-----------------------------
  3214. INT 14 - TelAPI - INSTALLATION CHECK
  3215.     AX = FF00h
  3216. Return: AL = FFh if installed
  3217.     AH = 00h for Novell TELAPI.EXE
  3218. SeeAlso: AH=E6h
  3219. --------S-14FF01-----------------------------
  3220. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  3221.     AX = FF01h
  3222.     CX = length of buffer (0000h to cancel buffer assignment)
  3223.     DX = port (00h-03h)
  3224.     ES:BX -> send buffer
  3225. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  3226. --------S-14FF02-----------------------------
  3227. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  3228.     AX = FF02h
  3229.     CX = length of buffer (0000h to cancel buffer assignment)
  3230.     DX = port (00h-03h)
  3231.     ES:BX -> receive buffer
  3232. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF03h
  3233. --------t-15---------------------------------
  3234. INT 15 - Microsoft TSR Specification
  3235.     No additional information available at this time.
  3236. --------B-1500-------------------------------
  3237. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  3238.     AH = 00h
  3239. Return: CF set on error
  3240.         AH = 86h no cassette present
  3241.     CF clear if successful
  3242. SeeAlso: AH=01h"CASSETTE"
  3243. --------M-1500-------------------------------
  3244. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  3245.     AH = 00h
  3246. Return: CX = signed X count
  3247.     DX = signed Y count
  3248. --------O-1500-------------------------------
  3249. INT 15 - VMiX v2+ - INSTALLATION CHECK
  3250.     AH = 00h
  3251. Return: DX = 0798h if installed
  3252.         AX = version (AH = major, AL = minor)
  3253. --------T-1500-------------------------------
  3254. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  3255.     AH = 00h
  3256. Note:    if issued by the highest-priority task while MultiDOS is using
  3257.       priority-based rather than round-robin scheduling, control will be
  3258.       returned to the caller immediately
  3259. SeeAlso: AH=03h"MultiDOS",AX=1000h
  3260. --------B-1501-------------------------------
  3261. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  3262.     AH = 01h
  3263. Return: CF set on error
  3264.         AH = 86h no cassette present
  3265.     CF clear if successful
  3266. SeeAlso: AH=00h"CASSETTE"
  3267. --------b-1501-------------------------------
  3268. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  3269.     AH = 01h
  3270.     AL = NVRAM location (00h to 3Fh)
  3271.     BL = NVRAM data value
  3272. Return: AH = return code
  3273.         00h OK
  3274.         01h address bad
  3275.         02h write error
  3276. SeeAlso: AH=02h"Amstrad"
  3277.  
  3278. Format of NVRAM:
  3279. Offset    Size    Description
  3280.  00h    BYTE    time of day: seconds
  3281.  01h    BYTE    alarm time: seconds
  3282.  02h    BYTE    time of day: minutes
  3283.  03h    BYTE    alarm time: minutes
  3284.  04h    BYTE    time of day: hours
  3285.  05h    BYTE    alarm time: hours
  3286.  06h    BYTE    day of week, 1 = Sunday
  3287.  07h    BYTE    day of month
  3288.  08h    BYTE    month
  3289.  09h    BYTE    year mod 100
  3290.  0Ah    BYTE    RTC status register A (see below)
  3291.  0Bh    BYTE    RTC status register B (see below)
  3292.  0Ch    BYTE    RTC status register C (read-only) (see below)
  3293.  0Dh    BYTE    RTC status register D
  3294.         bit 7: battery good
  3295.  0Eh  6 BYTEs    time and date machine last used
  3296.  14h    BYTE    user RAM checksum
  3297.  15h    WORD    Enter key scancode/ASCII code
  3298.  17h    WORD    Forward delete key scancode/ASCII code
  3299.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  3300.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  3301.  1Dh    WORD    mouse button 1 scancode/ASCII code
  3302.  1Fh    WORD    mouse button 2 scancode/ASCII code
  3303.  21h    BYTE    mouse X scaling factor
  3304.  22h    BYTE    mouse Y scaling factor
  3305.  23h    BYTE    initial VDU mode and drive count
  3306.  24h    BYTE    initial VDU character attribute
  3307.  25h    BYTE    size of RAM disk in 2K blocks
  3308.  26h    BYTE    initial system UART setup byte
  3309.  27h    BYTE    initial external UART setup byte
  3310.  28h 24 BYTEs    available for user application
  3311. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  3312.       the clock chip
  3313.  
  3314. Bitfields for RTC status register A:
  3315. Bit(s)    Description
  3316.  7    set if date/time being updated
  3317.  6-4    time base speed, default 010 = 32768 Hz
  3318.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  3319.  
  3320. Bitfields for RTC status register B:
  3321. Bit(s)    Description
  3322.  7    clear if normal update, set if abort update
  3323.  6    periodic interrupt enable
  3324.  5    alarm interrupt enable
  3325.  4    update end interrupt enable
  3326.  3    square wave enable
  3327.  2    date mode (clear = BCD, set = binary)
  3328.  1    24-hour format
  3329.  0    daylight saving time enable
  3330.  
  3331. Bitfields for RTC status register C:
  3332. Bit(s)    Description
  3333.  7    IRQF flag
  3334.  6    PF flag
  3335.  5    AF flag
  3336.  4    UF flag
  3337. --------O-1501-------------------------------
  3338. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  3339.     AH = 01h
  3340.     STACK:    WORD    object ID of requestor
  3341.         DWORD    pointer to ASCIZ name of requested method
  3342.             "assign" assign channel to object
  3343.             "deassign" deassign channel
  3344.             "cursor" set cursor on/off
  3345.             "init" initialize comm port
  3346.             "open" open I/O channel
  3347.             "position" set cursor position
  3348.             "receive" get buffered packet from comm port
  3349.             "send" send buffered packet to comm port
  3350.             "vio" set current virtual I/O to specified channel
  3351.             "window" make window at cursor position
  3352.         ---if "assign"---
  3353.          WORD    object UID
  3354.          WORD    caller UID/PID
  3355.          DWORD    CSL with port
  3356.         ---if "deassign"---
  3357.          WORD    channel ID
  3358.         ---if "cursor"---
  3359.          WORD    channel ID (must be a SRCSINK)
  3360.          WORD    new state (0000h off, 0001h on)
  3361.         ---if "init"---
  3362.          WORD    channel ID (must be a SRCSINK)
  3363.          WORD    comm port number (00h-03h)
  3364.          WORD    UART init code
  3365.         ---if "open"---
  3366.          WORD    channel ID
  3367.         ---if "position"---
  3368.          WORD    channel ID (must be a SRCSINK)
  3369.          WORD    position (high byte = row, low byte = column)
  3370.         ---if "receive"---
  3371.          DWORD    pointer to buffer
  3372.         ---if "send"---
  3373.          WORD    length of buffer
  3374.          DWORD    pointer to buffer
  3375.         ---if "vio"---
  3376.          WORD    channel ID (must be a SRCSINK)
  3377.         ---if "window"---
  3378.          WORD    top left (high byte = row, low byte = column)
  3379.          WORD    bottom right (high byte = row, low byte = column)
  3380. Return: DX:AX -> IRP structure or 0000h:0000h
  3381. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  3382. --------T-1501-------------------------------
  3383. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  3384.     AH = 01h
  3385.     AL = semaphore number (00h-3Fh)
  3386. Return: AH = status
  3387.         00h successful
  3388.         02h invalid semaphore number
  3389. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  3390.       task and the call returns immediately
  3391.     if the semaphore is already owned by another task, the calling task
  3392.       is placed on a queue for the semaphore and suspended until it can
  3393.       become owner of the semaphore
  3394.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  3395. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  3396. --------B-1502-------------------------------
  3397. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  3398.     AH = 02h
  3399.     CX = number of bytes to read
  3400.     ES:BX -> buffer
  3401. Return: CF clear if successful
  3402.         DX = number of bytes read
  3403.         ES:BX -> byte following last byte read
  3404.     CF set on error
  3405.     AH = status (see below)
  3406. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  3407.  
  3408. Values for status:
  3409.  00h    successful
  3410.  01h    CRC error
  3411.  02h    bad tape signals
  3412.  04h    no data
  3413.  80h    invalid command
  3414.  86h    no cassette present
  3415. --------b-1502-------------------------------
  3416. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  3417.     AH = 02h
  3418.     AL = NVRAM location (00h to 3Fh)
  3419. Return: AH = return code
  3420.         00h OK
  3421.         01h address bad
  3422.         02h checksum error
  3423.     AL = NVRAM data value
  3424. SeeAlso: AH=01h"Amstrad"
  3425. --------O-1502-------------------------------
  3426. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  3427.     AH = 02h
  3428.     STACK:    WORD    object ID of requestor
  3429.         DWORD    pointer to ASCIZ name of requested method
  3430.             "assign" allocate low memory block
  3431.             "assign extended" allocate extended memory pages
  3432.             "assign gdt" allocate GDT selector
  3433.             "paged" allocate low paged memory
  3434.             "paged extended" alllocate extended memory pages
  3435.             "deassign" free memory block
  3436.             "deassign gdt" free GDT selector
  3437.             "getvpage" get physical address for virtual page
  3438.             "setvpage" set physical address for virtual page
  3439.             "info" get VMiX memory usage info block
  3440.             "move" move contents of 32-bit memory
  3441.             "newmcb" make new DOS memory control block
  3442.             "owner" get process ID of MCB or PSP owner
  3443.             "umb" allocate upper memory block
  3444.             "video" toggle system use of vidoe memory and get stat
  3445.         ---if "assign"---
  3446.          WORD    number of objects
  3447.          WORD    size in bytes (multiple of 512 bytes)
  3448.         ---if "assign extended"---
  3449.          WORD    number of objects
  3450.          WORD    size in bytes (multiple of 4K)
  3451.         ---if "assign gdt"---
  3452.          WORD    access type (low byte)
  3453.          WORD    segment size in paragraphs
  3454.          DWORD    pointer to start of physical segment
  3455.         ---if "paged"---
  3456.          WORD    number of 512-byte pages
  3457.         ---if "paged extended"
  3458.          WORD    number of 4K pages
  3459.         ---if "deassign"---
  3460.          DWORD    pointer returned by previous allocation call
  3461.         ---if "deassign gdt"---
  3462.          WORD    GDT selector
  3463.         ---if "getvpage"---
  3464.          WORD    owner's process ID
  3465.          DWORD    pointer to buffer for page structure (struct VPGE)
  3466.         ---if "setvpage"---
  3467.          WORD    owner's process ID
  3468.          DWORD    pointer to new page structure (struct VPGE)
  3469.         ---if "info"---
  3470.          no additional arguments
  3471.         ---if "move"
  3472.          DWORD    32-bit source address
  3473.          DWORD    32-bit destination address
  3474.          WORD    number of words to move
  3475.         ---if "newmcb"---
  3476.          DWORD    pointer to new MCB's location
  3477.          WORD    size of memory block
  3478.          DWORD    pointer to ASCIZ name string (max 8 chars)
  3479.         ---if "owner"---
  3480.          WORD    MCB or PSP segment
  3481.         ---if "umb"---
  3482.          WORD    size in paragraphs
  3483.         ---if "video"---
  3484.          no additional arguments
  3485. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  3486. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  3487. --------T-1502-------------------------------
  3488. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  3489.     AH = 02h
  3490.     AL = semaphore number (00h-3Fh)
  3491. Return: AH = status
  3492.         00h successful
  3493.         01h not semaphore owner
  3494.         02h invalid semaphore number
  3495. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  3496.       queue will become the new owner and be reawakened
  3497.     do not use within an interrupt handler
  3498. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  3499. --------B-1503-------------------------------
  3500. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  3501.     AH = 03h
  3502.     CX = number of bytes to write
  3503.     ES:BX -> data buffer
  3504. Return: CF clear if successful
  3505.         ES:BX -> byte following last byte written
  3506.     CF set on error
  3507.     AH = status (see AH=02h"CASSETTE")
  3508.     CX = 0000h
  3509. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  3510. --------V-1503-------------------------------
  3511. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  3512.     AH = 03h
  3513.     AL = value (I,R,G,B bits)
  3514. SeeAlso: AH=04h"Amstrad"
  3515. --------O-1503-------------------------------
  3516. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  3517.     AH = 03h
  3518.     STACK:    DWORD    pointer to ASCII prompt
  3519.         WORD    field outline character
  3520.         WORD    length of input field (max 7Fh)
  3521.         DWORD    address of pointer to input buffer
  3522. Return: AX = length of input (input buffer is padded with blanks)
  3523. SeeAlso: AH=04h"VMiX"
  3524. --------T-1503-------------------------------
  3525. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  3526.     AH = 03h
  3527.     DX = number of time slices to remain suspended
  3528. Return: after specified interval has elapsed
  3529. Note:    when priority-based scheduling is in use, high-priority tasks should
  3530.       use this function to yield the processor
  3531. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  3532. --------B-1504-------------------------------
  3533. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  3534.     AH = 04h
  3535.     ES:DI -> results buffer length 20h for System Parameter Table
  3536.     DS = segment containing ABIOS RAM extensions (zero if none)
  3537. Return: AH = 00h success: results at ES:DI
  3538.     CF set on failure
  3539. SeeAlso: AH=05h"ABIOS",C1h
  3540.  
  3541. Format of ABIOS System Parameter Table:
  3542. Offset    Size    Description
  3543.  00h    DWORD    FAR address of ABIOS Common Start Routine
  3544.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  3545.  08h    DWORD    FAR address of ABIOS Time-out Routine
  3546.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  3547.  0Eh 16 BYTEs    reserved
  3548.  1Eh    WORD    number of entries in initialization table
  3549. --------V-1504-------------------------------
  3550. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  3551.     AH = 04h
  3552.     AL = value (RDSEL1 and RDSEL0)
  3553. SeeAlso: AH=03h"Amstrad",05h"Amstrad"
  3554. --------O-1504-------------------------------
  3555. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  3556.     AH = 04h
  3557.     STACK:    DWORD    control string
  3558.         DWORD    array of arguments
  3559. SeeAlso: AH=03h"VMiX"
  3560. --------T-1504-------------------------------
  3561. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  3562.     AH = 04h
  3563.     AL = mailbox number (00h-3Fh)
  3564.     CX = message length in bytes
  3565.     DS:SI -> message
  3566. Return: AH = status
  3567.         00h successful
  3568.         01h out of message memory
  3569.         02h invalid mailbox number
  3570. Note:    the message is copied into a system buffer; the caller may immediately
  3571.       reuse its buffer
  3572. SeeAlso: AH=05h"MultiDOS"
  3573. --------B-1505-------------------------------
  3574. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  3575.     AH = 05h
  3576.     ES:DI -> results buffer length (18h * Number_of_Entries)
  3577.     DS = segment containing ABIOS RAM extensions (zero if none)
  3578. Return: AH = 00h success: results at ES:DI
  3579.     CF set on failure
  3580. SeeAlso: AH=04h"ABIOS",C1h
  3581.  
  3582. Format of one entry of ABIOS Initialization Table:
  3583. Offset    Size    Description
  3584.  00h    WORD    device ID
  3585.  02h    WORD    number of Logical IDs
  3586.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  3587.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  3588.  0Ah    WORD    request block length
  3589.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  3590.  0Eh    WORD    Data Pointers length (in Common Data Area)
  3591.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  3592.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  3593.  12h  6 BYTEs    reserved
  3594. --------V-1505-------------------------------
  3595. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  3596.     AH = 05h
  3597.     AL = value (I,R,G,B bits)
  3598. SeeAlso: AH=04h"Amstrad"
  3599. --------O-1505-------------------------------
  3600. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  3601.     AH = 05h
  3602. Return: AX = process ID
  3603. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  3604. --------T-1505-------------------------------
  3605. INT 15 - MultiDOS Plus - CHECK MAILBOX
  3606.     AH = 05h
  3607.     AL = mailbox number (00h-3Fh)
  3608. Return: AH = status
  3609.         00h successful
  3610.         DX = length of first message in queue, 0000h if no message
  3611.         02h invalid mailbox number
  3612. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  3613. --------b-1506-------------------------------
  3614. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  3615.     AH = 06h
  3616. Return: BX = version number
  3617. --------O-1506-------------------------------
  3618. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  3619.     AH = 06h
  3620.     STACK:    WORD    process ID
  3621. Return: DX:AX -> process control block
  3622. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  3623. --------T-1506-------------------------------
  3624. INT 15 - MultiDOS Plus - READ MAILBOX
  3625.     AH = 06h
  3626.     AL = mailbox number (00h-3Fh)
  3627.     CX = size of buffer in bytes
  3628.     ES:DI -> buffer for message
  3629. Return: AH = status
  3630.         00h successful
  3631.         CX = number of bytes copied
  3632.         DX = actual length of message
  3633.         02h invalid mailbox number
  3634. Note:    if the caller's buffer is not large enough, the message is truncated
  3635.       and the remainder is lost
  3636. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  3637. --------O-1507-------------------------------
  3638. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  3639.     AH = 07h
  3640.     STACK:    WORD    object type
  3641. Return: DX:AX -> object control block
  3642. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  3643. --------T-1507-------------------------------
  3644. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  3645.     AH = 07h
  3646.     BX:CX = entry point of new task
  3647.     DX = stack size in paragraphs
  3648. Return: AH = status
  3649.         00h successful
  3650.         01h no free task control blocks
  3651.         02h no free memory for task's stack
  3652. Note:    execution returns immediately to calling task
  3653. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  3654. --------O-1508-------------------------------
  3655. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  3656.     AH = 08h
  3657.     STACK:    WORD    channel ID
  3658. Return: DX:AX -> channel control block
  3659. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  3660. --------T-1508-------------------------------
  3661. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  3662.     AH = 08h
  3663. Return: calling task terminated, so execution never returns to caller
  3664. Notes:    an internal task must be terminated with this function rather than a
  3665.       DOS termination function
  3666.     task's stack space is returned to parent task's memory pool
  3667. SeeAlso: AH=07h"MultiDOS"
  3668. --------O-1509-------------------------------
  3669. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  3670.     AH = 09h
  3671.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  3672.         WORD    subqueue ID
  3673. Return: AX = queue ID
  3674. SeeAlso: AH=0Ah"VMiX"
  3675. --------T-1509-------------------------------
  3676. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  3677.     AH = 09h
  3678.     AL = new priority
  3679. Note:    the priority has different meanings depending on whether priority-
  3680.       based or round-robin scheduling is used
  3681. SeeAlso: AH=07h"MultiDOS"
  3682. --------O-150A-------------------------------
  3683. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  3684.     AH = 0Ah
  3685.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  3686.         WORD    ID of current element in queue chain
  3687. Return: AX = ID of next element
  3688. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  3689. --------T-150A-------------------------------
  3690. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  3691.     AH = 0Ah
  3692.     AL = new interval
  3693.         00h = 55.0 ms (default)
  3694.         80h = 27.5 ms
  3695.         40h = 13.75 ms
  3696.         20h = 6.88 ms
  3697.         10h = 3.44 ms
  3698.         08h = 1.72 ms
  3699. SeeAlso: AH=03h"MultiDOS"
  3700. --------O-150B-------------------------------
  3701. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  3702.     AH = 0Bh
  3703.     STACK:    WORD    caller's UID
  3704.         DWORD    pointer to ASCIZ name of requested method
  3705.             "abort" abort current send/receive on comm port
  3706.             "block" start/end critical section
  3707.             "close" terminate interrupt-drive comm I/O
  3708.             "open" prepare comm port for interrupt-driven I/O
  3709.             "delay" set delay timer and wait
  3710.             "hibernate" put process to sleep
  3711.             "ints" enable/disable interrupt-driven INT 14h
  3712.             "length" get current send/receive buffer offsets
  3713.             "kswitch" switch stacks
  3714.             "numproc" get number of active processes
  3715.             "protocol" set protocol function for comm interrupts
  3716.             "relocate" set/reset VMiX flag for relocating to himem
  3717.             "status" get current open comm port status
  3718.             "wake" awaken a process
  3719.             "xport" get comm port polled for logins
  3720.         ---if "abort"---
  3721.          no additional arguments
  3722.         ---if "block"---
  3723.          WORD    0000h end, 0001h start
  3724.         ---if "close"---
  3725.          no additional arguments
  3726.         ---if "open"---
  3727.          WORD    comm port (00h-03h)
  3728.          WORD    BIOS parameter byte (see INT 14/AH=00h), except
  3729.             bits 7-5 = 000 for 19200, 001 for 38400, 011 for 115200
  3730.         ---if "delay"---
  3731.          WORD    time in seconds
  3732.         ---if "hibernate"---
  3733.          WORD    process ID
  3734.         ---if "ints"---
  3735.          WORD    0000h if no, 0001h if yes
  3736.         ---if "length","numproc","relocate","status","xport"---
  3737.          no additional arguments
  3738.         ---if "kswitch"---
  3739.          DWORD    pointer to new stack
  3740.         ---if "protocol"---
  3741.          DWORD    pointer to function (must be in low "assign"ed memory
  3742.             when in 386 mode)
  3743.         ---if "wake"---
  3744.          WORD    process ID
  3745. Return: DX:AX -> result or 0000h:0000h
  3746.         ---if "length"---
  3747.          BYTE    receive offset
  3748.          BYTE    send offset
  3749.         ---if "kswitch"---
  3750.          DWORD    old stack pointer
  3751.         ---if "numproc"---
  3752.          WORD    number of active processes
  3753.         ---if "status"---
  3754.          current open comm port status
  3755.         ---if "xport"---
  3756.          current comm port being polled for logins
  3757. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  3758. --------T-150B-------------------------------
  3759. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  3760.     AH = 0Bh
  3761. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  3762.       may be restored with AH=0Ch
  3763.     caller's video mode must be same as foreground task's video mode
  3764.     any text written while in the background will be saved to the
  3765.       foreground task's virtual screen when it switches to the background
  3766.     useful if a background task wants to display a message on the
  3767.       foreground screen
  3768. SeeAlso: AH=0Ch"MultiDOS"
  3769. --------O-150C-------------------------------
  3770. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  3771.     AH = 0Ch
  3772.     STACK:    WORD    process ID
  3773. Return: DX:AX -> TSS stack store
  3774. SeeAlso: AH=00"VMiX"
  3775. --------T-150C-------------------------------
  3776. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  3777.     AH = 0Ch
  3778. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  3779.       unless AH=0Bh has been called first
  3780. SeeAlso: AH=0Bh"MultiDOS"
  3781. --------O-150D-------------------------------
  3782. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  3783.     AH = 0Dh
  3784.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  3785.             followed by standard VMiX shell command string
  3786. Return: AX = process ID or error code "SYS_ERROR"
  3787. Note:    the maximum string length is 7Fh characters
  3788. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  3789. --------T-150D-------------------------------
  3790. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  3791.     AH = 0Dh
  3792. Note:    calling task receives all time slices until AH=0Eh is called; this
  3793.       allows time-critical events or nonreentrant code to be processed
  3794. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  3795. --------O-150E-------------------------------
  3796. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  3797.     AH = 0Eh
  3798.     STACK:    WORD    process ID
  3799. Return: AX = status (SYS_OK or SYS_ERROR)
  3800. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  3801. --------T-150E-------------------------------
  3802. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  3803.     AH = 0Eh
  3804. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  3805. --------d-150F-------------------------------
  3806. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  3807.     AH = 0Fh
  3808.     AL = phase code
  3809.         00h reserved
  3810.         01h surface analysis
  3811.         02h formatting
  3812. Return: CF clear if formatting should continue, set if it should terminate
  3813. Note:    called during ESDI drive formatting after each cylinder is completed
  3814. SeeAlso: INT 13/AH=1Ah
  3815. --------O-150F-------------------------------
  3816. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  3817.     AH = 0Fh
  3818.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  3819.         WORD    ID of element in queue chain
  3820. Return: AX = key
  3821. SeeAlso: AH=0Ah"VMiX"
  3822. --------T-150F-------------------------------
  3823. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  3824.     AH = 0Fh
  3825.     DS:BX -> ASCIZ command
  3826. Return: after command has been processed
  3827. Notes:    specified string is executed as if it had been typed at the MultiDOS
  3828.       command prompt
  3829.     the task is placed on a queue which MultiDOS examines periodically and
  3830.       is suspended until MultiDOS has processed the command
  3831.     all lowercase characters up to the first blank are converted to upper
  3832.       case within the given buffer
  3833. --------O-1510-------------------------------
  3834. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  3835.     AH = 10h
  3836.     STACK:    DWORD    pointer to function
  3837.           N WORDs    function args
  3838. Return: AX = function's return value??? (not specified in documentation)
  3839. Note:    while the function is executing, the following global descriptors are
  3840.       available:
  3841.         20h stack segment
  3842.         38h code segment of function
  3843.         40h data alias for function's code segment
  3844.       additional GDT descriptors can be allocated using AH=02h with
  3845.       function "assign gdt"
  3846. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  3847. --------T-1510-------------------------------
  3848. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  3849.     AH = 10h
  3850.     AL = semaphore number (00h-3Fh)
  3851. Return: AH = status
  3852.         00h semaphore not in use
  3853.         01h semaphore owned by another task
  3854.         02h invalid semaphore number
  3855.         03h semaphore owned by caller
  3856. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  3857. --------Q-151000-----------------------------
  3858. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  3859.     AX = 1000h
  3860. Return: after other processes run
  3861. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  3862.       the current time-slice is set to expire at the next clock tick rather
  3863.       than immediately
  3864. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  3865. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 7A/BX=000Ah
  3866. SeeAlso: INT 7F/AH=E8h
  3867. --------Q-151001-----------------------------
  3868. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  3869.     AX = 1001h
  3870.     BX = number of bytes to allocate
  3871. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  3872.     AX = status (DV v2.42)
  3873.         0000h successful
  3874.         0001h failed
  3875. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  3876.       common memory.  Under DV v2.42, this call never generates a user
  3877.       prompt regardless of the SETERROR value; instead, it always returns
  3878.       AX=0001h and ES:DI=0000h:0000h if out of memory
  3879. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  3880. --------Q-151002-----------------------------
  3881. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  3882.     AX = 1002h
  3883.     ES:DI -> previously allocated block
  3884. Return: block freed
  3885. SeeAlso: AX=1001h,AX=DE0Dh
  3886. --------Q-151003-----------------------------
  3887. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  3888.     AX = 1003h
  3889.     BH = attribute
  3890.     BL = character
  3891.     DX = segment of object handle for window
  3892. Note:    BX=0 does not display anything, it only positions the hardware cursor
  3893. --------Q-1510-------------------------------
  3894. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  3895.     AH = 10h
  3896.     AL = 04h thru 12h
  3897. Return: pops up "Programming error" window in DV 2.x
  3898. --------Q-151013-----------------------------
  3899. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  3900.     AX = 1013h
  3901.     ES:DI -> FAR service routine
  3902. Return: BX = bit mask indicating which bit was allocated
  3903.          0000h if no more bits available
  3904. SeeAlso: AX=1014h,AX=1015h
  3905. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  3906.       interrupt; if other calls need to be made, the interrupt handler
  3907.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  3908. --------Q-151014-----------------------------
  3909. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  3910.     AX = 1014h
  3911.     BX = bit mask from INT 15/AX=1013h
  3912. SeeAlso: AX=1013h,AX=1015h
  3913. --------Q-151015-----------------------------
  3914. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  3915.     AX = 1015h
  3916.     BX = bit mask for interrupts to post
  3917. Return: indicated routines will be called: (DV 2.0x) at next task switch
  3918.                        (DV 2.2x) immediately on return from
  3919.                              hardware interrupt
  3920. SeeAlso: AX=1013h,AX=1014h
  3921. Notes:    this is one of the few TopView calls which are allowed from a hardware
  3922.       interrupt handler
  3923.     the handler will be called with ES containing the segment of the handle
  3924.       of the next task to be executed; on return, ES must be the segment of
  3925.       a task handle
  3926. --------Q-151016-----------------------------
  3927. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  3928.     AX = 1016h
  3929.     ES:DI = possible object handle
  3930. Return: BX = FFFFh if ES:DI is a valid object handle
  3931.          0000h if ES:DI is not
  3932. Note:    under DESQview versions prior to 2.50, an object handle is always a
  3933.       pointer to the object; for versions 2.50 and up, only task handles
  3934.       are always pointers (other handles may consist of a unique object
  3935.       number and offset into DESQview's common memory)
  3936. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  3937.  
  3938. Format of object:
  3939. Offset    Size    Description
  3940.  00h    WORD    offset in common memory of previous object of same type
  3941.  02h    WORD    offset in common memory of next object of same type
  3942.  04h    WORD    signature FEDCh (DV 2.42-)
  3943.         signature FEDCh or object number (DV 2.50+)
  3944.  06h    WORD    object type
  3945.         00h window/task
  3946.         01h mailbox
  3947.         02h keyboard
  3948.         03h timer
  3949.         04h pointer
  3950.         05h panel
  3951.         06h objectq
  3952.  08h    DWORD    object handle to return to caller
  3953.  0Ch    DWORD    canonicalized object address (segment = common memory)
  3954.  10h    WORD    offset in common memory of owning task
  3955.         (0000h for unowned OBJECTQs)
  3956.  12h    WORD    mapping context
  3957.         offset in common memory of mapping context record (see below)
  3958.     remainder varies by object type and DESQview version
  3959. ---v2.42 keyboard object---
  3960.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  3961.         bit 15: keyboard opened
  3962.  16h  4 BYTEs    ???
  3963.  1Ah    WORD    priority in OBJECTQ???
  3964.  1Ch    ...
  3965.  25h    WORD    offset in common memory of ??? task
  3966.  27h  4 BYTEs    ???
  3967. ---v2.42 objectq object---
  3968.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  3969.         bit 15: OBJECTQ opened
  3970.  16h  2 BYTEs    ???
  3971.  18h    WORD    offset in common memory of ??? task
  3972.  1Ah  6 BYTEs    ???
  3973. ---v2.42 mailbox object---
  3974.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  3975.         bit 15: mailbox opened
  3976.  1Ah    WORD    priority in OBJECTQ???
  3977.  1Ch  6 BYTEs    ???
  3978.  22h    WORD    offset in common memory of mailbox name (counted string)
  3979.         0000h if no name
  3980.      <= 5 BYTEs ???
  3981. ---v2.22-2.42,2.52,2.60 window/task object---
  3982.  14h    BYTE    00h window, 01h task
  3983.  15h    BYTE    internal (not Switch menu) window number???
  3984.  16h    BYTE    internal (not Switch menu) window number???
  3985.  17h    WORD    segment of internal window record (see below)
  3986.  19h  2 BYTEs    ???
  3987.  1Bh    BYTE    cursor row
  3988.  1Ch    BYTE    cursor column
  3989.  1Dh    BYTE    visible window origin, row
  3990.  1Eh    BYTE    visible window origin, column
  3991.  1Fh    BYTE    window height (logical)
  3992.  20h    BYTE    window width (logical)
  3993.  21h    BYTE    window position, row
  3994.  22h    BYTE    window position, column
  3995.  23h    BYTE    window height (visible)
  3996.  24h    BYTE    window width (visible)
  3997.  25h    BYTE    row of top of frame (or window if unframed)
  3998.  26h    BYTE    column of left of frame (or window if unframed)
  3999.  27h    BYTE    window height (physical, including frame)
  4000.  28h    BYTE    window width (physical, including frame)
  4001.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  4002.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  4003.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  4004.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  4005.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  4006.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  4007.         unzoomed parameters above are updated when window is zoomed
  4008.         to full    screen
  4009.  2Fh    BYTE    ??? initially logical window height
  4010.  30h    BYTE    ??? initially logical window width
  4011.  31h  2 BYTEs    ???
  4012.  33h    BYTE    minimum height of window
  4013.  34h    BYTE    minimum width of window
  4014.  35h    BYTE    maximum height of window
  4015.  36h    BYTE    maximum width of window
  4016.  37h  3 BYTEs    ???
  4017.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  4018.  42h 24 BYTEs    attributes???
  4019.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  4020.  62h  3 BYTEs    ???
  4021.  65h    BYTE    ??? bitflags
  4022.  66h    BYTE    bit 0: window is zoomed
  4023.  67h    BYTE    ???
  4024.  68h    WORD    offset in common memory of window name or 0000h if untitled
  4025.  6Ah    WORD    length of window name
  4026.  6Ch  2 BYTEs    ???
  4027.  6Eh    WORD    offset of logical cursor in window (in character cells)
  4028.  70h    DWORD    pointer to field table for window
  4029.  74h    BYTE    ???
  4030.  75h  2 BYTEs    ???
  4031.  77h    BYTE    number of last-visited field
  4032.  78h    DWORD    pointer to field table entry for last-visited field
  4033.  7Ch  3 BYTEs    ???
  4034.  7Fh    BYTE    select field marker character
  4035.  80h    BYTE    ??? bit flags
  4036.         bit 0: allow ECh window stream opcode to change reverse logattr
  4037.         bit 1: alternate field processing mode selected
  4038.  81h    BYTE    ???
  4039.  82h    DWORD    notification function (manager stream opcode 8Ah)
  4040.         no notification if segment = 0000h
  4041.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  4042.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  4043.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  4044.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  4045.  90h    BYTE    ??? bitflags
  4046.  91h    BYTE    ???
  4047.  ---task object only
  4048.  92h    BYTE    bit flags (bits 0-4)
  4049.  93h    BYTE    character for ??? (default 20h)
  4050.  94h    BYTE    ??? flag
  4051.  95h    WORD    offset in common memory of ???
  4052.  97h  2 BYTEs    ???
  4053.  99h    WORD    ???
  4054.  9Bh    BYTE    ??? bit flags
  4055.         bit 3: ???
  4056.         bit 6: perform protected-attribute processing on select fields
  4057.  9Ch    BYTE    ???
  4058.  9Dh    WORD    offset in common memory of current register save record
  4059.         (see below).  No register save record in use if < 01C0h
  4060.  9Fh    WORD    offset in common memory of task's keyboard object
  4061.  A1h    WORD    offset in common memory of task's OBJECTQ object
  4062.  A3h    WORD    offset in common memory of task's mailbox object
  4063.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  4064.  A7h    DWORD    user's SS:SP
  4065.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  4066.  ADh  6 BYTEs    ???
  4067.  B3h    BYTE    ??? bit flags
  4068.         bit 0: run in foreground only
  4069.  B4h    BYTE    ???
  4070.  B5h    BYTE    ??? bitflags
  4071.  B6h    BYTE    task status (see AX=DE2Ch)
  4072.  B7h  9 BYTEs    ???
  4073.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  4074.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  4075.  C4h  2 BYTEs    ??? (0000h)
  4076.  C6h    WORD    segment of keyboard buffer for task
  4077.  C8h    WORD    offset in common memory of ??? keyboard object
  4078.  CAh    BYTE    ???
  4079. ---v2.22-2.42
  4080.  CBh    WORD    offset in common memory of ??? object
  4081.  CEh    BYTE    ??? flag
  4082.  CFh    WORD    offset in common memory of default notify window for task
  4083.         or 0000h if none
  4084.  D1h  4 BYTEs    ???
  4085.  D5h    BYTE    window number on Switch Window menu
  4086.  D6h  5 BYTEs    ???
  4087.  DBh    WORD    offset in common memory of ??? object
  4088.  DDh  2 BYTEs    ???
  4089.  DFh    WORD    API level for task
  4090.  E1h    WORD    offset in common memory of object task is waiting on if task
  4091.         status is 'waiting', else 0000h
  4092.  E7h    WORD    segment of ???
  4093.  E9h 4    BYTEs    ???
  4094.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  4095.  F1h 12 BYTEs    ???
  4096.  FBh    WORD    ???
  4097.  FDh    BYTE    ???
  4098.  FFh 12 BYTEs    ???
  4099. 10Bh    DWORD    pointer to process record (see below)
  4100. 10Dh 10 BYTEs    ???
  4101. 119h    DWORD    SS:SP for ???
  4102. 11Dh  4 BYTEs    ???
  4103. 121h    DWORD    pointer to ???
  4104. 125h 25 BYTEs    ???
  4105. 13Eh    DWORD    pointer to ??? in system memory
  4106. ---v2.22
  4107. 142h  3 BYTEs    ???
  4108. 145h        task's default keyboard object
  4109. ---v2.42
  4110. 142h    DWORD    pointer to first task instance data record in system memory
  4111. 148h    DWORD    pointer to last task instance data record in system memory
  4112.         (see below)
  4113. 14Ah    BYTE    ???
  4114. 14Dh 42 BYTEs    task's default keyboard object
  4115. 177h 32 BYTEs    task's ObjectQ object
  4116. 197h 41 BYTEs    task's default mailbox object
  4117. 1C0h 24 BYTEs    first register save record
  4118. 450h    --    default top of private stack
  4119. ---v2.52 (probably all DV/X)
  4120. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  4121.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  4122.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  4123.   0000h even when waiting.
  4124. ---v2.60
  4125.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  4126.  CDh    WORD    offset in common memory of ??? object
  4127.  D0h    BYTE    ??? flag
  4128.  D1h    WORD    offset in common memory of default notify window for task
  4129.         or 0000h if none
  4130.  D3h  4 BYTEs    ???
  4131.  D7h    BYTE    window number on Switch Window menu
  4132.  D8h  5 BYTEs    ???
  4133.  DDh    WORD    offset in common memory of ??? object
  4134.  DFh  2 BYTEs    ???
  4135.  E1h    WORD    API level for task
  4136.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  4137.         that task is waiting on, else 0000h. (Task with CPU also
  4138.         has 0000h here)
  4139.  E9h    WORD    segment of ???
  4140.  EBh 4    BYTEs    ???
  4141.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  4142.  F3h 12 BYTEs    ???
  4143.  FDh    WORD    ???
  4144.  FFh    BYTE    ???
  4145. 101h  8 BYTEs    ???
  4146. 109h    DWORD    pointer to process record in system memory
  4147. 10Dh 14 BYTEs  ???
  4148. 11Bh    DWORD    SS:SP for ???
  4149. 11Fh  4 BYTEs    ???
  4150. 123h    DWORD    pointer to ???
  4151. 127h 25 BYTEs    ???
  4152. 140h    DWORD    pointer to ??? in system memory
  4153. 144h    DWORD    pointer to first task instance data record in system memory
  4154. 148h    DWORD    pointer to last task instance data record in system memory
  4155.          (from INT 15/AX=DE27h, see below)
  4156. 14Ch    BYTE    ???
  4157. 14Eh 42 BYTEs    task's default keyboard object
  4158. 179h 32 BYTEs    task's ObjectQ object
  4159. 199h 41 BYTEs    task's default mailbox object
  4160. 1C2h 24 BYTEs    first register save record
  4161. 452h    --    default top of private stack
  4162.  
  4163. Format of Register Save Record:
  4164. Offset    Size    Description
  4165.  00h    WORD    AX
  4166.  02h    WORD    BX
  4167.  04h    WORD    CX
  4168.  06h    WORD    DX
  4169.  08h    WORD    DI
  4170.  0Ah    WORD    SI
  4171.  0Eh    WORD    DS
  4172.  10h    WORD    ES
  4173.  12h    DWORD    return address
  4174.  16h    WORD    original flags
  4175.  
  4176. Format of mapping context record:
  4177. Offset    Size    Description
  4178.  00h    WORD    lowest segment in process's memory
  4179.         (often start of system memory chain)
  4180.  02h    WORD    size of process's memory in paragraphs
  4181.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  4182.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  4183.  06h  2 BYTEs    ???
  4184.  08h    WORD    EMS handle if in EMS, else 0
  4185.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  4186.  0Ch    WORD    segment of system memory block that contains process record,
  4187.         referenced from segment of start of system memory chain
  4188.  0Eh    BYTE    ???
  4189.  0Fh    WORD    size of system memory block that contains process record
  4190.         and DOS memory in paragraphs
  4191.  11h    BYTE    bit flags
  4192.         Bit 0: Swapped out???
  4193.         Bit 1: ???
  4194.         Bit 2: Swapped out???
  4195.  12h    BYTE    ???
  4196.  13h    BYTE    reference count
  4197.  ---v2.31
  4198.  14h 10 BYTEs    ???
  4199.  1Eh    WORD    segment of process record
  4200.  20h  2 BYTEs    ???
  4201.  22h    WORD    segment of ???    (in first free system memory block???)
  4202.  24h    WORD    segment of end of system memory chain
  4203.  26h    WORD    segment of start of system memory chain
  4204.  28h  8 BYTEs    ???
  4205.  2Ah    DWORD    pointer to ??? (process record???)
  4206.  2Dh 10 BYTEs    ???
  4207.  37h    BYTE    lowest interrupt vector to save on context switch
  4208.  38h    BYTE    highest interrupt vector to save on context switch
  4209.  39h    WORD    offset in common memory of main task with this context
  4210.  3Ah 12 BYTEs    ???
  4211.  46h    BYTE    internal mapping context number
  4212.  47h 12 BYTEs    ???
  4213.  ---v2.5x-2.60
  4214.  14h  6 BYTEs    ???
  4215.  1Ah    WORD    segment of process record
  4216.  1Ch  2 BYTEs    ???
  4217.  1Eh    WORD    segment of first free system memory block
  4218.  20h    WORD    segment of start of system memory chain
  4219.  22h    WORD    segment of end of system memory chain
  4220.  24h 8    BYTEs    ???
  4221.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  4222.  30h 3    BYTEs    ???
  4223.  33h    WORD    Offset in common memory of main task with this context
  4224.  35h 7    BYTEs    ???
  4225.  3Ch    BYTE    internal mapping context number
  4226.  3Dh 14 BYTEs    ???
  4227.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  4228.  4Dh    BYTE    ??? (flag???)
  4229.  ---v2.53 (2.5x???)
  4230.  4Eh 12 BYTEs    ???
  4231.  ---v2.60
  4232.  4Eh    WORD    segment of script buffer (see below)
  4233.  50h  6 BYTEs    ???
  4234.  
  4235. Format of Internal Window Record (v2.31-2.60):
  4236. Offset    Size    Description
  4237.  00h    BYTE    internal window number???
  4238.  01h    BYTE    display page???
  4239.  02h    BYTE    video mode
  4240.  03h  3 BYTEs    ???
  4241.  06h    BYTE    logical window height
  4242.  07h    BYTE    logical window width
  4243.  08h    DWORD    pointer to text video buffer
  4244.  0Ch 116 BYTEs    ???
  4245.  
  4246. Format of process record (v2.31):
  4247. Offset    Size    Description
  4248. -470h 13 BYTEs    filename of ??? Script
  4249. -463h 1117 BYTEs ??? (script buffer???)
  4250.  -6h  6 BYTEs    ???
  4251.  00h    WORD    segment of parent PSP in process
  4252.  02h  5 BYTEs    ???
  4253.  07h    WORD    segment of current PSP in process
  4254.  09h    WORD    segment of first MCB in process
  4255.  0Bh 13 BYTEs    ???
  4256.  18h 1024 BYTEs process's interrupt vector table
  4257. 418h 376 BYTEs    ???
  4258. 590h        first MCB in process
  4259.  
  4260. Format of process record (v2.53-v2.60) (probably also 2.5x):
  4261. Offset    Size    Description
  4262.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  4263.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  4264. 11Ch    WORD    segment of parent PSP in process
  4265. 11Eh  4 BYTEs    ???
  4266. 122h    WORD    segment of current PSP
  4267. 124h    WORD    segment of current PSP
  4268. 126h    WORD    segment of first MCB in process
  4269. 128h  4 BYTEs    ???
  4270. 12Ch    DWORD    pointer to first process instance data record in system memory
  4271. 130h    DWORD    pointer to last process instance data record in system memory
  4272.         (from INT 15/AX=DE27h, see below)
  4273. 134h  8 BYTEs    ???
  4274. 13Ch    WORD    size of current environment
  4275. 13Eh    WORD    segment of current environment
  4276. 140h    WORD    segment of current PSP
  4277. 142h    DWORD    entry point of current program
  4278. 146h 10 BYTEs    ???
  4279. ---v2.52 (v2.5x???)
  4280. 150h    BYTE    ???
  4281. 151h    WORD    segment of parent PSP in process
  4282. 153h    WORD    ???
  4283. 155h    WORD    ???
  4284. 157h    WORD    ???
  4285. 159h  4 BYTEs    ???
  4286. 15Dh    WORD    segment of current environment
  4287. 15Fh    WORD    segment of current PSP
  4288. 161h    WORD    segment of ???
  4289. 162h    WORD    ???
  4290. 164h  3 BYTEs    ???
  4291. 168h 1024 BYTEs process's interrupt vector table
  4292. 568h 120 BYTEs    ???
  4293. 5E0h        first MCB in process
  4294. ---v2.60
  4295. 150h    WORD    segment of parent PSP in process
  4296. 152h    WORD    ???
  4297. 154h    WORD    ???
  4298. 156h    WORD    ???
  4299. 158h  4 BYTEs    ???
  4300. 15Ch    WORD    segment of current environment
  4301. 15Eh    WORD    segment of current PSP
  4302. 160h    WORD    segment of ???
  4303. 162h    WORD    ???
  4304. 164h 1024 BYTEs process's interrupt vector table
  4305. 564h 108 BYTEs    ???
  4306. 5D0h        first MCB in process
  4307.  
  4308. Format of task or process instance data record (v2.5x???, v2.60):
  4309. Offset    Size    Description
  4310.  00h    DWORD    pointer to next record of same type or 00000000
  4311.  04h    DWORD    pointer to previous record of same type or 00000000
  4312.  08h    DWORD    pointer to source area of memory during restore state
  4313.  0Ch    WORD    number of bytes to save/restore
  4314.  0Eh    DWORD    pointer to destination area of memory during restore state
  4315.  12h    WORD    ??? (0)
  4316.  14h  N BYTEs    source memory buffer during restore state
  4317.  
  4318. Format of script buffer (v2.60):
  4319. Offset    Size    Description
  4320.  00h 13 BYTEs    ASCIZ Script filename
  4321.  0Dh 80 BYTEs    ???
  4322.  5Eh  N BYTEs    script records (see below)
  4323.  
  4324. Format of one script record (v2.60):
  4325. Offset    Size    Description
  4326.  00h    BYTE    signature 12h
  4327.  01h 18 BYTEs    blank-padded script name
  4328.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  4329.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  4330.  15h    BYTE    ???
  4331.  16h    WORD    size of script in bytes
  4332.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  4333.         scan code of non-ASCII key)
  4334.  
  4335. Format of Common Memory Header (v2.31-2.60) (at beginning of commom mem seg):
  4336. Offset    Size    Description
  4337.  00h    WORD    offset of lowest used block
  4338.  02h    WORD    bytes of commom memory, including header
  4339.  04h    WORD    offset of first free block
  4340.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  4341.  
  4342. Format of Free block header:
  4343. Offset    Size    Description
  4344.  00h    WORD    size of block in bytes including header
  4345.  02h    WORD    offset of next free block
  4346.  04h  N BYTEs    free block
  4347.  
  4348. Format of Used block header:
  4349. Offset    Size    Description
  4350.  00h    WORD    size of block in bytes including header
  4351.  02h  N BYTEs    used block
  4352. --------Q-151017-----------------------------
  4353. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  4354.     AX = 1017h
  4355. Return: pops up "Programming error" window in DV 2.x
  4356. --------Q-151018-----------------------------
  4357. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  4358.     AX = 1018h
  4359.     BH = column
  4360.     BL = row
  4361.     ES = segment of object handle for window below which to search
  4362.          0000h = start search with topmost window
  4363. Return: ES = segment of object handle for window which is visible at the
  4364.            indicated position, or covered by indicated window
  4365.        = 0000h no window
  4366. SeeAlso: AX=1023h,AX=1024h
  4367. --------Q-151019-----------------------------
  4368. INT 15 - TopView - "SOUND" - MAKE TONE
  4369.     AX = 1019h
  4370.     BX = frequency in Hertz (0000h = silence)
  4371.     CX = duration in clock ticks (18.2 ticks/sec)
  4372. Return: immediately, tone continues to completion
  4373. Notes:    if another tone is already playing, the new tone does not start until
  4374.       completion of the previous one.  Up to 32 tones may be queued before
  4375.       the process is blocked until a note completes.
  4376.     in DV 2.00, the lowest tone allowed is 20 Hz
  4377.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  4378.       notes are also cancelled
  4379. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  4380. --------Q-15101A-----------------------------
  4381. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  4382.     AX = 101Ah
  4383. Return: stack switched
  4384. Notes:    this call may not be nested; a second call must be preceded by a call
  4385.       to "USTACK" (AX=1025h)
  4386.     while TopView requires many API calls to be executed while on the
  4387.       task's internal stack, DESQview allows those calls to be executed
  4388.       regardless of the current stack
  4389. SeeAlso: AX=1025h
  4390. --------Q-15101B-----------------------------
  4391. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  4392.     AX = 101Bh
  4393. Return: task-switching temporarily disabled
  4394. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  4395.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  4396.       will again be disabled)
  4397.     suspends the caller until DOS is free
  4398. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  4399. SeeAlso: INT 60/DI=0602h
  4400. --------Q-15101C-----------------------------
  4401. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  4402.     AX = 101Ch
  4403. Return: task-switching enabled
  4404. Note:    this API call may be made from within a hardware interrupt handler
  4405. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  4406. --------Q-15101D-----------------------------
  4407. INT 15 - TopView - "STOP" - STOP TASK
  4408.     AX = 101Dh
  4409.     ES = segment of object handle for task to be stopped
  4410.          (== handle of main window for that task)
  4411. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  4412. Note:    once a task has been stopped, additional "STOP"s are ignored
  4413. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  4414.       current task
  4415. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  4416. --------Q-15101E-----------------------------
  4417. INT 15 - TopView - "START" - START TASK
  4418.     AX = 101Eh
  4419.     ES = segment of object handle for task to be started
  4420.          (== handle of main window for that task)
  4421. Return: indicated task is started up again
  4422. Note:    once a task has been started, additional "START"s are ignored
  4423. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  4424. --------Q-15101F-----------------------------
  4425. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  4426.     AX = 101Fh
  4427.     BX = bit fields
  4428.          bits 0-12: number of characters to display
  4429.          bits 13,14: which mouse button may be pressed to remove window
  4430.              00 = either
  4431.              01 = left
  4432.              10 = right
  4433.              11 = either
  4434.          bit 15: beep if 1
  4435.     ES:DI -> text of message
  4436.     CH = width of error window (0 = default)
  4437.     CL = height of error window (0 = default)
  4438.     DX = segment of object handle
  4439. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  4440. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  4441. --------Q-151020-----------------------------
  4442. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  4443.     AX = 1020h
  4444. Return: pops up "Programming error" window in DV v2.00+
  4445. --------Q-151021-----------------------------
  4446. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  4447.     AX = 1021h
  4448.     BX = segment of object handle for task to interrupt (not self)
  4449.     DX:CX -> FAR routine to jump to next time task is run
  4450. Return: nothing
  4451. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  4452.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  4453.       needs to be preserved
  4454.     multiple PGMINTs to a single task are processed last-in first-out
  4455.     if the other task is in a DOS or DV API call, the interruption will
  4456.       occur on return from that call
  4457. --------Q-151022BX0000-----------------------
  4458. INT 15 - TopView - "GETVER" - GET VERSION
  4459.     AX = 1022h
  4460.     BX = 0000h
  4461. Return: BX nonzero, TopView or compatible loaded
  4462.     (BL = major version, BH = minor version)
  4463. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  4464. --------Q-151023-----------------------------
  4465. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  4466.     AX = 1023h
  4467.     BX = segment of object handle for parent window within which to
  4468.            position the window (0 = full screen)
  4469.     ES = segment of object handle for window to be positioned
  4470.     DL = general window position (see below)
  4471.     CH = number of columns to offset from position specified by DL
  4472.     CL = number of rows to offset from position specified by DL
  4473. Return: nothing
  4474.  
  4475. Bitfields for general window position:
  4476. Bit(s)    Description
  4477.  0,1    horizontal position
  4478.     00 = current, 01 = center, 10 = left, 11 = right
  4479.  2,3    vertical position
  4480.     00 = current, 01 = center, 10 = top, 11 = bottom
  4481.  4    don't redraw screen if set
  4482.  5-7    not used
  4483. --------Q-151024-----------------------------
  4484. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  4485.     AX = 1024h
  4486.     BX = segment of object handle for window
  4487.           (0 = use default)
  4488. Return: ES:DI -> virtual screen
  4489.     CX = size of virtual screen in bytes
  4490.     DL = 00h text screen
  4491.          01h graphics screen
  4492. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  4493. --------Q-151025-----------------------------
  4494. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  4495.     AX = 1025h
  4496. Return: stack switched back
  4497. Notes:    call only after having switched to internal stack with AX=101Ah
  4498.     while TopView requires many API calls to be executed while on the
  4499.       task's private stack, DESQview allows those calls to be executed
  4500.       regardless of the current stack
  4501. SeeAlso: AX=101Ah
  4502. --------Q-1510-------------------------------
  4503. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  4504.     AH = 10h
  4505.     AL = 26h thru 2Ah
  4506. Return: pops up "Programming error" window in DV 2.x
  4507. --------Q-15102B-----------------------------
  4508. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  4509.     AX = 102Bh
  4510.     BX = segment of object handle for task
  4511. Return: nothing
  4512. Note:    forces a task which is waiting on its objectq to continue by placing
  4513.       the handle for the task on the objectq
  4514. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  4515. --------Q-15102C-----------------------------
  4516. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  4517.     AX = 102Ch
  4518.     ES:DI -> contents of .PIF/.DVP file (see below)
  4519.     BX = size of .PIF/.DVP info
  4520. Return: BX = segment of object handle for new task
  4521.          0000h on error
  4522. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  4523.  
  4524. Format of .PIF/.DVP file:
  4525. Offset    Size    Description
  4526.  00h    BYTE    reserved (0)
  4527.  01h    BYTE    checksum of bytes 02h through 170h
  4528.  02h 30 BYTEs    blank-padded program title
  4529.  20h    WORD    maximum memory to allocate to partition in KB
  4530.  22h    WORD    minimum memory required in KB
  4531.  24h 64 BYTEs    ASCIZ program pathname
  4532.  64h    BYTE    default drive letter ('A',...)
  4533.  65h 64 BYTEs    ASCIZ default directory name
  4534.  A5h 64 BYTEs    ASCIZ program parameters
  4535.  E5h    BYTE    initial screen mode (0-7) (see also offset 189h)
  4536.  E6h    BYTE    number of text pages used
  4537.  E7h    BYTE    number of first interrupt to save
  4538.  E8h    BYTE    number of last interrupt to save
  4539.  E9h    BYTE    rows in virtual screen buffer
  4540.  EAh    BYTE    columns in virtual screen buffer
  4541.  EBh    BYTE    initial window position, row
  4542.  ECh    BYTE    initial window position, column
  4543.  EDh    WORD    system memory in KB
  4544.  EFh 64 BYTEs    ASCIZ shared program name
  4545. 12Fh 64 BYTEs    ASCIZ shared program data file
  4546. 16Fh    BYTE    flags1
  4547.         bit 7: writes text directly to screen
  4548.         bit 6: runs in foreground only (see also offset 184h)
  4549.         bit 5: uses math coprocessor
  4550.         bit 4: accesses system keyboard buffer directly
  4551.         bits 3-1: reserved (0)
  4552.         bit 0: swappable
  4553. 170h    BYTE    flags2
  4554.         bit 6: uses command-line parameters in field at A5h
  4555.         bit 5: swaps interrupt vectors
  4556. ---information unique to .DVP files---
  4557. 171h  2 BYTEs    keys to use on open menu
  4558. 173h    WORD    size of script buffer in bytes
  4559. 175h    WORD    automatically give up CPU after this many tests for keyboard
  4560.         input in one clock tick (default 0 = never)
  4561. 177h    BYTE    nonzero = "uses own colors"
  4562. 178h    BYTE    nonzero if application swappable
  4563. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  4564.         in actual .DVP files, frequently 01h
  4565. 17Ch    BYTE    nonzero to automatically close on exit (see also offset 18Bh)
  4566. 17Dh    BYTE    nonzero if copy-protect floppy is required
  4567. ---information unique to DESQview 2.0+---
  4568. 17Eh    BYTE    .DVP version number
  4569.         00h DESQview v1.2+
  4570.         01h DESQview v2.0+
  4571.         02h DESQview v2.2+
  4572. 17Fh    BYTE    reserved (0)
  4573. 180h    BYTE    initial number of rows in physical window
  4574. 181h    BYTE    initial number of columns in physical window
  4575. 182h    WORD    maximum expanded memory to allow, in KB
  4576. 184h    BYTE    flags3
  4577.         bit 7: automatically assign window position
  4578.         bit 5: maximum memory value has been specified
  4579.         bit 4: disallow "Close" command
  4580.         bit 3: foreground-only when doing graphics
  4581.             set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  4582.         bit 2: don't virtualize (see also offset 18Bh)
  4583.         bit 1: foreground-only during DOS calls
  4584.             set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  4585. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  4586.         bit 3: save/restore entire INT 09 handler state every taskswtch
  4587.         bit 2: take special precautions for programs which read the
  4588.             BIOS keyboard buffer directly from memory
  4589.         bit 1: never indicate keystroke available during scripts/xfers
  4590.         bit 0: only indicate keystroke available every sixth poll
  4591. 186h    BYTE    number of graphics pages used
  4592. 187h    WORD    extra system memory size
  4593. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  4594. ---information unique to DESQview 2.2+---
  4595. 18Ah    BYTE    serial port usage
  4596.         FFh uses all serial ports
  4597.         00h no serial ports
  4598.         01h only COM1
  4599.         02h only COM2
  4600. 18Bh    BYTE    flags4
  4601.         bit 7: automatically close application on exit if .COM or .EXE
  4602.             specified (see also offset 17Ch)
  4603.         bit 6: swappable if not using serial ports
  4604.         bit 5: start program with window hidden (v2.26+)
  4605.         bit 4: start program in background (v2.26+)
  4606.         bit 3: virtualize text (see also offset 184h)
  4607.         bit 2: virtualize graphics (see also offset 184h)
  4608.         bit 1: share CPU when foreground
  4609.         bit 0: share EGA when foreground and zoomed
  4610. 18Ch    BYTE    protection level for 386 machines
  4611. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  4612. ---information unique to DESQview/X 1.0---
  4613. 18Dh    BYTE    X flags
  4614.         bits 3-7: unused (0)
  4615.         bit 2: don't display wait message when opening window
  4616.         bit 1: don't display DOS window
  4617.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  4618.                (NEWPROC) inherit DOS client layer usage
  4619. 18Eh    BYTE    X keyboard behavior (0-3)
  4620. 18Fh    BYTE    font scaling
  4621.         00h fixed fonts
  4622.         01h scalable fonts
  4623. 190h 10 BYTEs    reserved (0)
  4624. 19Ah    WORD    length of data follownig XDVP signature
  4625. 19Ch  4 BYTEs    signature "XDVP"
  4626. 1A0h  N BYTEs    list of variable length records (see below)
  4627.  
  4628. Format of variable length record:
  4629. Offset    Size    Description
  4630.  00h    WORD    length of following record, 0000h if end of record list
  4631.  02h    BYTE    record type
  4632.         01h script filename, up to 64 characters
  4633.         02h command-line parameters (allows >64 characters on cmdline)
  4634.         03h environment inheritance
  4635.         04h environment string
  4636.         05h starting window position
  4637. ---types 01h,02h,04h---
  4638.  03h  N BYTEs    ASCII data
  4639. ---type 03h---
  4640.  03h    BYTE    inheritance
  4641.         00h do not inherit
  4642.         01h inherit environment
  4643. ---type 05h---
  4644.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  4645.         starting row, starting column, starting height, starting width
  4646. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  4647.       only the last instance of each type is used; multiple occurrences of
  4648.       type 04h are concatenated
  4649. --------Q-15102D-----------------------------
  4650. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  4651.     AX = 102Dh
  4652.     BL = subfunction
  4653.          00h determine whether using keyboard mouse
  4654.         Return: BL = 00h using real mouse
  4655.                  01h using keyboard mouse
  4656.          01h turn keyboard mouse on
  4657.          02h turn keyboard mouse off
  4658. --------Q-15102E-----------------------------
  4659. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  4660.     AX = 102Eh
  4661.     BX = number of bytes
  4662. Return: AX = status
  4663.         0000h successful
  4664.         ES:DI -> allocated system memory
  4665.         0001h failed
  4666.         ES:DI = 0000h:0000h
  4667. Note:    under DV 2.42, this call is identical to AX=1001h
  4668. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  4669.  
  4670. Format of system memory block header (one paragraph before memory block):
  4671. Offset    Size    Description
  4672.  00h    WORD    segment of next header or 0000h
  4673.  02h    WORD    segment of previous header or 0000h
  4674.  04h    WORD    size of block in paragraphs, including header
  4675.  06h    BYTE    availability flag (00h in use, 01h free)
  4676. --------Q-1511-------------------------------
  4677. INT 15 - TopView commands
  4678.     AH = 11h
  4679.     AL = various (except 17h)
  4680. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  4681.       see those below
  4682. SeeAlso: AH=DEh
  4683. --------T-1511-------------------------------
  4684. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  4685.     AH = 11h
  4686.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  4687.             request (max len = 127)
  4688. Return: AX = status (SYS_OK or SYS_ERROR)
  4689. SeeAlso: AH=0Ch"VMiX"
  4690. --------T-1511-------------------------------
  4691. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  4692.     AH = 11h
  4693. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  4694. SeeAlso: AH=12h"MultiDOS"
  4695. Index:    hotkeys;MultiDOS Plus
  4696. --------Q-151117BX0000-----------------------
  4697. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  4698.     AX = 1117h
  4699.     BX = 0000h    get current mapping context without setting
  4700.          nonzero    set new mapping context
  4701. Return: BX = mapping context in effect before call
  4702.     interrupts enabled
  4703. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  4704.     mapping contexts determine conventional-memory addressability; setting
  4705.       a mapping context ensures that the associated program and data areas
  4706.       are in memory for access.  Usable by drivers, TSRs and shared
  4707.       programs.
  4708.     caller need not be running under DESQview, but must ensure that the
  4709.       stack in use will not be mapped out by the call
  4710. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  4711. --------m-1511DE-----------------------------
  4712. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  4713.     AX = 11DEh
  4714. Return: CF clear if installed
  4715.         AX = segment at which QEXT.SYS is located
  4716. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  4717.       versions also implement the XMS standard
  4718. Note:    a private entry point may be found by searching the beginning of the
  4719.       returned segment for the signature string
  4720.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  4721.       prior to the signature contains the QEXT version number in BCD,
  4722.       and the word prior to that contains the offset within the QEXT
  4723.       code segment of the private entry point
  4724. SeeAlso: INT 2F/AX=4310h,INT 67/AH=3Fh
  4725.  
  4726. Call private entry point with:
  4727.     AH = 00h ???
  4728.     AH = nonzero ???
  4729. --------T-1512-------------------------------
  4730. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  4731.     AH = 12h
  4732.     STACK:    WORD    process ID
  4733. Return: AX = status (SYS_OK or SYS_ERROR)
  4734. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  4735. --------T-1512-------------------------------
  4736. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  4737.     AH = 12h
  4738. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  4739. SeeAlso: AH=11h"MultiDOS"
  4740. Index:    hotkeys;MultiDOS Plus
  4741. --------Q-1512--BH00-------------------------
  4742. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  4743.     AH = 12h
  4744.     BH = 00h
  4745.     BL = which handle to return
  4746.         00h handle in DWORD on top of stack
  4747.         01h current task's window handle
  4748.         02h given task's mailbox handle (task's handle on stack)
  4749.         03h current task's mailbox handle
  4750.         04h given task's keyboard handle (task's handle on stack)
  4751.         05h current task's keyboard object handle
  4752.         06h given task's OBJECTQ handle (task's handle on stack)
  4753.         07h current task's OBJECTQ handle
  4754.         08h      \
  4755.           thru > return 0000:0000 under DV < 2.26
  4756.         10h      /
  4757.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  4758.         0Dh (2.26+) task handle of owner (parent) of current task
  4759. Return: DWORD on top of stack is object handle
  4760. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  4761.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  4762.       window)
  4763. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  4764. --------Q-1512--BH01-------------------------
  4765. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  4766.     AH = 12h
  4767.     BH = 01h
  4768.     BL = object type to create
  4769.         00h (DV 2.0x only) handle is DWORD on top of stack
  4770.         01h (DV 2.0x only) use task's window handle
  4771.         02h (DV 2.0x only) given task's mailbox (task's handle on stack)
  4772.         03h (DV 2.0x only) current task's mailbox
  4773.         04h (DV 2.0x only) given task's keyboard (task's handle on stack)
  4774.         05h (DV 2.0x only) current task's keyboard object
  4775.         08h WINDOW class
  4776.         09h MAILBOX class
  4777.         0Ah KEYBOARD class
  4778.         0Bh TIMER object (counts down 32-bit time in 10ms increments)
  4779.         0Fh POINTER object
  4780.         10h PANEL object
  4781.     STACK: (if window object or WINDOW class)
  4782.            DWORD address to jump to (no new task if high word == 0)
  4783.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  4784.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  4785.            DWORD bytes system memory for input buffer for READ/READN
  4786.             (0 == none, -1 == default--same as logical window size)
  4787.            DWORD window size, columns
  4788.            DWORD window size, rows
  4789.            DWORD length of window title
  4790.            DWORD address of window title
  4791. Return: DWORD on top of stack is new object handle
  4792. Notes:    if a new task is created, it is started with
  4793.       AX = BX = SI = DI = BP = 0
  4794.       DX:CX = handle of parent task
  4795.       DS = ES = SS = segment of private stack (and new task's handle)
  4796.     new windows are orphans, inherit the colors/hidden status of the
  4797.       creating task's window, and are placed in the upper left hand corner
  4798.       of the screen but not automatically redrawn
  4799.     new keyboards are closed, and have all object bits cleared except for
  4800.       the hardware cursor bit
  4801. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  4802. --------Q-1512--BH02-------------------------
  4803. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  4804.     AH = 12h
  4805.     BH = 02h
  4806.     BL = object
  4807.         00h handle in DWORD on top of stack
  4808.         window: close window and free
  4809.         timer: free timer
  4810.         panel: free panel object
  4811.         pointer: free pointer
  4812.         01h task's window handle - kills task, never returns
  4813.         02h given task's mailbox (task's handle on top of stack)
  4814.         03h current task's mailbox
  4815.         04h given task's keyboard (task's handle on top of stack)
  4816.         05h current task's keyboard object
  4817. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  4818.       task windows also free any mailbox, objectq, and panel objects held
  4819.       by the task and any child tasks
  4820.     if the keyboard being freed is the default keyboard for a task, this
  4821.       call is equivalent to CLOSE
  4822.     panel and pointer objects are automatically closed if open
  4823. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  4824. --------Q-1512--BH03-------------------------
  4825. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  4826.     AH = 12h
  4827.     BH = 03h
  4828.     BL = object
  4829.         00h mailbox handle in DWORD on top of stack
  4830.         02h sender of last msg read from mailbox (task's handle on stack)
  4831.         03h sender of last msg read from current task's mailbox
  4832. Return: DWORD on stack is task handle of message sender
  4833. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  4834. --------Q-1512--BH03-------------------------
  4835. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  4836.     AH = 12h
  4837.     BH = 03h
  4838.     BL = window to be connected
  4839.         00h handle of window to be attached in DWORD on top of stack
  4840.         01h attach current task's main window
  4841.     STACK: DWORD handle of window to attach to or 00000000h to detach
  4842. Return: STACK popped
  4843. Notes:    when two windows are connected, both will move if the user moves either
  4844.     multiple windows may be attached to a single window, but each window
  4845.       may only be attached to one window at a time
  4846. SeeAlso: AH=12h/BH=83h
  4847. --------Q-1512--BX0300-----------------------
  4848. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  4849.     AH = 12h
  4850.     BX = 0300h
  4851.     STACK: DWORD handle of panel object
  4852. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  4853.            DWORD address of directory
  4854. Note:    a null string is returned if the object is not open
  4855. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  4856.  
  4857. Format of panel file:
  4858. Offset    Size    Description
  4859.  00h  2 BYTEs    C0h C3h
  4860.  02h    BYTE    number of panels in file
  4861.  03h    for each panel in file:
  4862.         8 BYTEs  blank-padded panel name
  4863.           DWORD  panel offset in file
  4864.           WORD   panel length
  4865.     data for panels (each consists of one or more window/query/manager
  4866.     streams)
  4867.         first byte of each panel must be 1Bh, fifth byte must be E5h
  4868. --------Q-1512--BH04-------------------------
  4869. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  4870.     AH = 12h
  4871.     BH = 04h
  4872.     BL = window to read from
  4873.         00h handle is DWORD on top of stack
  4874.         01h use calling task's default window
  4875.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  4876.         0Dh (DV 2.26+) default window of parent task of current task
  4877. Return: STACK:    DWORD number of bytes read
  4878.         DWORD address of buffer
  4879. Notes:    reading starts at the current logical cursor position; the cursor is
  4880.       updated to point at the character following the last one read
  4881.     any translucent blanks (FFh) which are visible on screen are changed
  4882.       to the character which is seen through them
  4883.     the string produced by the read is placed in an input buffer which may
  4884.       be reused by the next READ or READN of a window
  4885.     window stream opcodes D8h and D9h determine whether the read returns
  4886.       characters or attributes
  4887. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  4888. --------Q-1512--BH04-------------------------
  4889. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  4890.     AH = 12h
  4891.     BH = 04h
  4892.     BL = object
  4893.         00h handle is DWORD on top of stack
  4894.         mailbox: wait for and get next message
  4895.         keyboard: wait for and get pointer to next input buffer
  4896.         pointer: wait for and get next message
  4897.         02h get next message from mailbox (task's handle on top of stack)
  4898.         03h get next message from current task's mailbox
  4899.         04h get the next input from keyboard (handle on top of stack)
  4900.         05h get the next input from task's default keyboard
  4901.         06h wait for input from any object in OBJECTQ (handle on stack)
  4902.         07h wait for input from any object in task's default OBJECTQ
  4903. Return: STACK: (if objectq) DWORD handle of object with input
  4904.            (otherwise)  DWORD number of bytes
  4905.                 DWORD address
  4906. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  4907.       containing the character code as returned by the BIOS; the BIOS scan
  4908.       code is available via the STATUS call if the character is zero
  4909.     for a keyboard in field mode, the input buffer format is determined
  4910.       by the field table header for the window the keyboard is attached to
  4911.     keyboard input buffers and mailbox message buffers may be invalidated
  4912.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  4913. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  4914.  
  4915. Format of pointer message:
  4916. Offset    Size    Description
  4917.  00h    WORD    row
  4918.  02h    WORD    column
  4919.  04h    BYTE    status (see below)
  4920.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  4921.  
  4922. Bitfields for pointer status:
  4923. Bit(s)    Description
  4924.  7-2    number of clicks-1 if multiple-click mode active
  4925.  7    set when press/release mode active and button pressed
  4926.  6    set when press/release mode active and button released
  4927.  1-0    button pressed (00=none,01=button1,10=button2)
  4928. --------Q-1512--BX0400-----------------------
  4929. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  4930.     AH = 12h
  4931.     BX = 0400h
  4932.     STACK: DWORD timer's handle
  4933. Return: after timer expires
  4934.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  4935. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  4936. --------Q-1512--BX0400-----------------------
  4937. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  4938.     AH = 12h
  4939.     BX = 0400h
  4940.     STACK: DWORD handle of panel object
  4941.            DWORD window's handle (or 0 for current task's window)
  4942.            DWORD length of panel name
  4943.            DWORD pointer to panel name
  4944. Return: STACK: DWORD handle of window which was used
  4945.            DWORD handle of keyboard or 0
  4946. Notes:    status of APPLY may be checked with STATUS message
  4947.     panel MUST have the following format
  4948.       first byte must be 1Bh (i.e. must start with a stream)
  4949.       first opcode in stream must be E5h
  4950.         single byte arg of opcode is interpreted thus:
  4951.           bits 7,6    11 means create new window
  4952.             10 means create new field table for existing window
  4953.             01 means use existing window and field table
  4954.           bit 5 if set, panel contains a field table
  4955.             (creates a new keyboard and puts it in field mode)
  4956.           bit 4 if set, panel contains input fields
  4957.           bit 3 if set, panel contains select fields but no input fields
  4958.     if the panel contains input or select fields, a keyboard handle is
  4959.       returned; either the window's current open keyboard or a
  4960.       newly-created keyboard object.  The caller should read that keyboard
  4961.       to obtain input from the panel.
  4962. SeeAlso: AH=12h/BH=84h
  4963. --------Q-1512--BH05------------------------
  4964. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  4965.     AH = 12h
  4966.     BH = 05h
  4967.     BL = object
  4968.         00h handle is DWORD on top of stack
  4969.         timer: start timer to end at a specified time
  4970.         keyboard: add input buffer to queue
  4971.         pointer: move pointer icon to specified position
  4972.         02h send message by value/status=0 to mbox (task's handle on stack)
  4973.         03h send message by value/status=0 to current task's mailbox
  4974.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  4975.         05h add input buffer to task's default KEYBOARD queue
  4976.         06h add an object to OBJECTQ (handle on top of stack)
  4977.         07h add an object to task's default OBJECTQ
  4978.     STACK: (if mailbox)  DWORD length
  4979.                  DWORD address
  4980.            (if keyboard) DWORD status (scan code in keystroke mode)
  4981.                  DWORD length (should be 1 in keystroke mode)
  4982.                  DWORD address
  4983.            (if objectq)  DWORD handle of object to add
  4984.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  4985.                    only accurate to 1/18 sec)
  4986.            (if pointer)  DWORD column relative to origin of window
  4987.                  DWORD row relative to origin of window
  4988. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  4989.     the data and status written to a keyboard object must match the format
  4990.       returned by the keyboard object in the current mode
  4991.     the pointer position is scaled according to the current scaling factors
  4992. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  4993. --------Q-1512--BH05-------------------------
  4994. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  4995.     AH = 12h
  4996.     BH = 05h
  4997.     BL = window to write to
  4998.         00h DWORD on top of stack is window handle
  4999.         01h write string to task's default window
  5000.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5001.         0Dh (DV 2.26+) default window of parent of current task
  5002.     STACK: DWORD object handle if handle passed on stack
  5003.            DWORD total length of string (high word == 0)
  5004.            DWORD address of string to display
  5005. Return: indicated actions performed
  5006.     a. non-control characters are displayed (opcodes DEh and DFh control
  5007.        whether the attributes are left or changed to the current attrib)
  5008.     b. CR/LF/BS/Tab cause the usual cursor movement
  5009.     c. ESC starts a data structure with additional commands if following
  5010.        byte is less than 20h; otherwise, it is written to the window
  5011.     STACK:    DWORD handle of new window if window stream opcode E6h
  5012.         else nothing
  5013. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  5014.  
  5015. Data Structure:
  5016.     MAGIC  DB  1Bh
  5017.     MODE   DB  ?   ; 00h, 01h, 10h, 14h-1Fh legal
  5018.     LENGTH DW  ?   ; length of remainder in bytes
  5019.     var-length fields follow, each an OPCODE followed by
  5020.          zero or more args
  5021.  
  5022. MODE 00h (set or display values) "WINDOW STREAM"
  5023.     Opcodes:args
  5024.     00h  display 20h blanks with the default attribute
  5025.     01h-1Fh display OPCODE blanks with the default attribute
  5026.     20h  display char with default attribute 20h times
  5027.          BYTE char to repeat
  5028.     21h-3Fh display char with default attribute OPCODE-20h times
  5029.          BYTE char to repeat
  5030.     40h  display 20h blanks with specified attribute
  5031.          BYTE attribute of blanks
  5032.     41h-5Fh display OPCODE-40h blanks with specified attribute
  5033.          BYTE attribute of blanks
  5034.     60h  display next 20h characters
  5035.          20h BYTEs characters to display
  5036.     61h-7Fh display next OPCODE-60h characters
  5037.          N BYTEs characters to display
  5038.     80h-87h     display N blanks with default attribute
  5039.          BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  5040.               [000h means 800h]
  5041.     88h-8Fh display N copies of the character
  5042.          BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  5043.               [000h means 800h]
  5044.          BYTE character to repeat
  5045.     90h-97h     display N blanks with specified attribute
  5046.          BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  5047.               [000h means 800h]
  5048.          BYTE attribute
  5049.     98h-9FH     display string at logical cursor pos
  5050.          BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  5051.               [000h means 800h]
  5052.          N BYTEs string to display
  5053.     A0h  set logical cursor row
  5054.          BYTE row number (0 is top)
  5055.     A1h  set logical cursor column
  5056.          BYTE column number (0 is leftmost)
  5057.     A2h  set top edge of scrolling region
  5058.          BYTE row
  5059.     A3h  set left edge of scrolling region
  5060.          BYTE column
  5061.     A4h  set row of physical window position
  5062.          BYTE line
  5063.     A5h  set column of physical window position
  5064.          BYTE column
  5065.     A6h  set height of physical window
  5066.          BYTE number of rows
  5067.     A7h  set width of physical window
  5068.          BYTE number of columns
  5069.     A8h  set viewport row
  5070.          BYTE row
  5071.     A9h  set viewport column
  5072.          BYTE column
  5073.     AAh  set virtual screen height [contents of window unpredictable after]
  5074.          BYTE rows
  5075.     ABh  set virtual screen width [contents of window unpredictable after]
  5076.          BYTE columns
  5077.     ACh-AEh     unused
  5078.     AFh  set compatible/preferred video modes
  5079.          BYTE compatibility/preference mask
  5080.         bit 7    compatible with monochrome
  5081.         bit 6    compatible with color text, EGA/VGA graphics
  5082.         bit 5    compatible with medium-resolution CGA graphics
  5083.         bit 4    compatible with high-resolution CGA graphics
  5084.         bit 3    prefer monochrome
  5085.         bit 2    prefer color text, EGA/VGA graphics
  5086.         bit 1    prefer medium-resolution CGA graphics
  5087.         bit 0    prefer high-resolution CGA graphics
  5088.     B0h  move logical cursor down
  5089.          BYTE number of rows (signed, negative values move up)
  5090.             [if rows=0 and hardware cursor owner, update hw crsr]
  5091.     B1h  move logical cursor right
  5092.          BYTE number of columns (signed, negative values move left)
  5093.             [if cols=0 and hardware cursor owner, update hw crsr]
  5094.     B2h  shift top edge of scrolling region
  5095.          BYTE number of rows (signed)
  5096.     B3h  shift left edge of scrolling region
  5097.          BYTE number of columns (signed)
  5098.     B4h  shift physical window down
  5099.          BYTE number of lines (signed)
  5100.     B5h  shift physical window right
  5101.          BYTE number of columns (signed)
  5102.     B6h  expand physical window vertically
  5103.          BYTE number of lines (signed)
  5104.     B7h  expand physical window horizontally
  5105.          BYTE number of columns (signed)
  5106.     B8h  adjust viewport row
  5107.          BYTE number of rows (signed)
  5108.     B9h  adjust viewport column
  5109.          BYTE number of columns (signed)
  5110.     BAh  adjust virtual screen height [contents of window unpredict after]
  5111.          BYTE number of rows to increase (signed)
  5112.     BBh  adjust virtual screen width [contents of window unpredictbl after]
  5113.          BYTE number of columns to increase (signed)
  5114.     BCh-BFh     reserved (currently unused)
  5115.     C0h  set logical cursor position
  5116.          BYTE row number (0 is top border)
  5117.          BYTE column number (0 is left border)
  5118.     C1h  set top left corner of scrolling region
  5119.          BYTE row
  5120.          BYTE column
  5121.     C2h  set physical window pos
  5122.          BYTE upper left row (no top border if 0)
  5123.          BYTE upper left column (no left border if 0)
  5124.     C3h  set current window size
  5125.          BYTE number of rows
  5126.          BYTE number of columns
  5127.     C4h  set upper left corner of viewport (portion of virtual screen
  5128.          displayed in window)
  5129.          BYTE row
  5130.          BYTE column
  5131.     C5h  set size of virtual screen [contents unpredictable afterwards]
  5132.          BYTE number of rows
  5133.          BYTE number of columns
  5134.     C6h  unused
  5135.     C7h  unused
  5136.     C8h  set logical cursor relative to current position
  5137.          BYTE number of rows to move down (signed)
  5138.          BYTE number of columns to move right (signed)
  5139.           [if rows=cols=0 and hardware cursor owner, update hw cursr]
  5140.     C9h  shift top left corner of scrolling region
  5141.          BYTE number of rows (signed)
  5142.          BYTE number of columns (signed)
  5143.     CAh  set window pos relative to current position
  5144.          BYTE number of rows to shift down (signed)
  5145.          BYTE number of columns to shift right (signed)
  5146.     CBh  set window size relative to current size
  5147.          BYTE number of rows to expand (signed)
  5148.          BYTE number of cols to expand (signed)
  5149.     CCh  shift viewport relative to current position
  5150.          BYTE rows to shift (signed)
  5151.          BYTE cols to shift (signed)
  5152.     CDh  resize virtual screen
  5153.          BYTE number of rows to expand (signed)
  5154.          BYTE number of columns to expand (signed)
  5155.     CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  5156.     CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  5157.     D0h  allow window frame to extend beyond screen
  5158.     D1h  always display a complete frame, even if window extends beyond
  5159.          edge of screen
  5160.     D2h  allow DV to change logical colors on video mode switch (default)
  5161.     D3h  application changes logical attributes
  5162.     D4h  window is visible [must redraw to actually make visible]
  5163.     D5h  window is hidden [must redraw to actually remove]
  5164.     D6h  window has frame (default)
  5165.     D7h  window unframed [must redraw to actually remove frame]
  5166.     D8h  READ/READN will read characters from window (default)
  5167.     D9h  READ/READN will read attributes from window
  5168.     DAh  use logical attributes, which may be remapped
  5169.         attributes
  5170.            1 normal text
  5171.            2 highlighted normal text
  5172.            3 help text
  5173.            4 highlighted help text
  5174.            5 error message
  5175.            6 highlighted error message
  5176.            7 emphasized text
  5177.            8 marked text
  5178.            9-16 are reverse video versions of 1-8
  5179.     DBh  use physical attributes for characters
  5180.     DCh  enable special actions for control characters (default)
  5181.     DDh  disable special control char handling, all chars displayable by
  5182.          BIOS TTY call
  5183.     DEh  write both character and attribute (default)
  5184.     DFh  write character only, leave attribute untouched
  5185.     E0h  repeat following commands through E1h opcode
  5186.          BYTE number of times to repeat (00h means 256 times)
  5187.     E1h  end of commands to repeat, start repeating them
  5188.     E2h  set current output color
  5189.          BYTE color
  5190.     E3h  clear virtual screen from scroll origin to end using current color
  5191.     E4h  redraw window
  5192.     E5h  select menu style
  5193.          BYTE style (normally 18h)
  5194.         bits 5,4 = 01 use two-letter menu entries for remainder of
  5195.           this stream
  5196.     E5h  (panel file only)
  5197.          BYTE modifier
  5198.         bits 7,6 = 11 panel stream creates new window
  5199.              = 10 panel defines new field table for existing window
  5200.              = 01 panel stream uses existing window & field table
  5201.         bit 5 = 1 stream contains a field table (create kyboard object)
  5202.         bit 4 = 1 stream defines input fields (create keyboard object)
  5203.         bit 3 = 1 stream defines select fields but not input fields
  5204.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  5205.         bit 1 reserved
  5206.         bit 0 reserved
  5207.     E6h  create new window and perform rest of manipulations in new window
  5208.          BYTE number of rows
  5209.          BYTE number of columns
  5210.          Return: DWORD object handle of new window returned on stack at end
  5211.          Note: the window is created with a physical size of 0x0 at the
  5212.              same position as the window to which this stream was sent
  5213.     E7h  no operation
  5214.     E8h  scroll area up (top left corner defined by opcode C1h)
  5215.          BYTE height
  5216.          BYTE width
  5217.     E9h  scroll area down (top left corner defined by opcode C1h)
  5218.          BYTE height
  5219.          BYTE width
  5220.     EAh  scroll area left (top left corner defined by opcode C1h)
  5221.          BYTE height
  5222.          BYTE width
  5223.     EBh  scroll area right (top left corner defined by opcode C1h)
  5224.          BYTE height
  5225.          BYTE width
  5226.     ECh  set logical attributes for window contents
  5227.          BYTE video modes command applies to
  5228.         bit 7    monochrome
  5229.         bit 6    color text, EGA/VGA graphics
  5230.         bit 5    medium-resolution CGA graphics
  5231.         bit 4    high-resolution CGA graphics
  5232.          BYTE which attributes to set
  5233.         bit 7  if set, copy single following byte to indicated attribs
  5234.         bits 4-6  number of first attribute to change - 1
  5235.         bits 0-3  number of consecutive attributes to change
  5236.          N BYTEs new attributes
  5237.     EDh  set logical attributes for window frame
  5238.          BYTE video modes command applies to (see opcode ECh)
  5239.          BYTE which attributes to set
  5240.         bit 7  if set, copy single following byte to indicated attrs
  5241.         bits 4-6  number of first attribute to change - 1
  5242.         bits 0-3  number of consecutive attributes to change
  5243.          N BYTEs new attributes
  5244.           attributes
  5245.                1 = top left corner
  5246.                2 = top right corner
  5247.                3 = bottom left corner
  5248.                4 = bottom right corner
  5249.                5 = top edge
  5250.                6 = bottom edge
  5251.                7 = left edge
  5252.                8 = right edge
  5253.     EEh  set characters for window frame
  5254.          BYTE video modes command applies to (see opcode ECh)
  5255.          BYTE which characters to set
  5256.         bit 7  if set, copy single following byte to indicated chars
  5257.         bits 4-6  number of first char to change - 1
  5258.         bits 0-3  number of consecutive chars to change
  5259.          N BYTEs new chars (same relative position as attributes above)
  5260.     EFh  set window name
  5261.          BYTE length of name (should be in range 0 to logical screen width)
  5262.          N BYTEs name
  5263.     F0h  clear input field to blanks
  5264.          BYTE field number
  5265.     F1h  fill input field with character
  5266.          BYTE field number
  5267.          BYTE char
  5268.     F2h  set color of input field
  5269.          BYTE field number (1-N)
  5270.          BYTE attribute
  5271.     F3h  set initial contents of input field
  5272.          BYTE field number (1-N)
  5273.          N BYTEs enough chars to exactly fill field as defined by op FFh
  5274.     F4h  position cursor to start of specific input field
  5275.          BYTE field number (1-N)
  5276.     F5h  change field table entry
  5277.          BYTE field number
  5278.          7-8 BYTEs field table entry (see opcode FFh below)
  5279.     F6h  set field type
  5280.          BYTE field number
  5281.          BYTE type
  5282.             00h inactive
  5283.             40h output field
  5284.             80h input field
  5285.             C0h deselected field
  5286.             C2h selected field
  5287.     F7h  "broadcast write"    write data to fields with program output bit
  5288.         set in field table entry, in field number order
  5289.          N BYTEs (total length of all program output fields)
  5290.     F8h  scroll field up a line
  5291.          BYTE field number
  5292.     F9h  scroll field down a line
  5293.          BYTE field number
  5294.     FAh  scroll field left
  5295.          BYTE field number
  5296.     FBh  scroll field right
  5297.          BYTE field number
  5298.     FCh  set field table header
  5299.          BYTE number of fields (must be <= existing number of fields)
  5300.          BYTE screen behavior bits
  5301.         bit 7  reserved
  5302.         bit 6  set if menu items may be selected via keyboard
  5303.         bit 5  set if left mouse button in "status" mode (press
  5304.             anywhere in window immediately returns control to app)
  5305.         bit 4  set if right mouse button in "status" mode
  5306.         bit 3  if set, select fields return contents or blanks rather
  5307.             than 'Y' or 'N'
  5308.         bit 2  if set, modified bits reset on return to application
  5309.         bits 0,1 = 00 no data returned on read of keyboard
  5310.                01 data returned as array of chars containing
  5311.                 all fields packed together, with no field
  5312.                 numbers
  5313.                10 data returned as numbered variable-length
  5314.                 records for all fields
  5315.                11 data returned as numbered variable-length
  5316.                 records for the fields which were modified
  5317.          BYTE current input field (updated by DESQview)
  5318.          BYTE current select field (updated by DESQview)
  5319.          BYTE attribute for select fields when they are pointed at
  5320.          BYTE attribute for select fields which have been selected
  5321.     FDh  reset modified bit for all fields
  5322.     FEh  reset selected and modified bits for all fields
  5323.     FFh  set up input fields
  5324.          6 BYTEs table header (see opcode FCh above)
  5325.          the field table entries, one for each field
  5326.          BYTE start row       \
  5327.          BYTE start column  \ if menu selection and start is to
  5328.          BYTE end row        / right or below end, select from kbd only
  5329.          BYTE end column   /
  5330.          BYTE field type
  5331.             bits 7,6 = 00 inactive (non-entry) field
  5332.                    01 echos keystrokes input to make menu selection
  5333.                    10 fill-in field
  5334.                    11 select field
  5335.             bit 5  field can be filled by broadcast write (F7h opcode)
  5336.             bit 4  reserved
  5337.             bit 3  reserved
  5338.             bit 2  reserved
  5339.             bit 1  set if field selected
  5340.             bit 0  set if field modified
  5341.          BYTE modifier
  5342.               if type is fill-in, then bit flags to determine behavior
  5343.               bit 7     if set, automatically enter CR when field full
  5344.               bit 6     move to next field when current field is full
  5345.               bit 5     if set, enter text from right end (for numbers)
  5346.               bit 4     if set, force input to uppercase
  5347.               bit 3     if set, clear old contents on first keystroke
  5348.               bit 2     if set, input returned when cursor moves out
  5349.                  of modified field ("validate",API level 2.02+)
  5350.               bit 1     reserved
  5351.               bit 0     reserved
  5352.               if select field, first key to press to activate
  5353.               00h if have to point-&-click or is an extended-ASCII
  5354.                   keystroke (only if two-key menus enabled)
  5355.          BYTE (select field only) normal color of field
  5356.          BYTE second key for select field.  This byte is present iff
  5357.               two-letter menu entries selected with opcode E5h, and
  5358.               in that case is present regardless of field type
  5359.          Note: DESQview uses and updates the actual copy of the information
  5360.            which is contained in the stream.  Thus this info must remain
  5361.            intact until after the data entry is complete.
  5362.  
  5363. MODE 01h "QUERY STREAM" (valid only for those opcodes listed here)
  5364.     A0h return logical cursor row in next byte
  5365.     A1h return logical cursor column in next byte
  5366.     A2h return top row of scrolling region in next byte
  5367.     A3h return left column of scrolling region in next byte
  5368.     A4h return row of physical window origin in next byte
  5369.     A5h return column of physical window origin in next byte
  5370.     A6h return height of physcial window in next byte
  5371.     A7h return width of physical window in next byte
  5372.     A8h return row of viewport origin in next byte
  5373.     A9h return column of viewport origin in next byte
  5374.     AAh return height of virtual screen in next byte
  5375.     ABh return width of virtual screen in next byte
  5376.     AFh return current video mode in next byte
  5377.     C0h return current logical cursor position in next two bytes
  5378.     C1h return top left corner of scrolling region in next two bytes
  5379.     C2h return current window position in next two bytes
  5380.     C3h return current window size in next two bytes
  5381.     C4h return current viewport origin in next two bytes
  5382.     C5h return current virtual screen size in next two bytes
  5383.     D0h \ overwritten with D0h if frames may fall off screen edge
  5384.     D1h /               D1h if frames always displayed entirely
  5385.     D2h \ overwritten with D2h if DESQview controls color palette
  5386.     D3h /               D3h if application changes color palette
  5387.     D4h \ overwritten with D4h if window visible
  5388.     D5h /               D5h if window hidden
  5389.     D6h \ overwritten with D6h if window has frame
  5390.     D7h /               D7h if window unframed
  5391.     D8h \ overwritten with D8h if reading characters from window
  5392.     D9h /               D9h if reading attributes from window
  5393.     DAh \ overwritten with DAh if using logical attributes
  5394.     DBh /               DBh if using physical attributes
  5395.     DCh \ overwritten with DCh if TTY control char interpretation on
  5396.     DDh /               DDh if TTY control char interpretation off
  5397.     DEh \ overwritten with DEh if writing both characters and attributes
  5398.     DFh /               DFh if leaving attributes untouched
  5399.     E2h return current color in next byte
  5400.     ECh get logical attributes for window contents
  5401.         BYTE execute call if currently in specified video mode
  5402.         bit 7    monochrome
  5403.         bit 6    color text, EGA/VGA graphics
  5404.         bit 5    medium-resolution CGA graphics
  5405.         bit 4    high-resolution CGA graphics
  5406.         BYTE which attributes to get
  5407.         bit 7 unused???
  5408.         bits 4-6 first attribute to get - 1
  5409.         bits 0-3 number of consecutive attributes
  5410.         N BYTEs buffer to hold attributes
  5411.     EDh get logical attributes for window frame
  5412.         BYTE execute call if currently in video mode (see opcode ECh)
  5413.         BYTE which attributes to get
  5414.         bit 7 unused???
  5415.         bits 4-6 first attribute to get - 1
  5416.         bits 0-3 number of consecutive attributes
  5417.         N BYTEs buffer to hold attributes
  5418.     EEh get characters for window frame
  5419.         BYTE execute call if currently in video mode (see opcode ECh)
  5420.         BYTE which attributes to get
  5421.         bit 7 unused???
  5422.         bits 4-6 first char to get - 1
  5423.         bits 0-3 number of consecutive chars
  5424.         N BYTEs buffer to hold chars
  5425.     EFh return first N characters of current window name
  5426.         BYTE    max length of returned name
  5427.         N BYTEs buffer to hold window name
  5428.     F3h return contents of specified field
  5429.         BYTE field number
  5430.         N BYTEs buffer to hold field contents (size exactly equal to field
  5431.             size)
  5432.     F5h get field table entry
  5433.         BYTE field number
  5434.         7-8 BYTEs buffer to hold field table entry
  5435.            Notes: DV < 2.26 always returns 7 bytes
  5436.               DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field
  5437.             table is using 8-byte entries and eighth byte after
  5438.             F5h is E7h (NOP); otherwise, 7 bytes are returned
  5439.               DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes
  5440.             depending on the field table entry size
  5441.     F6h get type of a field
  5442.         BYTE field number
  5443.         BYTE type
  5444.     FCh get field table header
  5445.         6 BYTEs buffer to store header
  5446.  
  5447. MODE 10h "MANAGER STREAM" (valid only for opcodes listed here)
  5448.     00h allow window to be moved horizontally
  5449.     01h allow window to be moved vertically
  5450.     02h allow window to change width
  5451.     03h allow window to change height
  5452.     04h allow window to be scrolled horizontally
  5453.     05h allow window to be scrolled vertically
  5454.     06h allow "Close Window" menu selection for application
  5455.     07h allow "Hide Window" menu selection for application
  5456.     08h allow application to be suspended ("Rearrange/Freeze")
  5457.     0Eh allow "Scissors" menu
  5458.     10h allow DESQview main menu to be popped up
  5459.     11h allow "Switch Windows" menu
  5460.     12h allow "Open Window" menu
  5461.     13h allow "Quit" menu selection
  5462.     20h-33h opposite of 00h-13h, disallow specified action
  5463.     40h notify if horizontal position of window changes
  5464.     41h notify if vertical position of window changes
  5465.     42h notify if width of window changes
  5466.     43h notify if height of window changes
  5467.     44h notify if window scrolled horizontally
  5468.     45h notify if window scrolled vertically
  5469.     46h notify if window is closed--program has to clean up and exit itself
  5470.     47h notify if window is hidden
  5471.     48h notify if "?" on main menu selected
  5472.     49h notify if pointer message sent to window
  5473.     4Ah notify if window is placed in foreground
  5474.     4Bh notify if window is placed in background
  5475.     4Ch notify if video mode changes
  5476.     4Dh notify if "Scissors" menu "Cut" option selected
  5477.     4Eh notify if "Scissors" menu "Copy" option selected
  5478.     4Fh notify if "Scissors" menu "Paste" option selected
  5479.     50h notify if DESQview main menu about to pop up
  5480.     51h notify if DESQview main menu popped down
  5481.     60h-71h     opposite of 40h-51h: don't notify on specified event
  5482.     84h attach window to parent task's window (both move together)
  5483.     85h detach window from parent task's window (may move independently)
  5484.     86h disable background operation for application
  5485.     87h enable running in background
  5486.     88h set minimum size of physical window
  5487.         BYTE rows
  5488.         BYTE columns
  5489.     89h set maximum size of physical window
  5490.         BYTE rows
  5491.         BYTE cols
  5492.     8Ah set primary asynchronous notification routine
  5493.         DWORD address of routine, 0000h:0000h means none (see also below)
  5494.     8Bh set async notification parameter
  5495.         DWORD 32-bit value passed to 8Ah async routine in DS:SI
  5496.     ACh (DV2.2+) perform regular select field attribute processing
  5497.     ADh (DV2.2+) protect attributes in selected field from being lost
  5498.     AEh make window default notify window for owning app (API level 2.00+)
  5499.     AFh set selected field marker character
  5500.         BYTE character to display at left edge of selected fields
  5501.     BCh set standard field processing mode
  5502.     BDh set alternate field processing mode (enables cursor pad for menus)
  5503.     BEh disables changing reverse logical attributes with ECh opcode
  5504.     BFh enables changing reverse logical attributes with ECh opcode
  5505.     C0h make current window topmost in system
  5506.     C1h force current process into foreground
  5507.     C2h make current window topmost in process
  5508.     C3h position mouse pointer relative to origin of current field
  5509.         BYTE rows below upper left corner of field
  5510.         BYTE columns to right of upper left corner of field
  5511.     C4h position mouse pointer relative to origin of given field
  5512.         BYTE field number
  5513.         BYTE rows below upper left corner of field
  5514.         BYTE columns to right of upper left corner of field
  5515.     C5h orphan current window (also hides it)
  5516.         Note: must be last in stream; all subsequent commands ignored
  5517.     C6h show all windows for this process
  5518.     C7h hide all windows for this process
  5519.     C8h suspend process and hide all its windows
  5520.     C9h force current process into background
  5521.     CAh make current window bottom-most in process
  5522.     CBh cancel current window manager operation, remove DV menu, give
  5523.         control to topmost application
  5524.     CCh orphan window and give it to the system for use as paste data
  5525.     CEh reorder windows
  5526.         DWORD pointer to null-terminated list of words
  5527.           each word is segment of object handle for a window
  5528.     FFh no operation
  5529.  
  5530. MODES 14h to 1Fh "USER STREAMS"
  5531.     normally NOPs, but may be defined by SETESC message to invoke FAR
  5532.     routines, one for each mode number
  5533.       on entry to handler,
  5534.         DS:SI -> first byte of actual stream (not header)
  5535.         CX = number of bytes in stream
  5536.         ES:DI = window's handle
  5537.  
  5538. Asynchronous notification routine defined by manager stream 8Ah called with:
  5539.     ES:DI = handle of window
  5540.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  5541.        mailbox contains message indicating event
  5542.           Opcode
  5543.            40h  horizontal movement
  5544.            DWORD object handle of window
  5545.            BYTE     new row
  5546.            BYTE     new col
  5547.            41h  vertical movement
  5548.            DWORD object handle of window
  5549.            BYTE     new row
  5550.            BYTE     new col
  5551.            42h  horizontal size change
  5552.            DWORD object handle of window
  5553.            BYTE     new rows
  5554.            BYTE     new cols
  5555.            43h  vertical size change
  5556.            DWORD object handle of window
  5557.            BYTE     new rows
  5558.            BYTE     new cols
  5559.            44h  scrolled horizontally
  5560.            DWORD object handle of window
  5561.            BYTE     mouse row within window
  5562.            BYTE     mouse column within window
  5563.            BYTE     field mouse is on, 0 if none
  5564.            BYTE     amount moved: >0 right, <0 left, 0 done
  5565.            45h  scrolled vertically
  5566.            DWORD object hande of window
  5567.            BYTE     mouse row within window
  5568.            BYTE     mouse column within window
  5569.            BYTE     field mouse is on, 0 if none
  5570.            BYTE     amount moved: >0 down, <0 up, 0 done
  5571.            46h  window close request
  5572.            DWORD object handle of window
  5573.            BYTE     mouse pointer row
  5574.            BYTE     mouse pointer column
  5575.            BYTE     field mouse is on, 0 if none
  5576.            47h  application's windows hidden
  5577.            48h  Help for Program selected
  5578.            DWORD object handle of window
  5579.            BYTE     mouse pointer row
  5580.            BYTE     mouse pointer column
  5581.            BYTE     field mouse is on, 0 if none
  5582.            49h  pointer message sent to window
  5583.            DWORD pointer handle which received message
  5584.            4Ah  switched to window from another ("raise")
  5585.            4Bh  switched away from the window ("lower")
  5586.            4Ch  video mode changed
  5587.            BYTE new BIOS video mode
  5588.            4Dh  Scissors/cUt selected
  5589.            DWORD object handle of window
  5590.            BYTE     row of upper left corner
  5591.            BYTE     column of upper left corner
  5592.            BYTE     field number ul corner is in, 0=none
  5593.            DWORD handle of orphaned window created with
  5594.              copy of data from specified region
  5595.            BYTE     height of region
  5596.            BYTE     width of region
  5597.            4Eh  Scissors/Copy selected
  5598.            DWORD object handle of window
  5599.            BYTE     row of upper left corner
  5600.            BYTE     column of upper left corner
  5601.            BYTE     field number ul corner is in, 0=none
  5602.            DWORD handle of orphaned window created with
  5603.              copy of data from specified region
  5604.            BYTE     height of region
  5605.            BYTE     width of region
  5606.            4Fh  Scissors/Paste selected
  5607.            DWORD object handle of window
  5608.            BYTE     row of upper left corner
  5609.            BYTE     column of upper left corner
  5610.            BYTE     field number ul corner is in, 0=none
  5611.            DWORD handle of orphaned window with data
  5612.            BYTE     height of region
  5613.            BYTE     width of region
  5614.             Note: orphaned data window should be adopted or freed
  5615.                 when done
  5616.            50h  main menu about to pop up
  5617.            51h  main menu popped down
  5618. Return: all registers unchanged
  5619. --------Q-1512--BH06-------------------------
  5620. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  5621.     AH = 12h
  5622.     BH = 06h
  5623.     BL = object
  5624.         00h object handle in DWORD on top of stack
  5625.         mailbox, keyboard, pointer, or timer
  5626.         (DV 2.50+) window
  5627.         01h (DV 2.50+) current task's window
  5628.         04h given task's keyboard (task's handle on top of stack)
  5629.         05h current task's default keyboard
  5630.     STACK: DWORD new priority of object in task's OBJECTQ
  5631.             (new priority of task if window handle)
  5632. Notes:    initially all objects have the same default value.  Should only make
  5633.       relative adjustments to this default value.
  5634.     when changing priorities, all objects already on the objectq are
  5635.       reordered
  5636.     for window handles, only the non-blocked task(s) with the highest
  5637.       priority receive CPU time under DESQview 2.50-2.52; the default
  5638.       priority is 0Ah
  5639. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  5640. --------Q-1512--BH07-------------------------
  5641. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  5642.     AH = 12h
  5643.     BH = 07h
  5644.     BL = object
  5645.         00h object handle in DWORD on top of stack
  5646.         mailbox, keyboard, pointer, or timer
  5647.         (DV 2.50+) window
  5648.         01h (DV 2.50+) current task's window
  5649.         04h given task's keyboard (task's handle on top of stack)
  5650.         05h current task's default keyboard
  5651. Return: STACK: DWORD object priority
  5652. Note:    initially all objects have the same default value.  Should only make
  5653.       relative adjustments to this default value.
  5654. SeeAlso: AH=12h/BH=06h
  5655. --------Q-1512--BH08-------------------------
  5656. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  5657.     AH = 12h
  5658.     BH = 08h
  5659.     BL = object
  5660.         00h handle in DWORD on top of stack
  5661.         window: total character positions in window
  5662.         timer: elapsed time since timer started
  5663.         pointer: number of messages queued to pointer object
  5664.         panel: number of panels in panel file
  5665.         keyboard: number of input buffers queued
  5666.         01h total chars in current task's default window
  5667.         02h number of messages in task's mailbox (task's handle on stack)
  5668.         03h number of messages in current task's mailbox
  5669.         04h number of input buffers queued in task's kbd (handle on stack)
  5670.         05h number of input buffers queued for current task's default kbd
  5671.         06h number of objects queued in OBJECTQ (task's handle on stack)
  5672.         07h number of objects queued in current task's OBJECTQ
  5673.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  5674.         0Dh (DV 2.26+) total chars in parent task's window
  5675. Return: DWORD on top of stack is result
  5676. Note:    for panel objects, a count of zero is returned if no panel file is open
  5677.       for the object
  5678. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  5679. --------Q-1512--BH09-------------------------
  5680. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  5681.     AH = 12h
  5682.     BH = 09h
  5683.     BL = object
  5684.         00h handle in DWORD on top of stack
  5685.         window: get chars/line
  5686.         timer: get 1/100 seconds remaining before timer expires
  5687.         mailbox: (DV/X) get number of bytes queued to mailbox
  5688.         01h get number of chars/line in current task's default window
  5689.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  5690.         0Dh (DV 2.26+) get chars/line in parent task's window
  5691. Return: DWORD on top of stack is length
  5692. SeeAlso: AH=12h/BH=08h
  5693. --------Q-1512--BH0A-------------------------
  5694. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  5695.     AH = 12h
  5696.     BH = 0Ah
  5697.     BL = window to write to
  5698.         00h window handle is DWORD on top of stack
  5699.         01h current task's default window
  5700.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5701.         0Dh (DV 2.26+) default window of parent of current task
  5702.     STACK:    DWORD count of attributes
  5703.         DWORD address of attribute string
  5704.         DWORD count of characters
  5705.         DWORD address of character string
  5706. Notes:    if one string is longer than the other, the shorter one will be reused
  5707.       until the longer one is exhausted
  5708.     the cursor is left just after the last character written
  5709. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  5710. --------Q-1512--BH0A-------------------------
  5711. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  5712.     AH = 12h
  5713.     BH = 0Ah
  5714.     BL = mailbox to write to
  5715.         00h handle is DWORD on top of stack
  5716.         02h default mailbox of task whose handle is on top of stack
  5717.         03h current task's default mailbox
  5718.     STACK:    DWORD    status (low byte)
  5719.         DWORD    length of message
  5720.         DWORD    address of message
  5721. Notes:    the message is copied into either system or common memory
  5722.     insufficient memory normally causes the process to be aborted; under
  5723.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  5724. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  5725. --------Q-1512--BH0A-------------------------
  5726. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  5727.     AH = 12h
  5728.     BH = 0Ah
  5729.     BL = object
  5730.         00h handle is DWORD on top of stack
  5731.         timer: start timer for specified interval
  5732.         pointer: set control flags (see below)
  5733.         keyboard: set control flags (see below)
  5734.         04h set control flags on KEYBOARD object (handle on top of stack)
  5735.         05h set control flags on task's default KEYBOARD object
  5736.     STACK: (if timer)   DWORD duration in 1/100 seconds
  5737.            (otherwise)  DWORD bits to set
  5738. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  5739.  
  5740. Bitfields for keyboard object bits:
  5741. Bit(s)    Description
  5742.  15    reserved, can't be set
  5743.  14    unused
  5744.  13    reserved, can't be set
  5745.  12-6    unused
  5746.  5    (DV 2.2+) exclusive input
  5747.  4    filter all keys (used with handler established by SETESC)
  5748.     if 0, only keys that would normally be displayed are filtered
  5749.  3    program continues executing while input in progress
  5750.  2    insert mode active for field mode
  5751.  1    hardware cursor displayed when task is hardware cursor owner
  5752.     must be set if keyboard in field mode and field table includes input
  5753.       fields
  5754.  0    keyboard is in field mode rather than keystroke mode
  5755.  
  5756. Bitfields for pointer object bits:
  5757. Bit(s)    Description
  5758.  15    reserved, can't be set
  5759.  14-8    unused
  5760.  7    mouse pointer is hidden while in window
  5761.  6    get messages even if window not topmost
  5762.  5    get messages even if window not foreground
  5763.  4    multiple clicks separated by less than 1/3 second are counted and
  5764.       returned in a single message
  5765.  3    pointer position is relative to screen origin, not window origin
  5766.  2    send message on button release as well as button press
  5767.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  5768.       pointer leaves the window
  5769.  0    send message only on button activity, not movement
  5770.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  5771. --------Q-1512--BH0B-------------------------
  5772. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  5773.     AH = 12h
  5774.     BH = 0Bh
  5775.     BL = window to write attributes to
  5776.         00h handle is DWORD on top of stack
  5777.         01h current task's default window
  5778.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5779.         0Dh (DV 2.26+) default window of parent of current task
  5780.     STACK:    DWORD number of attributes to write
  5781.         DWORD address of attributes
  5782. Note:    the attributes are written starting at the current cursor position; the
  5783.       cursor is left just after the last position written
  5784. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  5785. --------Q-1512--BH0B-------------------------
  5786. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  5787.     AH = 12h
  5788.     BH = 0Bh
  5789.     BL = mailbox to write to
  5790.         00h handle is DWORD on top of stack
  5791.         02h default mailbox of task whose handle is on top of stack
  5792.         03h current task's default mailbox
  5793.     STACK:    DWORD    status (low byte)
  5794.         DWORD    length of message
  5795.         DWORD    address of message
  5796. Notes:    only a pointer to the message is stored, but the write may still fail
  5797.       due to insufficient memory
  5798.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  5799. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  5800. --------Q-1512--BH0B-------------------------
  5801. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  5802.     AH = 12h
  5803.     BH = 0Bh
  5804.     BL = OBJECTQ from which to remove all copies of a particular object
  5805.         06h OBJECTQ of task whose handle is on top of stack
  5806.         07h task's default OBJECTQ
  5807.     STACK:    DWORD    handle of object to remove
  5808. Note:    should be sent whenever an object is erased or closed
  5809. --------Q-1512--BH0B-------------------------
  5810. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  5811.     AH = 12h
  5812.     BH = 0Bh
  5813.     BL = object
  5814.         00h handle is DWORD on top of stack
  5815.         pointer: reset control flags
  5816.         keyboard: reset control flags
  5817.         04h clear control flags on KEYBOARD object (handle on top of stack)
  5818.         05h clear control flags on task's default KEYBOARD object
  5819.     STACK:    DWORD    which bits to clear (see AH=12h/BH=0Ah"OBJECT")
  5820. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  5821. --------Q-1512--BH0C-------------------------
  5822. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  5823.     AH = 12h
  5824.     BH = 0Ch
  5825.     BL = object
  5826.         00h handle is DWORD on top of stack
  5827.         window:      fill with given character from scroll origin to end
  5828.         keyboard: attach to a window
  5829.         timer:      open
  5830.         pointer:  start taking input for window
  5831.         panel:      associate with a panel file
  5832.         01h fill task's default window with given char from scrl org to end
  5833.         02h open given task's mailbox for input (task's handle on stack)
  5834.         03h open current task's mailbox
  5835.         04h attach a KEYBOARD to a window (handle on top of stack)
  5836.         05h attach task's default KEYBOARD to a window
  5837.         06h open a task's OBJECTQ (task's handle on top of stack)
  5838.         07h open current task's OBJECTQ
  5839.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  5840.         0Dh (DV 2.26+) fill default window of parent of current task
  5841.      STACK: (if window)   DWORD character to fill with
  5842.         (if keyboard) DWORD handle of window to attach to
  5843.         (if pointer)  DWORD handle of window to attach to
  5844.         (if panel)    DWORD length of filename or resident panel
  5845.                   DWORD address of filename or resident panel
  5846.         (otherwise)   nothing
  5847. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  5848.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  5849.       the panel file
  5850.     result code of open may be retrieved with STATUS message
  5851.     logical cursor is left at scroll origin after filling window
  5852.     the task opening a mailbox becomes its owner, and the only task allowed
  5853.       to read the mailbox
  5854.     messages are only sent to a pointer object when the mouse is positioned
  5855.       in the window to which the pointer has been attached
  5856.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  5857.       messages automatically open the timer
  5858. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  5859. --------Q-1512--BH0D-------------------------
  5860. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  5861.     AH = 12h
  5862.     BH = 0Dh
  5863.     BL = object
  5864.         00h handle is DWORD on top of stack
  5865.         timer:      close
  5866.         keyboard: detach from window and discard queued input
  5867.         pointer:  stop taking input
  5868.         panel:      close
  5869.         mailbox:  close, unlock, and discard any pending messages
  5870.         02h close given task's mailbox (task's handle on top of stack)
  5871.         03h close task's default mailbox
  5872.         04h close KEYBOARD object (handle on top of stack)
  5873.         05h close task's default KEYBOARD
  5874.         06h close given task's OBJECTQ (task's handle on top of stack)
  5875.         07h close current task's OBJECTQ
  5876. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  5877.       ERASE message (AH=12h/BH=0Eh)
  5878.     when a panel object is closed, the panel file and any panels currently
  5879.       in use are freed; window and keyboard objects created by APPLY are
  5880.       not affected, but field mode input ceases
  5881.     open but idle timer objects consume a small amount of CPU time
  5882. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  5883. --------Q-1512--BH0E-------------------------
  5884. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  5885.     AH = 12h
  5886.     BH = 0Eh
  5887.     BL = object
  5888.         00h handle is DWORD on top of stack
  5889.         window:      clear from scroll origin to end of window
  5890.         keyboard: discard input
  5891.         timer:      cancel current interval
  5892.         pointer:  discard all pending messages
  5893.         mailbox:  discard all pending messages
  5894.         01h clear task's default window from scroll origin to end
  5895.         02h discard all queued messages in mailbox (handle on top of stack)
  5896.         03h discard all queued messages in current task's default mailbox
  5897.         04h discard all input queued to KEYBOARD (handle on top of stack)
  5898.         05h discard all input queued to task's default KEYBOARD
  5899.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  5900.         07h remove all objects from current task's OBJECTQ
  5901.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  5902.         0Dh (DV 2.26+) clear default window of parent of current task
  5903. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  5904. SeeAlso: AH=12h/BH=02h
  5905. --------Q-1512--BH0F-------------------------
  5906. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  5907.     AH = 12h
  5908.     BH = 0Fh
  5909.     BL = object
  5910.         00h handle is DWORD on top of stack
  5911.         timer:     is it running?
  5912.         pointer: return status of last message
  5913.         panel:     verify success of last OPEN or APPLY
  5914.         02h return status of last msg READ from mailbox (handle on stack)
  5915.         03h return status of last msg READ from task's default mailbox
  5916.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  5917.         05h get status of last msg from task's default KEYBOARD
  5918.         06h return whether OBJECTQ is open or not (handle on top of stack)
  5919.         07h return whether task's default OBJECTQ is open or not
  5920. Return: DWORD on top of stack is status
  5921. Notes:    if object is a panel object, the status indicates the error code:
  5922.       00h successful
  5923.       14h panel name not in panel directory
  5924.       15h not enough memory to apply panel
  5925.       16h invalid panel format
  5926.       17h panel file already open
  5927.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  5928.       95h not enough memory to open panel file     > that the panel was
  5929.       98h null panel file name            /  not opened
  5930.     if object is a timer, the status is:
  5931.       00000000h open but not running
  5932.       40000000h open and running
  5933.       80000000h closed
  5934.     if object is an OBJECTQ, the status is:
  5935.       00000000h open
  5936.       80000000h closed
  5937.     if object is a keyboard in keystroke mode, the status is the extended
  5938.       character code (scan code) of the last keystroke
  5939.     if object is a keyboard in field mode, the status indicates the reason
  5940.       for the last return from the field manager
  5941.       00h Enter key pressed
  5942.       01h Button 1 or keystroke selection
  5943.       02h Button 2
  5944.       03h validation
  5945.       04h auto Enter on field
  5946.       1Bh Escape pressed
  5947.       46h ^Break pressed
  5948.       other: extended code for key terminating input
  5949.     the status of mailbox messages sent by the window manager is always 80h
  5950.     the status of a pointer message is the same as the status field in the
  5951.       message
  5952. SeeAlso: AH=12h/BH=04h"READ"
  5953. --------Q-1512--BH10-------------------------
  5954. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  5955.     AH = 12h
  5956.     BH = 10h
  5957.     BL = object
  5958.         00h handle is DWORD on top of stack
  5959.         window: return TRUE if logical cursor past end of window
  5960.         mailbox: ???
  5961.         01h returns TRUE if logical cursor past end of task's def window
  5962.         02h return ??? for task's mailbox (task's handle on top of stack)
  5963.         03h return ??? for current task's mailbox
  5964.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  5965.         0Dh (DV 2.26+) check log cursor of window of parent task
  5966. Return: DWORD on top of stack is status
  5967. --------Q-1512--BH11-------------------------
  5968. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  5969.     AH = 12h
  5970.     BH = 11h
  5971.     BL = window for which to move cursor
  5972.         00h window's handle is DWORD on top of stack
  5973.         01h task's default window
  5974.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5975.         0Dh (DV 2.26+) default window of parent of current task
  5976.     STACK: DWORD column
  5977.            DWORD row
  5978. --------Q-1512--BH11-------------------------
  5979. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  5980.     AH = 12h
  5981.     BH = 11h
  5982.     BL = mailbox to name
  5983.         00h DWORD on top of stack is mailbox handle
  5984.         02h use given task's mailbox (task's handle on top of stack)
  5985.         03h use current task's default mailbox
  5986.     STACK: DWORD length of name
  5987.            DWORD address of name
  5988. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  5989. --------Q-1512--BX1100-----------------------
  5990. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  5991.     AH = 12h
  5992.     BX = 1100h
  5993.     STACK: DWORD object handle for pointer object
  5994.            DWORD number of colums to scale pointer position to
  5995.            DWORD number of rows to scale pointer position to
  5996. SeeAlso: AH=12h/BX=1200h
  5997. --------Q-1512--BH12-------------------------
  5998. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  5999.     AH = 12h
  6000.     BH = 12h
  6001.     BL = window to read from
  6002.         00h handle is DWORD on top of stack
  6003.         01h read next N chars or attributes on task's default window
  6004.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  6005.         0Dh (DV 2.26+) read default window of parent of current task
  6006.     STACK: DWORD count
  6007. Return: STACK: DWORD number of bytes actually read
  6008.            DWORD address of buffer containing data
  6009. Notes:    reading starts at the current logical cursor position; the cursor is
  6010.       updated to point at the character following the last one read
  6011.     any translucent blanks (FFh) which are visible on screen are changed
  6012.       to the character which is seen through them
  6013.     the string produced by the read is placed in an input buffer which may
  6014.       be reused by the next READ or READN of a window
  6015.     window stream opcodes D8h and D9h determine whether the read returns
  6016.       characters or attributes
  6017. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  6018. --------Q-1512--BH12-------------------------
  6019. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  6020.     AH = 12h
  6021.     BH = 12h
  6022.     BL = mailbox for which to retrieve name
  6023.         00h DWORD on top of stack is mailbox handle
  6024.         02h use given task's mailbox (task's handle on top of stack)
  6025.         03h use current task's default mailbox
  6026.     STACK: DWORD length of buffer for name
  6027.            DWORD pointer to buffer
  6028. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  6029. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  6030. Note:    the returned name is not NUL-terminated
  6031. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  6032. --------Q-1512--BX1200-----------------------
  6033. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  6034.     AH = 12h
  6035.     BX = 1200h
  6036.     STACK: DWORD object handle for pointer
  6037. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  6038.            DWORD pointer pos scaled as if window were this many rows high
  6039. SeeAlso: AH=12h/BX=1100h
  6040. --------Q-1512--BH13-------------------------
  6041. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  6042.     AH = 12h
  6043.     BH = 13h
  6044.     BL = window object
  6045.         00h DWORD on top of stack is handle for window to redraw
  6046.         01h redraw task's default window
  6047.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  6048.         0Dh (DV 2.26+) redraw default window of parent of current task
  6049. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  6050. --------Q-1512--BH13-------------------------
  6051. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  6052.     AH = 12h
  6053.     BH = 13h
  6054.     BL = mailbox from which to read
  6055.         00h DWORD on top of stack is mailbox handle
  6056.         02h use given task's mailbox (task's handle on top of stack)
  6057.         03h use current task's default mailbox
  6058.     STACK: DWORD size of buffer in bytes
  6059.            DWORD pointer to buffer
  6060. Return: STACK: DWORD number of bytes read
  6061. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  6062. Notes:    this call blocks if no input is available, but will return less than
  6063.       the requested number of bytes if some (but insufficient) data is
  6064.       available
  6065.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  6066.       4 or 5 set, as common memory may be exhausted by that call when
  6067.       attempting to read the next message
  6068. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  6069. --------Q-1512--BX1300-----------------------
  6070. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  6071.     AH = 12h
  6072.     BX = 1300h
  6073.     STACK: DWORD object handle for pointer
  6074.            DWORD character to use for pointer
  6075. --------Q-1512--BH14-------------------------
  6076. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  6077.     AH = 12h
  6078.     BH = 14h
  6079.     BL = message modifier
  6080.         00h handle is DWORD on top of stack
  6081.         01h define user stream
  6082.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  6083.         05h intercept keystrokes from task's default KEYBOARD to a window
  6084.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  6085.                  DWORD address of FAR user stream handler
  6086.            (if keyboard) DWORD address of FAR filter function
  6087.  
  6088. The keyboard filter function is called when the keyboard is in field mode.  On
  6089. entry,
  6090.     AL = character
  6091.     AH = 00h or extended ASCII code if AL = 00h
  6092.     BL = field number
  6093.     CH = cursor column
  6094.     CL = cursor row
  6095.     DL = field type modifier (sixth item in field table entry)
  6096.     DH = seventh item in field table entry
  6097.     ES:SI = window's handle
  6098.     DS:DI -> field table entry for field containing the cursor
  6099. The filter function should return
  6100.     AH = 00h use keystroke
  6101.          01h ignore keystroke
  6102.          FFh beep and ignore keystroke
  6103. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  6104. --------Q-1512--BH14-------------------------
  6105. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  6106.     AH = 12h
  6107.     BH = 14h
  6108.     BL = object
  6109.         00h mailbox handle is DWORD on top of stack
  6110.         02h use given task's mailbox (task's handle on top of stack)
  6111.         03h use current task's default mailbox
  6112. Note:    release exclusive access by sending CLOSE message to mailbox
  6113.     access may be requested multiple times, and requires multiple CLOSEs
  6114. SeeAlso: AH=12h/BH=0Dh
  6115. --------Q-1512--BH15-------------------------
  6116. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  6117.     AH = 12h
  6118.     BH = 15h
  6119.     BL = object
  6120.         00h DWORD on top of stack
  6121.         mailbox, keyboard, or pointer only
  6122.         02h mailbox for task whose handle is on top of stack
  6123.         03h mailbox for current task
  6124.         04h keyboard for task whose handle is on top of stack
  6125.         05h keyboard for current task
  6126.     STACK: DWORD flags (see below)
  6127. Return: nothing
  6128. Notes:    only available if the API level has been set to at least 2.20
  6129.     equivalent to performing SUBFROM and ADDTO calls on the object
  6130.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  6131.       "READ" (see AH=12h/BX=1300h"READINTO") to retrieve messages
  6132. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  6133.  
  6134. Bitfields for mailbox object flags:
  6135. Bit(s)    Description
  6136.  0    all mail messages in common memory
  6137.  1    allow write even if closed
  6138.  2    don't erase messages when mailbox closed
  6139.  4    (DV/X) append messages with like status and sender (stream-oriented 
  6140.       mail)
  6141.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  6142.  6    (DV/X) make mailbox into non-owned mailbox
  6143.  
  6144. Bitfields for keyboard object flags:
  6145. Bit(s)    Description
  6146.  5    exclusive input when keyboard in use for input
  6147. --------Q-1512--BH16-------------------------
  6148. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  6149.     AH = 12h
  6150.     BH = 16h
  6151.     BL = object
  6152.         00h DWORD on top of stack
  6153.         mailbox, keyboard, or pointer only
  6154.         02h mailbox for task whose handle is on top of stack
  6155.         03h mailbox for current task
  6156.         04h keyboard for task whose handle is on top of stack
  6157.         05h keyboard for current task
  6158. Return: STACK: DWORD current control flags (see AH=12h/BH=15h)
  6159. Notes:    only available if the API level has been set to at least 2.20
  6160.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  6161.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  6162. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  6163. --------Q-1512--BH17-------------------------
  6164. INT 15 - DESQview v2.42-2.52 - BUG
  6165.     AH = 12h
  6166.     BH = 17h
  6167.     BL = object
  6168.         00h DWORD on top of stack
  6169.         mailbox, keyboard, or pointer only
  6170.         02h mailbox for task whose handle is on top of stack
  6171.         03h mailbox for current task
  6172.         04h keyboard for task whose handle is on top of stack
  6173.         05h keyboard for current task
  6174. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  6175.       keyboards, and pointers, but causes a random branch
  6176.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  6177. --------Q-1512--BH80-------------------------
  6178. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  6179.     AH = 12h
  6180.     BH = 80h
  6181. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  6182.       not pop up a "Programming Error" window, instead returning an error
  6183.       code in AL:
  6184.         00h no error
  6185.         01h invalid values
  6186.         02h alias invalid
  6187.         03h handle valid but wrong type
  6188.         04h invalid handle
  6189. SeeAlso: AH=12h/BH=00h
  6190. --------Q-1512--BH81-------------------------
  6191. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  6192.     AH = 12h
  6193.     BH = 81h
  6194. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  6195.       not pop up a "Programming Error" window, instead returning an error
  6196.       code in AL (see AH=12h/BH=80h)
  6197. SeeAlso: AH=12h/BH=01h
  6198. --------Q-1512--BH82-------------------------
  6199. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  6200.     AH = 12h
  6201.     BH = 82h
  6202. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  6203.       not pop up a "Programming Error" window, instead returning an error
  6204.       code in AL (see AH=12h/BH=80h)
  6205. SeeAlso: AH=12h/BH=02h
  6206. --------Q-1512--BH83-------------------------
  6207. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  6208.     AH = 12h
  6209.     BH = 83h
  6210. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  6211.       not pop up a "Programming Error" window, instead returning an error
  6212.       code in AL (see AH=12h/BH=80h)
  6213. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  6214. --------Q-1512--BH84-------------------------
  6215. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  6216.     AH = 12h
  6217.     BH = 84h
  6218. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  6219.       not pop up a "Programming Error" window, instead returning an error
  6220.       code in AL (see AH=12h/BH=80h)
  6221. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  6222. --------Q-1512--BH85-------------------------
  6223. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  6224.     AH = 12h
  6225.     BH = 85h
  6226. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  6227.       not pop up a "Programming Error" window, instead returning an error
  6228.       code in AL (see AH=12h/BH=80h)
  6229. SeeAlso: AH=12h/BH=05h
  6230. --------Q-1512--BH86-------------------------
  6231. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  6232.     AH = 12h
  6233.     BH = 86h
  6234. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  6235.       not pop up a "Programming Error" window, instead returning an error
  6236.       code in AL (see AH=12h/BH=80h)
  6237. SeeAlso: AH=12h/BH=06h
  6238. --------Q-1512--BH87-------------------------
  6239. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  6240.     AH = 12h
  6241.     BH = 87h
  6242. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  6243.       not pop up a "Programming Error" window, instead returning an error
  6244.       code in AL (see AH=12h/BH=80h)
  6245. SeeAlso: AH=12h/BH=07h
  6246. --------Q-1512--BH88-------------------------
  6247. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  6248.     AH = 12h
  6249.     BH = 88h
  6250. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  6251.       not pop up a "Programming Error" window, instead returning an error
  6252.       code in AL (see AH=12h/BH=80h)
  6253. SeeAlso: AH=12h/BH=08h
  6254. --------Q-1512--BH89-------------------------
  6255. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  6256.     AH = 12h
  6257.     BH = 89h
  6258. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  6259.       not pop up a "Programming Error" window, instead returning an error
  6260.       code in AL (see AH=12h/BH=80h)
  6261. SeeAlso: AH=12h/BH=09h
  6262. --------Q-1512--BH8A-------------------------
  6263. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  6264.     AH = 12h
  6265.     BH = 8Ah
  6266. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  6267.       not pop up a "Programming Error" window, instead returning an error
  6268.       code in AL (see AH=12h/BH=80h)
  6269. SeeAlso: AH=12h/BH=0Ah
  6270. --------Q-1512--BH8B-------------------------
  6271. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  6272.     AH = 12h
  6273.     BH = 8Bh
  6274. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  6275.       not pop up a "Programming Error" window, instead returning an error
  6276.       code in AL (see AH=12h/BH=80h)
  6277. SeeAlso: AH=12h/BH=0Bh
  6278. --------Q-1512--BH8C-------------------------
  6279. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  6280.     AH = 12h
  6281.     BH = 8Ch
  6282. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  6283.       not pop up a "Programming Error" window, instead returning an error
  6284.       code in AL (see AH=12h/BH=80h)
  6285. SeeAlso: AH=12h/BH=0Ch
  6286. --------Q-1512--BH8D-------------------------
  6287. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  6288.     AH = 12h
  6289.     BH = 8Dh
  6290. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  6291.       not pop up a "Programming Error" window, instead returning an error
  6292.       code in AL (see AH=12h/BH=80h)
  6293. SeeAlso: AH=12h/BH=0Dh
  6294. --------Q-1512--BH8E-------------------------
  6295. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  6296.     AH = 12h
  6297.     BH = 8Eh
  6298. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  6299.       not pop up a "Programming Error" window, instead returning an error
  6300.       code in AL (see AH=12h/BH=80h)
  6301. SeeAlso: AH=12h/BH=0Eh
  6302. --------Q-1512--BH8F-------------------------
  6303. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  6304.     AH = 12h
  6305.     BH = 8Fh
  6306. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  6307.       not pop up a "Programming Error" window, instead returning an error
  6308.       code in AL (see AH=12h/BH=80h)
  6309. SeeAlso: AH=12h/BH=0Fh
  6310. --------Q-1512--BH90-------------------------
  6311. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  6312.     AH = 12h
  6313.     BH = 90h
  6314. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  6315.       not pop up a "Programming Error" window, instead returning an error
  6316.       code in AL (see AH=12h/BH=80h)
  6317. SeeAlso: AH=12h/BH=10h
  6318. --------Q-1512--BH91-------------------------
  6319. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  6320.     AH = 12h
  6321.     BH = 91h
  6322. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  6323.       not pop up a "Programming Error" window, instead returning an error
  6324.       code in AL (see AH=12h/BH=80h)
  6325. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  6326. --------Q-1512--BH92-------------------------
  6327. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  6328.     AH = 12h
  6329.     BH = 92h
  6330. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  6331.       not pop up a "Programming Error" window, instead returning an error
  6332.       code in AL (see AH=12h/BH=80h)
  6333. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  6334. --------Q-1512--BH93-------------------------
  6335. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  6336.     AH = 12h
  6337.     BH = 93h
  6338. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  6339.       not pop up a "Programming Error" window, instead returning an error
  6340.       code in AL (see AH=12h/BH=80h)
  6341. SeeAlso: AH=12h/BH=13h
  6342. --------Q-1512--BH94-------------------------
  6343. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  6344.     AH = 12h
  6345.     BH = 94h
  6346. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  6347.       not pop up a "Programming Error" window, instead returning an error
  6348.       code in AL (see AH=12h/BH=80h)
  6349. SeeAlso: AH=12h/BH=14h
  6350. --------Q-1512--BH95-------------------------
  6351. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  6352.     AH = 12h
  6353.     BH = 95h
  6354. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  6355.       not pop up a "Programming Error" window, instead returning an error
  6356.       code in AL (see AH=12h/BH=80h)
  6357. SeeAlso: AH=12h/BH=15h
  6358. --------Q-1512--BH96-------------------------
  6359. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  6360.     AH = 12h
  6361.     BH = 96h
  6362. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  6363.       not pop up a "Programming Error" window, instead returning an error
  6364.       code in AL (see AH=12h/BH=80h)
  6365. SeeAlso: AH=12h/BH=16h
  6366. --------T-1513-------------------------------
  6367. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  6368.     AH = 13h
  6369.     STACK:    WORD    process ID
  6370. Return: AX = status (SYS_OK or SYS_ERROR)
  6371. SeeAlso: AH=12h"VMiX"
  6372. --------T-1513-------------------------------
  6373. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  6374.     AH = 13h
  6375. Return: BX:AX -> task control block (see below)
  6376. SeeAlso: AH=15h"MultiDOS"
  6377.  
  6378. Format of MultiDOS Plus v4.0 task control block:
  6379. Offset    Size    Description
  6380.  00h    DWORD    pointer to next TCB
  6381.  04h  8 BYTEs    ASCIZ task name
  6382.  0Ch  2 BYTEs    ???
  6383.  0Eh    WORD    task PSP segment
  6384.  10h    WORD    abort/suspend flags
  6385.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  6386.  14h    WORD    priority level (0000h-FFFEh)
  6387.  16h    WORD    time slice counter
  6388.  18h  2 BYTEs    ???
  6389.  1Ah    WORD    suspend timer value
  6390.  1Ch    WORD    stack segment
  6391.  1Eh    WORD    stack pointer
  6392.  20h    WORD    display type
  6393.  22h    WORD    display memory
  6394.  24h  2 BYTEs    ???
  6395.  26h    WORD    termination count
  6396.  28h    WORD    equipment flag for BIO10 driver
  6397.  2Ah    BYTE    background CRT mode
  6398.  2Bh    WORD    screen width in columns
  6399.  2Dh    WORD    screen size in bytes
  6400.  2Fh    WORD    segment of physical screen memory
  6401.  31h 16 BYTEs    eight cursor positions
  6402.  41h    WORD    current cursor shape
  6403.  43h    BYTE    active display page
  6404.  44h    WORD    CRT controller I/O port base
  6405.  46h  2 BYTEs    ???
  6406.  48h    WORD    foreground task flag
  6407.  4Ah  6 BYTEs    ???
  6408.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  6409.  52h    DWORD    old INT 22
  6410.  56h    DWORD    old INT 23
  6411.  5Ah    DWORD    old INT 24
  6412.  5Eh    WORD    top of memory for task
  6413.  60h  4 BYTEs    ???
  6414.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  6415.  66h    WORD    DTA offset
  6416.  68h  4 BYTEs    ???
  6417.  6Ch    BYTE    current ANSI.SYS attribute
  6418.  6Dh    BYTE    current ANSI.SYS column
  6419.  6Eh    BYTE    current ANSI.SYS row
  6420.  6Fh    BYTE    current ANSI.SYS display state
  6421.  70h    BYTE    maximum ANSI.SYS columns
  6422.  71h    BYTE    current ANSI.SYS page
  6423.  72h    WORD    saved ANSI.SYS cursor position
  6424.  74h    BYTE    ANSI.SYS parameter buffer index
  6425.  75h    BYTE    current ANSI.SYS screen mode
  6426.  76h    BYTE    ANSI.SYS wrap flag
  6427.  77h  6 BYTEs    ANSI.SYS parameter buffer
  6428.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  6429.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  6430.  85h  3 BYTEs    ???
  6431.  88h 16 BYTEs    request header for DOS driver calls
  6432.  98h 14 BYTEs    ???
  6433.  A6h    WORD    segment of EMS map if EMS task
  6434.  A8h    WORD    flag: task makes EMS calls
  6435.  AAh    WORD    EMS handle for task
  6436.  ACh    WORD    keyboard shift state
  6437.  AEh 12 BYTEs    ???
  6438.  BAh    WORD    TCB of parent if child task
  6439.  BCh    WORD    termination code
  6440.  BEh    WORD    COM port number
  6441.  C0h  4 BYTEs    ???
  6442.  C4h    WORD    current IRQ number
  6443.  C6h  2 BYTEs    ???
  6444.  C8h    WORD    miscellaneous flag word
  6445.  CAh  2 BYTEs    ???
  6446.  CCh    DWORD    old INT 10
  6447.  D0h    WORD    EMS alternate map set number
  6448.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  6449. --------T-1514-------------------------------
  6450. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  6451.     AH = 14h
  6452.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  6453.         WORD    bottom right corner of window (high = row, low = col)
  6454. Return: AX = status (SYS_OK)
  6455. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  6456. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  6457. --------T-1514-------------------------------
  6458. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  6459.     AH = 14h
  6460. Return: AX = current state
  6461.         0000h MultiDOS Plus command prompt is background task
  6462.         0001h command prompt is foreground task
  6463. SeeAlso: AH=0Bh"MultiDOS"
  6464. --------T-1515-------------------------------
  6465. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  6466.     AH = 15h
  6467.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  6468. Return: AX = status (SYS_OK)
  6469. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  6470. --------T-1515-------------------------------
  6471. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  6472.     AH = 15h
  6473. Return: BX:AX -> system block (see below)
  6474. SeeAlso: AH=13h"MultiDOS"
  6475.  
  6476. Format of MultiDOS Plus 4.0 system block:
  6477. Offset    Size    Description
  6478.  00h    WORD    segment of system control block
  6479.  02h    WORD    redirection flag set by /NOREDIRECT
  6480.  04h    WORD    no-INT 10 flag set by /NO10
  6481.  06h    DWORD    old INT 10
  6482.  0Ah    DWORD    new INT 10
  6483.  0Eh    DWORD    pointer to WORD with current TCB offset (see AH=13h)
  6484.  12h    DWORD    pointer to WORD with idle task TCB offset
  6485.  16h    DWORD    pointer to WORD with foreground TCB offset
  6486.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset
  6487.  1Eh    WORD    Task Control Block size
  6488.  20h    WORD    number of TCBs
  6489.  22h    WORD    flag: EMS present
  6490.  24h    WORD    EMS page frame base segment
  6491.  26h    WORD    16K pages in EMS page frame
  6492.  28h    WORD    base segment for conventional memory tasks
  6493.  2Ah    WORD    conventional memory size in paragraphs
  6494.  2Ch    DWORD    pointer to list of queue pointers
  6495. --------T-1516-------------------------------
  6496. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  6497.     AH = 16h
  6498.     STACK:    DWORD    pointer to I/O Request Packet
  6499.         WORD    top left corner of window (high byte = row, low = col)
  6500.         WORD    bottom right corner of window (high = row, low = col)
  6501. Return: AX = status (SYS_OK or SYS_ERROR)
  6502. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  6503. --------T-1516-------------------------------
  6504. INT 15 - MultiDOS Plus - INITIALIZATION
  6505.     AH = 16h
  6506. Note:    used internally during initialization; any other calls will cause
  6507.       unpredictable results
  6508. --------T-1517-------------------------------
  6509. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  6510.     AH = 17h
  6511. Return: AH = foreground color
  6512.     AL = background color
  6513. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  6514. --------T-1517-------------------------------
  6515. INT 15 - MultiDOS Plus - MAP IRQ
  6516.     AH = 17h
  6517.     AL = IRQ to map (01h-0Fh)
  6518.     BX = offset of task control block (see AH=13h) to associate with IRQ
  6519. Return: AX = status
  6520.         0000h successful
  6521.         other invalid IRQ
  6522. Note:    the EMS map of the specified TCB is associated with the given interrupt
  6523. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  6524. --------T-1518-------------------------------
  6525. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  6526.     AH = 18h
  6527.     STACK:    WORD    new background/foreground colors
  6528.             bits 3-0: foreground
  6529.             bits 7-4: background
  6530.             bits 15-8: unused
  6531. Return: AX = color
  6532. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  6533. --------T-1518-------------------------------
  6534. INT 15 - MultiDOS Plus - UNMAP IRQ
  6535.     AH = 18h
  6536.     AL = IRQ to unmap (01h-0Fh)
  6537. Return: AX = status
  6538.         0000h successful
  6539.         0001h invalid IRQ
  6540. Note:    results are unpredictable if the IRQ has not been mapped
  6541. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  6542. --------T-1519-------------------------------
  6543. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  6544.     AH = 19h
  6545.     STACK:    WORD    new background/foreground colors
  6546.             bits 3-0: foreground
  6547.             bits 7-4: background
  6548.             bits 15-8: unused
  6549. Return: AX = color
  6550. SeeAlso: AH=18h"VMiX"
  6551. --------T-1519-------------------------------
  6552. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  6553.     AH = 19h
  6554. Return: AX destroyed
  6555. Note:    for MultiDOS internal use only
  6556. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  6557. --------T-151A-------------------------------
  6558. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  6559.     AH = 1Ah
  6560.     STACK:    WORD    interrupt number
  6561.         DWORD    pointer to register structure
  6562. Return: AX = returned flags
  6563. --------T-151A-------------------------------
  6564. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  6565.     AH = 1Ah
  6566.     DS:SI -> 8-byte name
  6567. Return: AL = status
  6568.         00h successful
  6569.         AH = semaphore number (20h-3Fh)
  6570.         04h out of string space
  6571. Notes:    all eight bytes of the name are significant
  6572.     if the name does not already exist, it is added to the name table and
  6573.       associated with a free semaphore number
  6574.     names cannot be destroyed
  6575. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  6576. --------T-151B-------------------------------
  6577. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  6578.     AH = 1Bh
  6579.     STACK:    DWORD    source address
  6580.         DWORD    destination address
  6581.         WORD    number of words to move
  6582. Return: nothing
  6583. --------T-151B-------------------------------
  6584. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  6585.     AH = 1Bh
  6586.     DS:SI -> 8-byte name
  6587. Return: AH = status
  6588.         00h successful
  6589.         02h invalid semaphore number
  6590.         03h caller already owns semaphore
  6591.         04h out of string space
  6592. Notes:    (see AH=01h"MultiDOS")
  6593.     equivalent to AH=1Ah followed by AH=01h
  6594. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  6595. --------T-151C-------------------------------
  6596. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  6597.     AH = 1Ch
  6598.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  6599.         DWORD    pointer to object bitmap
  6600.         WORD    object width in pixels
  6601.         WORD    object height in pixels
  6602. Return: nothing
  6603. SeeAlso: AH=1Dh"VMiX"
  6604. --------T-151C-------------------------------
  6605. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  6606.     AH = 1Ch
  6607.     DS:SI -> 8-byte name
  6608. Return: AH = status
  6609.         00h successful
  6610.         01h not semaphore owner
  6611.         02h invalid semaphore number
  6612.         04h out of string space
  6613. Notes:    (see AH=02h"MultiDOS")
  6614.     equivalent to AH=1Ah followed by AH=02h
  6615. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  6616. --------T-151D-------------------------------
  6617. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  6618.     AH = 1Dh
  6619. Return: AX = current font number (00h-03h)
  6620. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  6621. --------T-151D-------------------------------
  6622. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  6623.     AH = 1Dh
  6624.     DS:SI -> 8-byte name
  6625. Return: AH = status
  6626.         00h semaphore not in use
  6627.         01h semaphore owned by another task
  6628.         02h invalid semaphore number
  6629.         03h caller owns semaphore
  6630.         04h out of string space
  6631. Notes:    (see AH=10h"MultiDOS")
  6632.     equivalent to AH=1Ah followed by AH=10h
  6633. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  6634. --------T-151E-------------------------------
  6635. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  6636.     AH = 1Eh
  6637.     STACK: WORD new font number (00h-03h)
  6638. Return: AX = current font number (00h-03h)
  6639. SeeAlso: AH=1Dh"VMiX"
  6640. --------T-151E00-----------------------------
  6641. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  6642.     AX = 1E00h
  6643.     DX = event/trigger number (00h-3Fh)
  6644. Return: AH = status
  6645.         00h successful
  6646. SeeAlso: AX=1E01h,AX=1E02h
  6647. --------T-151E01-----------------------------
  6648. INT 15 - MultiDOS Plus - TRIGGER EVENT
  6649.     AX = 1E01h
  6650.     DX = event/trigger number (00h-3Fh)
  6651. Return: AH = status
  6652.         00h successful
  6653.         01h invalid event/trigger number
  6654. Notes:    schedules any task waiting for event; if no task is waiting, the event
  6655.       counter is incremented (and will roll over if it was 65535)
  6656.     may be invoked by interrupt handler
  6657. SeeAlso: AX=1E00h,AX=1E02h
  6658. --------T-151E02-----------------------------
  6659. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  6660.     AX = 1E02h
  6661.     DX = event/trigger number (00h-3Fh)
  6662. Return: AH = status
  6663.         00h successful
  6664.         01h invalid event/trigger number
  6665. Note:    if the event counter is zero, the task is suspended until the event is
  6666.       triggered with AX=1E01h; else, the counter is decremented and the
  6667.       call returns immediately
  6668. SeeAlso: AX=1E00h,AX=1E01h
  6669. --------T-151E08-----------------------------
  6670. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  6671.     AX = 1E08h
  6672.     DX:BX -> context save handler
  6673.     DX:CX -> context restore handler
  6674. Note:    handlers may be removed by setting addresses to 0000h:0000h
  6675.  
  6676. Handlers are called with:
  6677.     ES:BX -> task's TCB
  6678. Return: all registers preserved
  6679. --------T-151F-------------------------------
  6680. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  6681.     AH = 1Fh
  6682.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  6683.         WORD    bottom right corner of window
  6684. Return: AX = status (SYS_OK)
  6685. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  6686. --------T-151F-------------------------------
  6687. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  6688.     AH = 1Fh
  6689. Return: BX = first segment of conventional memory
  6690.     DX = first segment of EMS swap frame into which MultiDOS will load
  6691.         programs
  6692. --------T-1520-------------------------------
  6693. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  6694.     AH = 20h
  6695. Return: AX = current state
  6696.         0000h multitasking enabled
  6697.         other TCB of task that disabled multitasking
  6698. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  6699. --------c-152000-----------------------------
  6700. INT 15 U - DOS 3+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  6701.     AX = 2000h
  6702. Desc:    stop setting user flag on entry to PRINT critical region
  6703. Note:    also supported by PC Network v1.00 RECEIVER.COM
  6704. SeeAlso: AX=2001h
  6705. --------c-152001-----------------------------
  6706. INT 15 U - DOS 3+ PRINT.COM - SET CRITICAL REGION FLAG
  6707.     AX = 2001h
  6708.     ES:BX -> byte which is to be incremented while in a DOS call
  6709. Desc:    specify a user flag which PRINT should set to let an interested
  6710.       application know it is in a critical region
  6711. Note:    also supported by PC Network v1.00 RECEIVER.COM
  6712. SeeAlso: AX=2000h
  6713. --------O-152010-----------------------------
  6714. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  6715.     AX = 2010h
  6716.     ???
  6717. Return: ???
  6718. SeeAlso: AX=2011h
  6719. --------O-152011-----------------------------
  6720. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  6721.     AX = 2011h
  6722.     ???
  6723. Return: ???
  6724. SeeAlso: AX=2010h
  6725. --------B-1521-------------------------------
  6726. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  6727.     AH = 21h
  6728.     AL = subfunction
  6729.         00h read POST log
  6730.         01h write POST log
  6731.         BH = device ID
  6732.         BL = error code
  6733. Return: CF set on error
  6734.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  6735.     if function 00h:
  6736.        BX = number of error codes stored
  6737.        ES:DI -> error log
  6738. Note:    the log is a series of words, the first byte of which identifies the
  6739.       error code and the second the device.
  6740. --------B-1522-------------------------------
  6741. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  6742.     AH = 22h
  6743. Return: CF set on error
  6744.         AH = status (86h if function not supported)
  6745.     CF clear on success
  6746.         AH = 00h
  6747.         ES:BX -> ROM BASIC
  6748. Note:    if this function is not supported, ROM BASIC is at F600h:0000h
  6749. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  6750. --------b-152400-----------------------------
  6751. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  6752.     AX = 2400h
  6753. Return: CF clear if successful
  6754.         AH = 00h
  6755.     CF set on error
  6756.         AH = status
  6757.         01h keyboard controller is in secure mode
  6758.         86h function not supported
  6759. Note:    also supported by Qualitas 386MAX v6.01+
  6760. SeeAlso: AX=2401h,AX=2402h,AX=2403h
  6761. --------b-152401-----------------------------
  6762. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  6763.     AX = 2401h
  6764. Return: CF clear if successful
  6765.         AH = 00h
  6766.     CF set on error
  6767.         AH = status
  6768.         01h keyboard controller is in secure mode
  6769.         86h function not supported
  6770. Note:    also supported by Qualitas 386MAX v6.01+
  6771. SeeAlso: AX=2400h,AX=2402h
  6772. --------b-152402-----------------------------
  6773. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  6774.     AX = 2402h
  6775. Return: CF clear if successful
  6776.         AH = 00h
  6777.         AL = current state (00h disabled, 01h enabled)
  6778.     CF set on error
  6779.         AH = status
  6780.         01h keyboard controller is in secure mode
  6781.         86h function not supported
  6782. Note:    also supported by Qualitas 386MAX v6.01+
  6783. SeeAlso: AX=2400h,AX=2401h
  6784. --------b-152403-----------------------------
  6785. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  6786.     AX = 2403h
  6787. Return: CF clear if successful
  6788.         AH = 00h
  6789.         BX = status of A20 gate support (see below)
  6790.     CF set on error
  6791.         AH = status
  6792.         01h keyboard controller is in secure mode
  6793.         86h function not supported
  6794. Note:    also supported by Qualitas 386MAX v6.01+
  6795. SeeAlso: AX=2402h
  6796.  
  6797. Bitfields for A20 gate support status:
  6798. Bit(s)    Description
  6799.  0    supported with bit 1 of I/O port 92h
  6800.  1    supported on keyboard controller
  6801.  15    additional data is available (location not yet defined)
  6802. --------B-1540-------------------------------
  6803. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  6804.     AH = 40h
  6805.     AL = subfunction
  6806.         00h get system profile in CX and BX
  6807.         01h set system profile from CX and BX
  6808.         02h get internal modem profile in BX
  6809.         03h set internal modem profile from BX
  6810. Return: CF clear if successful
  6811.         AH = 00h
  6812.     CF set on error
  6813.         AH = status (80h = profile execution failed)
  6814. --------V-154000-----------------------------
  6815. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  6816.     AX = 4000h
  6817. Return: AX = 4000h
  6818.     CL = timeout in minutes, 00h if disabled
  6819. SeeAlso: AX=4001h,AX=4600h
  6820. --------V-154001-----------------------------
  6821. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  6822.     AX = 4001h
  6823.     CL = timeout in minutes, 00h to disable
  6824. Return: AL = status
  6825.         00h timeout modified
  6826.         01h timeout cannot be modified
  6827.         40h timeout cannot be modified
  6828.     CL = timeout in minutes, 00h if disabled
  6829. SeeAlso: AX=4000h,AX=4601h
  6830. --------B-1541-------------------------------
  6831. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  6832.     AH = 41h
  6833.     AL = condition type (see below)
  6834.     BH = condition compare or mask value
  6835.     BL = timeout value times 55 milliseconds
  6836.         00h means no timeout
  6837.     DX = I/O port address if AL bit 4 set
  6838.     ES:DI -> user byte if AL bit 4 clear
  6839. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  6840.       this function is supported
  6841. SeeAlso: AH=83h,AH=86h,AH=C0h
  6842.  
  6843. Bitfields for condition type:
  6844. Bit(s)    Description
  6845.  0-2    condition to wait for
  6846.     0 any external event
  6847.     1 compare and return if equal
  6848.     2 compare and return if not equal
  6849.     3 test and return if not zero
  6850.     4 test and return if zero
  6851.  3    reserved
  6852.  4    1=port address, 0=user byte
  6853.  5-7    reserved
  6854. --------B-1542-------------------------------
  6855. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  6856.     AH = 42h
  6857.     AL = suspend type
  6858.         00h to use system profile
  6859.         01h to force suspend regardless of system profile
  6860. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  6861.       power-up, execution will resume following the instruction calling
  6862.       this function
  6863. SeeAlso: AH=44h
  6864. --------b-154280-----------------------------
  6865. INT 15 - Compaq SLT/286 - ENTER STANDBY
  6866.     AX = 4280h
  6867. Return: AH = 42h
  6868.     CF clear if successful
  6869.     CF set if unable to enter standby
  6870. SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h
  6871. --------B-1543-------------------------------
  6872. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  6873.     AH = 43h
  6874. Return: AL = status bits (see below)
  6875.  
  6876. Bitfields for Convertible system status:
  6877. Bit(s)    Description
  6878.  7    power low
  6879.  6    external power in use
  6880.  5    standby power lost
  6881.  4    power activated by alarm
  6882.  3    internal modem powered on
  6883.  2    RS232/parallel adapter powered on
  6884.  1    reserved
  6885.  0    LCD detached
  6886. --------B-1544-------------------------------
  6887. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  6888.     AH = 44h
  6889.     AL = new modem power state (00h power off, 01h power on)
  6890. SeeAlso: AH=42h
  6891. --------b-1544C0-----------------------------
  6892. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  6893.     AX = 44C0h
  6894.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  6895.     ES:SI -> ??? buffer
  6896. Return: ES:DI -> old DSP procedure
  6897.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  6898.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  6899. Note:    this function is also supported by XBIOS.COM
  6900. SeeAlso: AX=44C9h
  6901. --------b-1544C1-----------------------------
  6902. INT 15 - Olivetti Quaderno - ???
  6903.     AX = 44C1h
  6904.     ???
  6905. Return: ???
  6906. Note:    this function is also supported by XBIOS.COM
  6907. SeeAlso: AX=44C9h
  6908. --------b-1544C2-----------------------------
  6909. INT 15 - Olivetti Quaderno - ???
  6910.     AX = 44C2h
  6911.     DL = byte to be written to I/O port 350h
  6912. Note:    this function is also supported by XBIOS.COM
  6913. SeeAlso: AX=44C3h,AX=44C9h
  6914. --------b-1544C3-----------------------------
  6915. INT 15 - Olivetti Quaderno - GET ???
  6916.     AX = 44C3h
  6917. Return: DH = bitfields (see below)
  6918.     DL = value read from I/O port 350h
  6919. Note:    this function is also supported by XBIOS.COM
  6920. SeeAlso: AX=44C2h,AX=44C9h
  6921.  
  6922. Bitfields for ???:
  6923. Bit(s)    Description
  6924.  5-7    5-7 read from I/O port 351h
  6925.  2-4    zero
  6926.  1-0    "tres complique"
  6927. --------b-1544C4-----------------------------
  6928. INT 15 - Olivetti Quaderno - ???
  6929.     AX = 44C4h and 44C5h
  6930.     ???
  6931. Return: ???
  6932. Note:    this function is also supported by XBIOS.COM
  6933. SeeAlso: AX=44C9h
  6934. --------b-1544C6-----------------------------
  6935. INT 15 - Olivetti Quaderno - READ LCD
  6936.     AX = 44C6h
  6937. Return: DX = FFFFh clock is displayed on LCD display
  6938.     DX = other: hex number displayed in first four positions of display
  6939.     BH = left alphanumeric character on display (see below)
  6940.     BL = right alphanumeric character on display (see below)
  6941.     CL = flags
  6942.         bit 0: right colon on
  6943.         bit 1: left colon on
  6944.         bits 2-7 unused    
  6945. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  6946.       is an alphanumeric character
  6947.     this function is also supported by XBIOS.COM
  6948. SeeAlso: AX=44C7h,AX=44C9h
  6949.  
  6950. Values for alphanumeric characters:
  6951.  00h-0Fh hex digit
  6952.  2Bh    "+"
  6953.  2Dh    "-"
  6954.  30h-39h "0" to "9"
  6955.  41h-5Ah "A" to "Z"
  6956.  61h-6Ah "a" to "z"
  6957.  else    blank
  6958. --------b-1544C7-----------------------------
  6959. INT 15 - Olivetti Quaderno - WRITE LCD
  6960.     AX = 44C7h
  6961.     DX = hex display
  6962.         FFFFh display clock and "HI", "Md", or "Lo"
  6963.         BH,BL,CL unused
  6964.         other: display specified hex number in first four positions
  6965.         BH = left alphanumeric character on display (see AX=44C6h)
  6966.         BL = right alphanumeric character on display (see AX=44C6h)
  6967.         CL = flags
  6968.             bit 0: right colon on
  6969.             bit 1: left colon on
  6970.             bits 2-7 unused
  6971. Note:    this function is also supported by XBIOS.COM
  6972. SeeAlso: AX=44C6h
  6973. --------b-1544C8-----------------------------
  6974. INT 15 - Olivetti Quaderno - ???
  6975.     AX = 44C8h
  6976.     CL = ??? (00h,02h,21h)
  6977.     CH = ???
  6978.     ???
  6979. Return: ???
  6980. Note:    this function is also supported by XBIOS.COM
  6981. SeeAlso: AX=44C9h
  6982. --------b-1544C9-----------------------------
  6983. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  6984.     AX = 44C9h
  6985. Return: AL = major version
  6986.     AH = minor version
  6987. Note:    this function is also supported by XBIOS.COM
  6988. --------b-154600-----------------------------
  6989. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  6990.     AX = 4600h
  6991. Return: AH = modem configuration information (see below)
  6992.     AL = power conservation status information (see below)
  6993.     BH = default system inactivity timeout (1-21 minutes)
  6994.     BL = current system inactivity timeout (1-21 minutes)
  6995.     CH = default video display inactivity timeout (1-63 minutes)
  6996.     CL = current video display inactivity timeout (1-63 minutes)
  6997.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  6998.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  6999. SeeAlso: AX=4280h,AX=4601h,INT 77
  7000.  
  7001. Bitfields for modem configuration information:
  7002. Bit(s)    Description
  7003.  0    powerup state (0 off, 1 on)
  7004.  1    modem installed
  7005.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  7006.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  7007.  4    modem state (0 not assigned, 1 assigned)
  7008.  5    modem is on
  7009.  
  7010. Bitfields for power conservation status:
  7011. Bit(s)    Description
  7012.  0    power source (0 internal, 1 external)
  7013.  1-2    low battery state
  7014.     00 no low battery condition
  7015.     01 low battery 1
  7016.     10 reserved
  7017.     11 low battery 2
  7018.  3-4    power conservation mode
  7019.     00 automatic, 01 on, 10 off, 11 reserved
  7020. --------b-154601-----------------------------
  7021. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  7022.     AX = 4601h
  7023.     BL = system inactivity timeout (1-21 minutes)
  7024.         FFh do not change
  7025.     CL = video display inactivity timeout (1-63 minutes)
  7026.         FFh do not change
  7027.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  7028.         FFh do not change
  7029.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  7030. Return: CF clear if successful
  7031.         AH = 00h
  7032.         BL = current system inactivity timeout (1-21 minutes)
  7033.         CL = current video display inactivity timeout (1-63 minutes)
  7034.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  7035.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  7036.     CF set on error
  7037.         AH = error code
  7038.         01h input is out of range
  7039.         02h no modem present
  7040. SeeAlso: AX=4600h,INT 77
  7041. --------b-154604-----------------------------
  7042. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  7043.     AX = 4604h
  7044. Return: CF clear if successful
  7045.         AL = byte read from I/O port 03F8h
  7046.     CF set on error (not supported)
  7047.         AH = 86h (unsupported function)
  7048. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  7049. --------b-154605-----------------------------
  7050. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  7051.     AX = 4605h
  7052. Return: CF clear if successful
  7053.     CF set on error (not supported)
  7054.         AH = 86h (unsupported function)
  7055. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  7056.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  7057.       LTE Lite 386 ROM
  7058. --------D-154900-----------------------------
  7059. INT 15 - Far East MS-DOS - GET DOS TYPE
  7060.     AX = 4900h
  7061. Return: CF clear if successful
  7062.         AH = 00h
  7063.         BL = type of DOS running
  7064.         00h DOS/V
  7065.         01h DOS/J or DOS/K (early IBM Japan versions of MS-DOS)
  7066.     CF set on error
  7067.         AH = 86h (function not supported)
  7068. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  7069. SeeAlso: INT 21/AH=30h
  7070. --------b-154DD4-----------------------------
  7071. INT 15 - HP 95LX - INSTALLATION CHECK
  7072.     AX = 4DD4h
  7073. Return: BX = 4850h ("HP") if HP 95LX
  7074.         CX = ??? (0101h)
  7075.         DL = ??? (00h)
  7076. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  7077. SeeAlso: INT 61"HP 95LX"
  7078. --------b-154E-------------------------------
  7079. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  7080.     AH = 4Eh
  7081.     AL = light sleep
  7082.         00h disabled
  7083.         01h enabled
  7084. Note:    when light sleep is disabled, the system will continue running at full
  7085.       speed; when enabled, it may automatically slow to conserve batteries
  7086. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  7087. --------B-154F-------------------------------
  7088. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  7089.     AH = 4Fh
  7090.     AL = hardware scan code
  7091.     CF set
  7092. Return: CF set
  7093.        AL = hardware scan code
  7094.     CF clear
  7095.        scan code should be ignored
  7096. Note:    called by INT 09 handler to translate scan codes; the INT 09 code does
  7097.       not examine the scan code it reads from the keyboard until after
  7098.       this function returns.  This permits software to rearrange the
  7099.       keyboard; for example, swapping the CapsLock and Control keys, or
  7100.       turning the right Shift key into Enter.
  7101. SeeAlso: INT 09,INT 15/AH=C0h
  7102. --------T-1550-------------------------------
  7103. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  7104.     AH = 50h
  7105.     BX = segment of page directory table
  7106.     CX = page number of page table
  7107. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  7108. --------T-1551-------------------------------
  7109. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  7110.     AH = 51h
  7111.     STACK:    DWORD    selector:offset of function
  7112. Return: registers as returned by function
  7113. Note:    executes function with privilege level 0 (highest privilege)
  7114. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  7115. --------B-155101-----------------------------
  7116. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  7117.     AX = 5101h
  7118. Return: CF set if successful
  7119.         AH = 00h
  7120.         AL = current configuration number
  7121.         00h system unit only
  7122.         FFh configuration not recognized
  7123.         BX = status flag
  7124.         bits 0-14: reserved
  7125.         bit 15: additional data is available (location TBD)
  7126.     CF clear on error
  7127.         AH = status
  7128.         01h expansion unit is not present
  7129.         86h function not supported
  7130. Note:    CF convention is the reverse of the standard convention for this
  7131.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  7132. --------T-1552-------------------------------
  7133. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  7134.     AH = 52h
  7135. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  7136. --------p-155300BX0000-----------------------
  7137. INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
  7138.     AX = 5300h
  7139.     BX = 0000h (device ID of system BIOS)
  7140. Return: CF clear if successful
  7141.         AH = major version (BCD)
  7142.         AL = minor version (BCD)
  7143.         BX = 504Dh ("PM")
  7144.         CX = flags (see below)
  7145.     CF set on error
  7146.         AH = error code (86h) (see below)
  7147.  
  7148. Bitfields for flags:
  7149. Bit(s)    Description
  7150.  0    16-bit protected mode interface supported
  7151.  1    32-bit protected mode interface supported
  7152.  2    CPU idle call reduces processor speed
  7153.  3    BIOS power management disabled
  7154.  4-7    reserved
  7155.  
  7156. Values for error code:
  7157.  01h    power management functionality disabled
  7158.  02h    interface connection already in effect
  7159.  03h    interface not connected
  7160.  04h    real-mode interface not connected
  7161.  05h    16-bit protected-mode interface already connected
  7162.  06h    16-bit protected-mode interface not supported
  7163.  07h    32-bit protected-mode interface already connected
  7164.  08h    32-bit protected-mode interface not supported
  7165.  09h    unrecognized device ID
  7166.  0Ah    invalid parameter value in CX
  7167.  0Bh-1Fh reserved for other interface and general errors
  7168.  20h-3Fh reserved for CPU errors
  7169.  40h-5Fh reserved for device errors
  7170.  60h    can't enter requested state
  7171.  61h-7Fh reserved for other system errors
  7172.  80h    no power management events pending
  7173.  81h-85h reserved for other power management event errors
  7174.  86h    APM not present
  7175.  87h-9Fh reserved for other power management event errors
  7176. --------p-155301BX0000-----------------------
  7177. INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
  7178.     AX = 5301h
  7179.     BX = 0000h (device ID of system BIOS)
  7180. Return: CF clear if successful
  7181.     CF set on error
  7182.         AH = error code (02h,09h) (see AX=5300h)
  7183. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  7184. --------p-155302BX0000-----------------------
  7185. INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
  7186.     AX = 5302h
  7187.     BX = 0000h (device ID of system BIOS)
  7188. Return: CF clear if successful
  7189.         AX = real-mode segment base address of protected-mode 16-bit code
  7190.         segment
  7191.         BX = offset of entry point
  7192.         CX = real-mode segment base address of protected-mode 16-bit data
  7193.         segment
  7194.     CF set on error
  7195.         AH = error code (05h,06h,09h) (see AX=5300h)
  7196. Notes:    the caller must initialize two consecutive descriptors with the
  7197.       returned segment base addresses; these descriptors must be valid
  7198.       whenever the protected-mode interface is called, and will have
  7199.       their limits arbitrarily set to 64K.
  7200.     the protected mode interface is invoked by making a far call with the
  7201.       same register values as for INT 15; it must be invoked while CPL=0,
  7202.       the code segment descriptor must have a DPL of 0, the stack must be
  7203.       in a 16-bit segment and have enough room for BIOS use and possible
  7204.       interrupts, and the current I/O permission bit map must allow access
  7205.       to the I/O ports used for power management.
  7206.     functions 00h-03h are not available from protected mode
  7207. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  7208. --------p-155303BX0000-----------------------
  7209. INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
  7210.     AX = 5303h
  7211.     BX = 0000h (device ID of system BIOS)
  7212. Return: CF clear if successful
  7213.         AX = real-mode segment base address of protected-mode 32-bit code
  7214.         segment
  7215.         EBX = offset of entry point
  7216.         CX = real-mode segment base address of protected-mode 16-bit code
  7217.         segment
  7218.         DX = real-mode segment base address of protected-mode 16-bit data
  7219.         segment
  7220.     CF set on error
  7221.         AH = error code (07h,08h,09h) (see AX=5300h)
  7222. Notes:    the caller must initialize three consecutive descriptors with the
  7223.       returned segment base addresses for 32-bit code, 16-bit code, and
  7224.       16-bit data, respectively; these descriptors must be valid whenever
  7225.       the protected-mode interface is called, and will have their limits
  7226.       arbitrarily set to 64K.
  7227.     the protected mode interface is invoked by making a far call to the
  7228.       32-bit code segment with the same register values as for INT 15; it
  7229.       must be invoked while CPL=0, the code segment descriptor must have a
  7230.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  7231.       for BIOS use and possible interrupts, and the current I/O permission
  7232.       bit map must allow access to the I/O ports used for power management.
  7233.     functions 00h-03h are not available from protected mode
  7234. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  7235. --------p-155304BX0000-----------------------
  7236. INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
  7237.     AX = 5304h
  7238.     BX = 0000h (device ID of system BIOS)
  7239. Return: CF clear if successful
  7240.     CF set on error
  7241.         AH = error code (03h,09h) (see AX=5300h)
  7242. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  7243. --------p-155305-----------------------------
  7244. INT 15 - Advanced Power Management Specification - CPU IDLE
  7245.     AX = 5305h
  7246. Return: after system leaves idle state
  7247.     CF clear
  7248. Notes:    call when the system is idle and should be suspended until the next
  7249.       system event or interrupt
  7250.     should not be called from within a hardware interrupt handler to avoid
  7251.       reentrance problems
  7252.     if an interrupt causes the system to resume normal processing, the
  7253.       interrupt may or may not have been handled when the BIOS returns
  7254.       from this call; thus, the caller should allow interrupts on return
  7255.     interrupt handlers may not retain control if the BIOS allows
  7256.       interrupts while in idle mode even if they are able to determine
  7257.       that they were called from idle mode
  7258.     the caller should issue this call continuously in a loop until it needs
  7259.       to perform some processing of its own
  7260. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  7261. --------p-155306-----------------------------
  7262. INT 15 - Advanced Power Management Specification - CPU BUSY
  7263.     AX = 5306h
  7264. Return: CF clear
  7265. Notes:    called to ensure that the system runs at full speed even on systems
  7266.       where the BIOS is unable to recognize increased activity (especially
  7267.       if interrupts are hooked by other programs and not chained to the
  7268.       BIOS)
  7269.     this call may be made even when the system is already running at full
  7270.       speed, but it will create unnecessary overhead
  7271.     should not be called from within a hardware interrupt handler to avoid
  7272.       reentrance problems
  7273. SeeAlso: AX=5305h
  7274. --------p-155307-----------------------------
  7275. INT 15 - Advanced Power Management Specification - SET POWER STATE
  7276.     AX = 5307h
  7277.     BX = device ID (see below)
  7278.     CX = system state ID
  7279.         0000h ready (not supported for device ID 0001h)
  7280.         0001h stand-by
  7281.         0002h suspend
  7282.         0003h off (not supported for device ID 0001h)
  7283.         0004h-FFFFh reserved
  7284. Return: CF clear if successful
  7285.     CF set on error
  7286.         AH = error code (01h,09h,0Ah,60h) (see AX=5300h)
  7287. Note:    should not be called from within a hardware interrupt handler to avoid
  7288.       reentrance problems
  7289.  
  7290. Values for device IDs:
  7291.  0000h    system BIOS
  7292.  0001h    all devices for which the system BIOS manages power
  7293.  01xxh    display (01FFh for all attached display devices)
  7294.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  7295.  03xxh    parallel ports (03FFh for all attached parallel ports)
  7296.  04xxh    serial ports (04FFh for all attached serial ports)
  7297.  0500h-FFFFh reserved
  7298. --------p-155307BX0001-----------------------
  7299. INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
  7300.     AX = 5307h
  7301.     BX = 0001h
  7302.     CX = 0001h
  7303. Return: CF clear
  7304. Notes:    puts the entire system into stand-by mode; normally called in response
  7305.       to a System Stand-by Request notification after any necessary
  7306.       processing, but may also be invoked at the caller's discretion
  7307.     should not be called from within a hardware interrupt handler to avoid
  7308.       reentrance problems
  7309.     the stand-by state is typically exited on an interrupt
  7310. SeeAlso: AX=4280h,AX=5307h/BX=0001h/CX=0002h,AX=530Bh
  7311. --------p-155307BX0001-----------------------
  7312. INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
  7313.     AX = 5307h
  7314.     BX = 0001h
  7315.     CX = 0002h
  7316. Return: after system is resumed
  7317.     CF clear
  7318. Notes:    puts the entire system into a low-power suspended state; normally
  7319.       called in response to a Suspend System Request notification after
  7320.       any necessary processing, but may also be invoked at the caller's
  7321.       discretion
  7322.     should not be called from within a hardware interrupt handler to avoid
  7323.       reentrance problems
  7324.     the caller may need to update its date and time values because the
  7325.       system could have been suspended for a long period of time
  7326. SeeAlso: AX=5307h/BX=0001h/CX=0001h,AX=530Bh
  7327. --------p-155308BXFFFF-----------------------
  7328. INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
  7329.     AX = 5308h
  7330.     BX = FFFFh
  7331.     CX = new state
  7332.         0000h disabled
  7333.         0001h enabled
  7334. Return: CF clear if successful
  7335.     CF set on error
  7336.         AH = error code (01h,09h,0Ah) (see AX=5300h)
  7337. Notes:    when power management is disabled, the system BIOS will not
  7338.       automatically power down devices, enter stand-by or suspended mode,
  7339.       or perform any power-saving actions in response to AX=5305h calls
  7340.     should not be called from within a hardware interrupt handler to avoid
  7341.       reentrance problems
  7342. SeeAlso: AX=5309h
  7343. --------p-155309BXFFFF-----------------------
  7344. INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
  7345.     AX = 5309h
  7346.     BX = FFFFh
  7347. Return: CF clear if successful
  7348.     CF set on error
  7349.         AH = error code (09h) (see AX=5300h)
  7350. Note:    should not be called from within a hardware interrupt handler to avoid
  7351.       reentrance problems
  7352. SeeAlso: AX=5308h
  7353. --------p-15530ABX0001-----------------------
  7354. INT 15 - Advanced Power Management Specification - GET POWER STATUS
  7355.     AX = 530Ah
  7356.     BX = 0001h
  7357. Return: CF clear if successful
  7358.         BH = AC line status
  7359.         00h off-line
  7360.         01h on-line
  7361.         FFh unknown
  7362.         other reserved
  7363.         BL = battery status
  7364.         00h high
  7365.         01h low
  7366.         02h critical
  7367.         03h charging
  7368.         FFh unknown
  7369.         other reserved
  7370.         CL = remaining battery life
  7371.         00h-64h (0-100) percentage of full charge
  7372.         FFh unknown
  7373.     CF set on error
  7374.         AH = error code (09h) (see AX=5300h)
  7375. Note:    should not be called from within a hardware interrupt handler to avoid
  7376.       reentrance problems
  7377. --------p-15530B-----------------------------
  7378. INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
  7379.     AX = 530Bh
  7380. Return: CF clear if successful
  7381.         BX = event code
  7382.         0001h system stand-by request
  7383.         0002h system suspend request
  7384.         0003h normal resume system notification
  7385.         0004h critical resume system notification
  7386.         0005h battery low notification
  7387.     CF set on error
  7388.         AH = error code (03h,80h) (see AX=5300h)
  7389. Notes:    although power management events are often asynchronous, notification
  7390.       will not be made until polled via this call to permit software to
  7391.       only receive event notification when it is prepared to process
  7392.       power management events; since these events are not very time-
  7393.       critical, it should be sufficient to poll once or twice per second
  7394.     the critical resume notification is made after the system resumes
  7395.       from an emergency suspension; normally, the system BIOS only notifies
  7396.       its partner that it wishes to suspend and relies on the partner to
  7397.       actually request the suspension, but no notification is made on an
  7398.       emergency suspension
  7399.     should not be called from within a hardware interrupt handler to avoid
  7400.       reentrance problems
  7401. SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h
  7402. --------T-155400-----------------------------
  7403. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  7404.     AX = 5400h
  7405.     ES:BX -> device information tables
  7406.     DI:DX -> dispatcher entry point
  7407. Note:    called by OmniView to notify programs loaded before OmniView of state
  7408.       changes inside OmniView
  7409. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  7410. --------T-155401-----------------------------
  7411. INT 15 C - Omniview Multitasker - PROCESS CREATION
  7412.     AX = 5401h
  7413.     ES:BX = process handle
  7414. Note:    called by OmniView to notify programs loaded before OmniView of state
  7415.       changes inside OmniView
  7416. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  7417. --------T-155402-----------------------------
  7418. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  7419.     AX = 5402h
  7420.     ES:DX = process handle
  7421. Note:    called by OmniView to notify programs loaded before OmniView of state
  7422.       changes inside OmniView
  7423. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  7424. --------T-155403-----------------------------
  7425. INT 15 C - Omniview Multitasker - SAVE
  7426.     AX = 5403h
  7427.     ES:DX = process swapping out
  7428. Note:    called by OmniView to notify programs loaded before OmniView of state
  7429.       changes inside OmniView
  7430. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  7431. --------T-155404-----------------------------
  7432. INT 15 C - Omniview Multitasker - RESTORE
  7433.     AX = 5404h
  7434.     ES:DX = process swapping in
  7435. Note:    called by OmniView to notify programs loaded before OmniView of state
  7436.       changes inside OmniView
  7437. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  7438. --------T-155405-----------------------------
  7439. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  7440.     AX = 5405h
  7441.     ES:DX = process swapping in
  7442. Note:    called by OmniView to notify programs loaded before OmniView of state
  7443.       changes inside OmniView
  7444. SeeAlso: AX=5406h
  7445. --------T-155406-----------------------------
  7446. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  7447.     AX = 5406h
  7448.     ES:DX = process swapping in
  7449. Note:    called by OmniView to notify programs loaded before OmniView of state
  7450.       changes inside OmniView
  7451. SeeAlso: AX=5405h
  7452. --------T-155407-----------------------------
  7453. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  7454.     AX = 5407h
  7455. Note:    called by OmniView to notify programs loaded before OmniView of state
  7456.       changes inside OmniView
  7457. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  7458. --------b-1560------------------------------------
  7459. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  7460.     AH = 60h
  7461.     AL = new speed
  7462.         00h normal (8 MHz)
  7463.         01h Slow Mode 1 (4 MHz)
  7464.         02h Slow Mode 2 (2 MHz)
  7465. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  7466.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  7467. SeeAlso: AX=6301h
  7468. --------b-1561------------------------------------
  7469. INT 15 - HUNTER 16 - GET POWER LEVEL
  7470.     AH = 61h
  7471. Return: AH = percentage of full power left (0..100)
  7472. Desc:    determine how much battery power is left
  7473. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  7474. --------b-1562------------------------------------
  7475. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  7476.     AH = 62h
  7477.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  7478.     BX = interval between power low warnings in seconds (1..600)
  7479. Return: AH = Status
  7480. Desc:    set the level (relative to full power) when power-low warnings begin
  7481.       and the interval between the warnings
  7482. SeeAlso: AH=61h,AH=65h,AH=66h
  7483. --------b-156300----------------------------------
  7484. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  7485.     AX = 6300h
  7486. Return: AH = status
  7487.     BX = timeout in seconds (0-3600)
  7488. Desc:    get the idle timeout value, the interval without keyboard or
  7489.        communications activity before the system shuts down
  7490. SeeAlso: AX=6301h
  7491. --------b-156301----------------------------------
  7492. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  7493.     AX = 6301h
  7494.     BX = timeout in seconds (0-3600)
  7495. Desc:    sets the idle timeout value, the interval without keyboard or
  7496.       communications activity before the system shuts down
  7497. SeeAlso: AX=6300h
  7498. --------b-1564------------------------------------
  7499. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  7500.     AH = 64h
  7501.     AL = new state
  7502.         00h disable Resume mode
  7503.         01h enable Resume mode
  7504. Return: AH = status
  7505. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  7506.       the application that was running when it shut down as if nothing 
  7507.       had happened.
  7508. SeeAlso: AH=67h,AH=68h,AH=69h
  7509. --------b-1565------------------------------------
  7510. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  7511.     AH = 65h
  7512.     AL = charging level
  7513.         01h charging not allowed
  7514.         02h charging allowed until power down
  7515.         03h charging allowed until batteries changed or fail.
  7516.         Ask user if charging is still allowed on next poweron
  7517.         04h charging allowed indefinitely
  7518.     BX = 0203h
  7519.     CX = 0405h
  7520.     DX = 0607h
  7521. Return: AH = status
  7522. SeeAlso: AH=66h,AH=68h
  7523. --------b-1566------------------------------------
  7524. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  7525.     AH = 66h
  7526.     AL = level in percent of maximum (0..100)
  7527. Return: AH = status
  7528. SeeAlso: AH=61h,AH=65h
  7529. --------b-1567------------------------------------
  7530. INT 15 - HUNTER 16 - CONTROL STOP MODE
  7531.     AH = 67h
  7532.     AL = mode when waiting for input
  7533.         00h use STOP mode (allows communication)
  7534.         01h use HALT mode (disallows communication)
  7535. Return: AH = status
  7536. Desc:    select the power save mode to use when waiting for input
  7537. SeeAlso: AH=69h
  7538. --------b-1568------------------------------------
  7539. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  7540.     AH = 68h
  7541. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  7542. SeeAlso: AH=69h
  7543. --------b-1569------------------------------------
  7544. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  7545.     AH = 69h
  7546.     AL = mode
  7547.         00h inhibit power down
  7548.         01h allow power down
  7549. Return: AH = status
  7550. SeeAlso: AH=67h,AH=68h,AH=6Ah
  7551. --------b-156A------------------------------------
  7552. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  7553.     AH = 6Ah
  7554.     AL = mode
  7555.         00h inhibit Slow mode
  7556.         01h allow Slow mode
  7557. Return: AH = status
  7558. SeeAlso: AH=69h
  7559. --------b-156B------------------------------------
  7560. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  7561.     AH = 6Bh
  7562. Return: BH = version number (ASCII)
  7563.     BL = release number (ASCII)
  7564.     CH = minor release number (ASCII)
  7565.     CL = minor release number (ASCII)
  7566. SeeAlso: AH=6Ch
  7567. --------b-156C------------------------------------
  7568. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  7569.     AH = 6Ch
  7570. Return: BL:CX = BCD serial number
  7571. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  7572.       different number can be stored (see AH=72h)
  7573. SeeAlso: AH=6Bh,AH=72h
  7574. --------b-156D------------------------------------
  7575. INT 15 - HUNTER 16 - GET EVENT DETAIL
  7576.     AH = 6Dh
  7577. Return: AH = 00h if successful
  7578.     CX:BX = event flags bit 0..31 (see below)
  7579. Note:    this function allows testing for events
  7580. SeeAlso: AH=6Eh,AH=6Fh
  7581.  
  7582. Bitfields for events:
  7583. Bit(s)    Description
  7584.  6    RI received
  7585.  5    RTC Alarm
  7586.  4    data received on COM2
  7587.  3    data received on COM1
  7588.  2    error on COM2
  7589.  1    error on COM1
  7590.  0    PWR button pressed
  7591. --------b-156E------------------------------------
  7592. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  7593.     AH = 6Eh
  7594.     AL = Software Interrupt
  7595.           00h  do not trap event
  7596.           else trap as software interrupt number AL
  7597.     BH = event number (see AH=6Dh)
  7598.     BL = enable mask
  7599.         00h disable event
  7600.         01h enable event
  7601. Return: AH = 00h if successful
  7602. SeeAlso: AH=6Dh,AH=6Fh
  7603. --------b-156F------------------------------------
  7604. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  7605.     AH = 6Fh
  7606.     AL = event number (see AH=6Dh)
  7607. Return: AH = 00h if successful
  7608. Desc:    Acknowledges the event, so the next similar event can be detected 
  7609. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  7610. ----------157000-----------------------------
  7611. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  7612.     AX = 7000h
  7613.     BL = number of word to read (00h-3Fh)
  7614. Return: CF clear if function supported
  7615.         DX = contents of EEPROM word
  7616. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  7617.       the clock chip to store system configuration information
  7618. SeeAlso: AX=7001h
  7619. ----------157001-----------------------------
  7620. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  7621.     AX = 7001h
  7622.     BL = number of word to read (00h-3Fh)
  7623.     DX = new value for EEPROM word
  7624. Return: CF clear if function supported
  7625. Note:    the EEPROMs are normally written only by the system setup program;
  7626.       changing the values can badly mess up a Tandy
  7627. SeeAlso: AX=7000h
  7628. --------b-1570------------------------------------
  7629. INT 15 - HUNTER 16 - CONTROL SOUND
  7630.     AH = 70h
  7631.     AL = new state
  7632.         00h disable sound
  7633.         else enable sound
  7634. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  7635.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  7636. --------b-1571------------------------------------
  7637. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  7638.     AH = 71h
  7639.     BL = column
  7640.     BH = row
  7641.     AL = column switch (00h disable, 01h enable)
  7642.     CL = row switch (00h disable, 01h enable)
  7643. Return: AH = status
  7644. SeeAlso: AH=7Bh,AH=88h
  7645. --------b-157200----------------------------------
  7646. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  7647.     AX = 7200h
  7648. Return: AH = 00h if successful
  7649. Desc:    reset the serial number to the default serial number present when the
  7650.       Hunter 16 was shipped
  7651. SeeAlso: AH=6Ch,AH=72h
  7652. --------b-1572------------------------------------
  7653. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  7654.     AH = 72h
  7655.     AL nonzero
  7656.     DS:BX -> new serial number (6 ASCII digits)
  7657. Return: AH = 00h if successful
  7658. Desc:    install a new serial number
  7659. SeeAlso: AH=6Ch,AX=7200h
  7660. --------b-1573------------------------------------
  7661. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  7662.     AH = 73h
  7663.     AL = drive (0: A:, 1: B:)
  7664. Return: AH = status
  7665.         00h successful
  7666.         FFh Oracle GT drive not connected
  7667.     AL = power level in percent of maximum (0..100)
  7668. Desc:    get the power remaining in the Oracle GT batteries
  7669. SeeAlso: AH=61h
  7670. --------b-1574------------------------------------
  7671. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  7672.     AH = 74h
  7673.     AL = new level
  7674.         01h off
  7675.         02h unchanged
  7676.         03h change level
  7677.         BL = desired level (00h-7Fh)
  7678. Return: AH = status
  7679. Desc:    select the backlight level to use when the Hunter is next turned on
  7680. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  7681. --------b-1575------------------------------------
  7682. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  7683.     AH = 75h
  7684.     AL = new level
  7685.         01h off
  7686.         02h unchanged
  7687.         03h change level
  7688.         BL = desired level (00h-7Fh)
  7689. Return: AH = status
  7690. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  7691. SeeAlso: AH=63h,AH=74h
  7692. --------b-1576------------------------------------
  7693. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  7694.     AH = 76h
  7695.     BX = power save control (see below)
  7696. SeeAlso: AH=74h
  7697.  
  7698. Bitfields for power save control:
  7699. Bit(s)    Description
  7700.  0    power save enabled
  7701.  1    inhibit power save when waiting for COM1 data
  7702.  2    inhibit power save when waiting for COM2 data
  7703.  3    inhibit power save when waiting for data from barcode wand
  7704.  4    inhibit power up on timer tick
  7705. --------b-1579------------------------------------
  7706. INT 15 - HUNTER 16 - REDIRECT LPT1
  7707.     AH = 79h
  7708.     AL = port to which to redirect (00h COM1, 01h COM2)
  7709. --------b-157A------------------------------------
  7710. INT 15 - HUNTER 16 - INVOKE HOT KEY
  7711.     AH = 7Ah
  7712. Desc:    this function has the same effect as pressing the HOT key
  7713. SeeAlso: AH=7Bh
  7714. --------b-157B------------------------------------
  7715. INT 15 - HUNTER 16 - CONTROL HOT KEY
  7716.     AH = 7Bh
  7717.     AL = 00h prevent HOT key
  7718.         else allow HOT key
  7719. Desc:    Allow or prevent the HOT key function which is used to examine and
  7720.       change the Hunter setup
  7721. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  7722. --------b-157C------------------------------------
  7723. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  7724.     AH = 7Ch
  7725.     AL = 00h prevent HOT key power option
  7726.         else allow HOT key power option
  7727. Desc:    allow or prevent changing the power options
  7728. SeeAlso: AH=7Bh,AH=7Dh
  7729. --------b-157D------------------------------------
  7730. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  7731.     AH = 7Dh
  7732.     AL = 00h turn off after 10 warnings
  7733.         else never turn off
  7734. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  7735. SeeAlso: AH=7Ch
  7736. --------b-157E------------------------------------
  7737. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  7738.     AH = 7Eh
  7739.     AL = 00h do not prompt
  7740.         else prompt
  7741. Desc:    select whether the user is prompted for the battery state if the
  7742.       battery cap has been off when the system is turned on
  7743. SeeAlso: AH=7Fh
  7744. --------b-157F------------------------------------
  7745. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  7746.     AH = 7Fh
  7747.     AL = battery type
  7748.         00h     non-rechargeable
  7749.         else rechargeable
  7750. SeeAlso: AH=7Eh
  7751. --------!------------------------------------
  7752.