home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / inter42.doc / interrup.b < prev    next >
Encoding:
Text File  |  1994-08-07  |  307.2 KB  |  8,380 lines

  1. Interrupt List, part 2 of 12
  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 #0167)
  12.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  13. Return: AH = line status (see #0171)
  14.         FFh if error on Digiboard XAPCM232.SYS
  15.     AL = modem status (see #0172)
  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 serial port parameters:
  26. Bit(s)    Description    (Table 0167)
  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 #0168)
  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 FOSSIL RS-232 status:
  54. Bit(s)    Description    (Table 0168)
  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 #0169)
  63.     DX = port number
  64. Return: AH = line status (see #0171)
  65.     AL = modem status (see #0172)
  66. Note:    MBBIOS was written by H. Roy Engehausen
  67. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  68.  
  69. Bitfields for MBBIOS port parameters:
  70. Bit(s)    Description    (Table 0169)
  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 #0170)
  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. (Table 0170)
  92. Values for Connection Manager return code:
  93.  00h    successful
  94.  01h    no such connection
  95.  02h    invalid connection ID
  96.  03h    invalid subvector found
  97.  04h    communication error (check BH)
  98.  06h    insufficient resources, retry later
  99.  FFh    no data available
  100. --------S-1401-------------------------------
  101. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  102.     AH = 01h
  103.     AL = character to write
  104.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  105. Return: AH bit 7 clear if successful
  106.     AH bit 7 set on error
  107.     AH bits 6-0 = port status (see #0171)
  108. Notes:    various network and serial-port drivers support the standard BIOS
  109.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  110.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  111. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  112. --------N-1401--DXFFFF-----------------------
  113. INT 14 - Connection Manager - SEND CHARACTER
  114.     AH = 01h
  115.     DX = FFFFh
  116.     BH = character to send
  117. Return: AH = return code (00h-02h,06h) (see #0170)
  118. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  119.       function, but redirects the port over the network; if DX is any other
  120.       value, the call is chained
  121.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  122.       is the preferred function because it provides better performance
  123. SeeAlso: AH=02h/DX=FFFFh,AX=06h/DX=FFFFh,AH=09h/DX=FFFFh
  124. --------S-1402-------------------------------
  125. INT 14 - SERIAL - READ CHARACTER FROM PORT
  126.     AH = 02h
  127.     AL = 00h (ArtiCom)
  128.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  129. Return: AH = line status (see #0171)
  130.     AL = received character if AH bit 7 clear
  131. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  132.       data ready
  133.     various network and serial-port drivers support the standard BIOS
  134.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  135.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  136. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  137. --------S-1402-------------------------------
  138. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  139.     AH = 02h
  140.     DX = port number (0-3)
  141. Return: AL = character received
  142.     AH = 00h
  143. SeeAlso: AH=01h,AH=02h"SERIAL"
  144. --------N-1402--DXFFFF-----------------------
  145. INT 14 - Connection Manager - RECEIVE CHARACTER
  146.     AH = 02h
  147.     DX = FFFFh
  148.     BH = character to send
  149. Return: AH = return code (00h-02h,04h,FFh) (see #0170)
  150.     BH = line status (see #0171)
  151.     AL = received character (if any)
  152. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  153.       function, but redirects the port over the network; if DX is any other
  154.       value, the call is chained
  155.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  156.       is the preferred function because it provides better performance
  157. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  158. --------S-1403-------------------------------
  159. INT 14 - SERIAL - GET PORT STATUS
  160.     AH = 03h
  161.     AL = 00h (ArtiCom)
  162.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  163. Return: AH = line status (see #0171)
  164.     AL = modem status (see #0172)
  165.     AX = 9E00h if disconnected (ArtiCom)
  166. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  167. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  168.  
  169. Bitfields for serial line status:
  170. Bit(s)    Description    (Table 0171)
  171.  7    timeout
  172.  6    transmit shift register empty
  173.  5    transmit holding register empty
  174.  4    break detected
  175.  3    framing error
  176.  2    parity error
  177.  1    overrun error
  178.  0    receive data ready
  179. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  180.       through a separate call (see AX=8000h"COMM-DRV")
  181.  
  182. Bitfields for modem status:
  183. Bit(s)    Description    (Table 0172)
  184.  7    carrier detect
  185.  6    ring indicator
  186.  5    data set ready
  187.  4    clear to send
  188.  3    delta carrier detect
  189.  2    trailing edge of ring indicator
  190.  1    delta data set ready
  191.  0    delta clear to send
  192. --------N-1403--DXFFFF-----------------------
  193. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  194.     AH = 03h
  195.     DX = FFFFh
  196.     AL = connection ID
  197. Return: AH = return code (00h-02h) (see #0170)
  198.     BH = line status (see #0173)
  199.     BL = modem status (see #0172) (only bits 4,5,7; all others zero)
  200. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  201.       function, but redirects the port over the network; if DX is any other
  202.       value, the call is chained
  203. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  204.  
  205. Bitfields for Connection Manager line status:
  206. Bit(s)    Description    (Table 0173)
  207.  7    CTS changed
  208.  6    current CTS state
  209.  5    timeout
  210.  4    break
  211.  3    framing error
  212.  2    parity error
  213.  1    overrun
  214.  0    current carrier state (0 active, 1 no carrier)
  215. --------S-1404-------------------------------
  216. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  217.     AH = 04h
  218.     AL = break status
  219.         00h if break
  220.         01h if no break
  221.     BH = parity (see #0174)
  222.     BL = number of stop bits
  223.         00h one stop bit
  224.         01h two stop bits (1.5 if 5 bit word length)
  225.     CH = word length (see #0175)
  226.     CL = bps rate (see #0176)
  227.     DX = port number
  228. Return: AX = port status code (see #0171,#0172)
  229. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  230.  
  231. (Table 0174)
  232. Values for serial port parity:
  233.  00h    no parity
  234.  01h    odd parity
  235.  02h    even parity
  236.  03h    stick parity odd
  237.  04h    stick parity even
  238.  
  239. (Table 0175)
  240. Values for serial port word length:
  241.  00h    5 bits
  242.  01h    6 bits
  243.  02h    7 bits
  244.  03h    8 bits
  245.  
  246. (Table 0176)
  247. Values for serial port bps rate:
  248.  00h    110
  249.  01h    150
  250.  02h    300
  251.  03h    600
  252.  04h    1200
  253.  05h    2400
  254.  06h    4800
  255.  07h    9600
  256.  08h    19200
  257. --------S-1404-------------------------------
  258. INT 14 - FOSSIL - INITIALIZE DRIVER
  259.     AH = 04h
  260.     DX = port number
  261.     optionally BX=4F50h
  262.            ES:CX -> byte to be set upon ^C
  263. Return: AX = 1954h (if successful)
  264.     BL = maximum function number supported (excluding 7Eh and above)
  265.     BH = revision of FOSSIL specification supported
  266.     DTR is raised
  267. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  268.       following byte contains the maximum function number supported; this
  269.       can serve as an installation check
  270. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  271. Index:    installation check;FOSSIL
  272. --------S-1404-------------------------------
  273. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  274.     AH = 04h
  275. Return: port initialized; if Hayes-compatible modem, a connection has been
  276.       established
  277. Note:    the port number is stored at offset BEh in the Task Control Block
  278.       (see #0310 at INT 15/AH=13h"MultiDOS")
  279. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  280. --------S-1404-------------------------------
  281. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  282.     AH = 04h
  283.     AL = initializing parameters (see #0177)
  284.     BX = baud rate
  285.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  286. Return: AH = status
  287.         00h successful
  288.         FFh error
  289. SeeAlso: AH=05h"Digiboard"
  290.  
  291. Bitfields for Digiboard initializing parameters:
  292. Bit(s)    Description    (Table 0177)
  293.  7-5    unused
  294.  4-3    parity (00 none, 01 odd, 11 even)
  295.  2    stop bits (0 = one, 1 = two)
  296.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  297. --------S-1404-------------------------------
  298. INT 14 - MBBIOS - INSTALLATION CHECK
  299.     AH = 04h
  300.     DX = port number
  301. Return: AX = AA55h if installed on specified port
  302. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  303. --------N-1404--DXFFFF-----------------------
  304. INT 14 - Connection Manager - OPEN COMMUNICATION
  305.     AH = 04h
  306.     DX = FFFFh
  307.     ES:DI -> Connection Request protocol vector (see #0178)
  308. Return: AH = return code
  309.         00h successful
  310.         AL = connection ID
  311.         BH = connection type
  312.             00h direct connection or no dialing
  313.             01h Connection Server dialed phone
  314.         01h no response from Connection Server
  315.         03h invalid request
  316. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  317.       serial ports over an IPX or NetBIOS-based network
  318. Desc:    initiate a connection to the Connection Server listed in the current
  319.       Client parameter set
  320. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  321.       function, but redirects the port over the network; if DX is any other
  322.       value, the call is chained
  323.     all subvectors of the Connection Request vector are optional; if
  324.       missing, default values are provided by the default connection
  325.       parameter set
  326. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  327. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  328.  
  329. Format of Connection Manager protocol command vector:
  330. Offset    Size    Description    (Table 0178)
  331.  00h    WORD    (big-endian) total length of command (including this word)
  332.  02h    WORD    (big-endian) command code
  333.         EF01h Connection Request
  334.         EF06h Modify Connection Parameters
  335.  04h  N BYTEs    list of subvectors (see #0180)
  336.         allowable subvector types are 01h-04h,17h,18h for command code
  337.           EF01h; 03h,04h for command code EF06h
  338.  
  339. (Table 0179)
  340. Values for Connection Manager subvector type code:
  341.  01h    Connection ID
  342.  02h    Destination ID
  343.  03h    Asynchronous line parameters
  344.  04h    Data transfer parameters
  345.  09h    Line speed
  346.  0Ah    Serial coding
  347.  0Bh    Packet size
  348.  0Ch    Timers
  349.  0Dh    Special characters
  350.  0Eh    Target ID
  351.  0Fh    Telephone number
  352.  10h    ASCII destination ID
  353.  11h    Parity
  354.  12h    Bits per character
  355.  13h    Number of stop bits
  356.  14h    Packet timer
  357.  15h    Intercharacter timer
  358.  17h    Flags
  359.  18h    Parameter ranges
  360.  19h    Flow control
  361.  
  362. Format of Connection Manager subvector:
  363. Offset    Size    Description    (Table 0180)
  364.  00h    BYTE    length of subvector
  365.  01h    BYTE    type code (see #0179)
  366.  02h N-2 BYTEs    data, which may include subvectors
  367. SeeAlso: #0181,#0182,#0183,#0184,#0185,#0186,#0187,#0188,#0189,#0190,#0191
  368. SeeAlso: #0192,#0193,#0195,#0196,#0197,#0198,#0199,#0200
  369.  
  370. Format of Connection ID subvector:
  371. Offset    Size    Description    (Table 0181)
  372.  00h    BYTE    03h (length)
  373.  01h    BYTE    01h (subvector "Connection ID")
  374.  02h    BYTE    connection ID
  375.  
  376. Format of Destination ID subvector:
  377. Offset    Size    Description    (Table 0182)
  378.  00h    BYTE    length
  379.  01h    BYTE    02h (subvector "Destination ID")
  380.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  381.  
  382. Format of Asynchronous line parameters subvector:
  383. Offset    Size    Description    (Table 0183)
  384.  00h    BYTE    length
  385.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  386.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  387.  
  388. Format of Data transfer parameters subvector:
  389. Offset    Size    Description    (Table 0184)
  390.  00h    BYTE    length
  391.  01h    BYTE    04h (subvector "Data transfer parameters")
  392.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  393.  
  394. Format of Line speed subvector:
  395. Offset    Size    Description    (Table 0185)
  396.  00h    BYTE    04h (length)
  397.  01h    BYTE    09h (subvector "Line speed")
  398.  02h    WORD    bit map, highest set bit selects speed
  399.         bit 0: 2400
  400.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  401.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  402.  
  403. Format of Serial coding subvector:
  404. Offset    Size    Description    (Table 0186)
  405.  00h    BYTE    length
  406.  01h    BYTE    0Ah (subvector "Serial coding")
  407.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  408.  
  409. Format of Packet size subvector:
  410. Offset    Size    Description    (Table 0187)
  411.  00h    BYTE    04h (length)
  412.  01h    BYTE    0Bh (subvector "Packet size")
  413.  02h    WORD    (big-endian) packet size, 1 to 1024
  414.  
  415. Format of Timers subvector:
  416. Offset    Size    Description    (Table 0188)
  417.  00h    BYTE    length
  418.  01h    BYTE    0Ch (subvector "Timers")
  419.  02h  8 BYTEs    subvector of type 14h or 15h
  420.  
  421. Format of Special characters subvector:
  422. Offset    Size    Description    (Table 0189)
  423.  00h    BYTE    length
  424.  01h    BYTE    0Dh (subvector "Special characters")
  425.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  426.  
  427. Format of Target ID:
  428. Offset    Size    Description    (Table 0190)
  429.  00h    BYTE    length
  430.  01h    BYTE    0Eh (subvector "Target ID")
  431.  02h  N BYTEs    target ID, 1-16 bytes
  432.  
  433. Format of Telephone number subvector:
  434. Offset    Size    Description    (Table 0191)
  435.  00h    BYTE    length
  436.  01h    BYTE    0Fh (subvector "Telephone number")
  437.  02h  N BYTEs    telephone number
  438.  
  439. Format of ASCII destination ID subvector:
  440. Offset    Size    Description    (Table 0192)
  441.  00h    BYTE    length
  442.  01h    BYTE    10h (subvector "ASCII destination ID")
  443.  02h  N BYTEs    destination ID
  444.  
  445. Format of Parity subvector:
  446. Offset    Size    Description    (Table 0193)
  447.  00h    BYTE    03h (length)
  448.  01h    BYTE    11h (subvector "Parity")
  449.  02h    BYTE    parity type (see #0194)
  450.  
  451. Bitfields for Connection Manager parity type:
  452. Bit(s)    Description    (Table 0194)
  453.  7    odd
  454.  6    even
  455.  5    mark
  456.  4    space
  457.  3    none
  458.  
  459. Format of Bits per character subvector:
  460. Offset    Size    Description    (Table 0195)
  461.  00h    BYTE    03h (length)
  462.  01h    BYTE    12h (subvector "Bits per character")
  463.  02h    BYTE    bits per character
  464.         bit 7: seven
  465.         bit 6: eight
  466.  
  467. Format of Number of stop bits subvector:
  468. Offset    Size    Description    (Table 0196)
  469.  00h    BYTE    03h (length)
  470.  01h    BYTE    13h (subvector "Number of stop bits")
  471.  02h    BYTE    stop bits
  472.         bit 7: one
  473.         bit 6: 1.5
  474.         bit 5: two
  475.  
  476. Format of Packet timer and Intercharacter timer subvectors:
  477. Offset    Size    Description    (Table 0197)
  478.  00h    BYTE    04h (length)
  479.  01h    BYTE    subvector type
  480.         14h Packet timer
  481.         15h Intercharacter timer
  482.  02h    WORD    (big-endian) unit of value representing 20ms
  483.  
  484. Format of Flags subvector:
  485. Offset    Size    Description    (Table 0198)
  486.  00h    BYTE    03h (length)
  487.  01h    BYTE    17h (subvector "Flags")
  488.  02h    BYTE    flags
  489.         bit 7: queueing requested
  490.  
  491. Format of Parameter ranges subvector:
  492. Offset    Size    Description    (Table 0199)
  493.  00h    BYTE    length
  494.  01h    BYTE    18h (subvector "Parameter ranges")
  495.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  496.  
  497. Format of Flow control subvector:
  498. Offset    Size    Description    (Table 0200)
  499.  00h    BYTE    length (02h-04h)
  500.  01h    BYTE    19h (subvector "Flow control")
  501.  02h    BYTE    XOFF character
  502.  03h    BYTE    XON character
  503. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  504.       character will be accepted as XON after an XOFF
  505. --------S-140400-----------------------------
  506. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  507.     AX = 0400h
  508. Return: AX = 0FF0h
  509. SeeAlso: AX=0401h,AX=0408h
  510. --------S-140401-----------------------------
  511. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  512.     AX = 0401h
  513.     CX = mode
  514. SeeAlso: AX=0400h,AX=0402h
  515. --------S-140402-----------------------------
  516. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  517.     AX = 0402h
  518.     CL = parameters
  519. SeeAlso: AX=0400h,AX=0401h
  520. --------S-140403-----------------------------
  521. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  522.     AX = 0403h
  523.     CX = timeout
  524. SeeAlso: AX=0400h
  525. --------S-140404-----------------------------
  526. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  527.     AX = 0404h
  528. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  529. --------S-140405-----------------------------
  530. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  531.     AX = 0405h
  532. Return: AX = number of characters in buffer
  533. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  534. --------S-140406-----------------------------
  535. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  536.     AX = 0406h
  537. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  538. --------S-140407-----------------------------
  539. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  540.     AX = 0407h
  541. Return: AX = number of characters in the buffer
  542. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  543. --------S-140408-----------------------------
  544. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  545.     AX = 0408h
  546. SeeAlso: AX=0400h
  547. --------S-1405-------------------------------
  548. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  549.     AH = 05h
  550.     AL = function
  551.         00h read modem control register
  552.           Return: BL = modem control register (see #0201)
  553.               AH = status
  554.         01h write modem control register
  555.           BL = modem control register (see #0201)
  556.           Return: AX = status
  557.     DX = port number
  558. Note:    also supported by ArtiCom
  559. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  560.  
  561. Bitfields for modem control register:
  562. Bit(s)    Description    (Table 0201)
  563.  0    data terminal ready
  564.  1    request to send
  565.  2    OUT1
  566.  3    OUT2
  567.  4    LOOP
  568.  5-7    reserved
  569. --------S-1405-------------------------------
  570. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  571.     AH = 05h
  572.     DX = port number
  573. Return: none
  574.     DTR is not affected
  575. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  576. --------S-1405-------------------------------
  577. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  578.     AH = 05h
  579.     AL = timeout in seconds (00h = never)
  580. Return: AL = status
  581.         00h successful
  582.         AH = character read
  583.         01h read error
  584.         02h timed out
  585.         other modem status (CTS, DSR) changed
  586. Note:    the port number is stored at offset BEh in the Task Control Block
  587. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  588. SeeAlso: INT 15/AH=13h"MultiDOS"
  589. --------S-1405-------------------------------
  590. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  591.     AH = 05h
  592.     AL = protocol (see #0202)
  593.     BH = new XOFF character (00h = current)
  594.     BL = new XON character (00h = current)
  595.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  596. Return: AH = status
  597.         00h successful
  598.         FFh error
  599. SeeAlso: AH=04h"Digiboard"
  600.  
  601. Bitfields for Digiboard protocol:
  602. Bit(s)    Description    (Table 0202)
  603.  7-4    unused
  604.  3    RTS/CTS
  605.  2    DSR
  606.  1,0    XON/XOFF
  607. --------S-1405-------------------------------
  608. INT 14 - MBBIOS - DROP DTR AND RTS
  609.     AH = 05h
  610.     DX = port number
  611. Return: none
  612. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  613. --------S-1405-------------------------------
  614. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  615.     AH = 05h
  616.     AL = new port protocol (see #0203)
  617.     BH = new XOFF character
  618.     BL = new XON character
  619.     DX = port number
  620. Return: AH = FFh if invalid protocol
  621. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  622.  
  623. Bitfields for PC-MOS/386 serial port protocol:
  624. Bit(s)    Description    (Table 0203)
  625.  7    set to enable/disable CD monitoring, clear to set protocol
  626. ---bit 7 set---
  627.  4    CD monitoring enabled
  628.  5    automatic restart enabled
  629. ---bit 7 clear---
  630.  0    receive XON/XOFF
  631.  1    transmit XON/XOFF
  632.  2    DTR/DSR
  633.  3    RTS/CTS
  634. --------N-1405--DXFFFF-----------------------
  635. INT 14 - Connection Manager - CLOSE COMMUNICATION
  636.     AH = 05h
  637.     DX = FFFFh
  638.     AL = connection ID
  639. Return: AH = return code
  640.         00h successful
  641.         01h no such connection
  642.         02h invalid connection ID
  643.         AL = correct connection ID
  644. Desc:    terminate existing connection to allow another one to be established
  645. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  646.       function, but redirects the port over the network; if DX is any other
  647.       value, the call is chained
  648. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  649. --------S-1406-------------------------------
  650. INT 14 - FOSSIL - RAISE/LOWER DTR
  651.     AH = 06h
  652.     DX = port
  653.     AL = DTR state to be set
  654.         00h = lower
  655.         01h = raise
  656. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  657. --------S-1406-------------------------------
  658. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  659.     AH = 06h
  660.     AL = character
  661. Return: AL = status
  662.         00h successful
  663. Notes:    the port number is stored at offset BEh in the Task Control Block
  664.     if output queue is full, the calling task is blocked until the
  665.       character can be stored
  666. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  667. SeeAlso: INT 15/AH=13h"MultiDOS"
  668. --------S-1406-------------------------------
  669. INT 14 - MBBIOS - RAISE DTR AND RTS
  670.     AH = 06h
  671.     DX = port number
  672. Return: none
  673. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  674. --------S-1406-------------------------------
  675. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  676.     AH = 06h
  677.     DX = port number
  678. Return: AH bit 7 set
  679.     AL = number of highest function supported by driver
  680. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  681.       operating system by The Software Link, Inc.
  682. SeeAlso: AH=18h"PC-MOS"
  683. --------N-1406-------------------------------
  684. INT 14 - TelAPI - WRITE???
  685.     AH = 06h
  686.     CX = number of characters to write???
  687.     DX = port number
  688.     ES:DI -> buffer containing data???
  689. Return: AX = number of characters actually sent??? (negative on error)
  690.     CX = ???
  691. Note:    under Novell TELAPI.EXE v4.01, this function and AH=07h are implemented
  692.       with identical code
  693. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI"
  694. --------N-1406--DXFFFF-----------------------
  695. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  696.     AH = 06h
  697.     DX = FFFFh
  698.     AL = connection ID
  699.     CX = number of characters to send
  700.     ES:DI -> buffer containing data to be sent
  701. Return: AH = return code (see #0170)
  702. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  703.       serial ports over an IPX or NetBIOS-based network
  704. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  705. --------S-1407-------------------------------
  706. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  707.     AH = 07h
  708. Return: AL = timer tick interrupt number
  709.     AH = ticks per second on interrupt number in AL
  710.     DX = approximate number of milliseconds per tick
  711. SeeAlso: AH=16h
  712. --------S-1407-------------------------------
  713. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  714.     AH = 07h
  715. Return: CL = modem status (see #0172)
  716.     CH = character at head of input queue (if any)
  717.     DX = number of characters in input queue
  718. Note:    the port number is stored at offset BEh in the Task Control Block
  719. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  720. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  721. --------S-1407-------------------------------
  722. INT 14 - MBBIOS - SEND BREAK
  723.     AH = 07h
  724.     DX = port number
  725. Return: none
  726. SeeAlso: AH=06h"MBBIOS"
  727. --------S-1407-------------------------------
  728. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  729.     AH = 07h
  730.     BX = duration of break in clock ticks
  731.     DX = port number
  732. Return: nothing
  733. --------N-1407-------------------------------
  734. INT 14 - TelAPI - WRITE???
  735.     AH = 07h
  736.     CX = number of characters to write???
  737.     DX = port number
  738.     ES:DI -> buffer containing data???
  739. Return: AX = number of characters actually sent??? (negative on error)
  740.     CX = ???
  741. Note:    under Novell TELAPI.EXE v4.01, this function and AH=06h are implemented
  742.       with identical code
  743. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI"
  744. --------N-1407--DXFFFF-----------------------
  745. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  746.     AH = 07h
  747.     DX = FFFFh
  748.     AL = connection ID
  749.     BL = flag
  750.         00h wait for data
  751.         nonzero do not wait if no data avaiable
  752.     CX = size of receive buffer
  753.     ES:DI -> buffer for received characters
  754. Return: AH = return code (00h-02h,04h,FFh) (see #0170)
  755.     BH = line status (see #0173)
  756.     CX = number of characters received
  757. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  758.       serial ports over an IPX or NetBIOS-based network
  759. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  760. --------S-1408-------------------------------
  761. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  762.     AH = 08h
  763.     DX = port number
  764. SeeAlso: AH=09h"FOSSIL"
  765. --------S-1408-------------------------------
  766. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  767.     AH = 08h
  768. Return: AL = line status (see #0171)
  769.     AH destroyed
  770. Notes:    the port number is stored at offset BEh in the Task Control Block
  771.     on every line status change, the line status is ORed with the line
  772.       status accumulator; this function returns the accumulator and clears
  773.       it
  774. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  775. --------S-1408-------------------------------
  776. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  777.     AH = 08h
  778.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  779. Return: AH = RS232 status bits (see #0171 at AH=03h)
  780.     ZF set if no characters queued
  781.     ZF clear if character available
  782.         AL = next character
  783. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  784. --------S-1408-------------------------------
  785. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  786.     AH = 08h
  787.     DX = port number
  788. Return: AL = character (if AH bit 0 set)
  789.     AH = status (see #0171)
  790. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  791. --------S-1408-------------------------------
  792. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  793.     AH = 08h
  794.     DX = port number
  795. Return: CF set if carrier loss detected
  796.     ZF set if input buffer empty
  797.     ZF clear if characters available
  798.         AL = next character dequeued
  799. --------N-1408--DXFFFF-----------------------
  800. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  801.     AH = 08h
  802.     DX = FFFFh
  803.     CX = size of buffer for parameters or 0000h to get length
  804.     ES:DI -> buffer for parameter vector (see #0178)
  805. Return: AH = return code
  806.         00h successful
  807.         CX = number of bytes required (if CX=0000h on entry)
  808.         CX = number of bytes omitted for lack of space (if CX nonzero)
  809.         nonzero invalid request
  810. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  811.       serial ports over an IPX or NetBIOS-based network
  812. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  813. --------S-1409-------------------------------
  814. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  815.     AH = 09h
  816.     DX = port number
  817. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  818. --------S-1409-------------------------------
  819. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  820.     AH = 09h
  821. Return: modem status byte cleared
  822. Note:    the port number is stored at offset BEh in the Task Control Block
  823. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  824. --------S-1409-------------------------------
  825. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  826.     AH = 09h
  827.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  828. Return: AH = status
  829.         00h successful
  830.         FFh error
  831. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  832. --------S-1409-------------------------------
  833. INT 14 - MBBIOS - GET/SET OPTIONS
  834.     AH = 09h
  835.     AL = option byte (see #0204)
  836.     DX = port number???
  837. Return: AL = old option byte
  838. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  839.  
  840. Bitfields for MBBIOS option byte:
  841. Bit(s)    Description    (Table 0204)
  842.  0    transmit buffering enabled
  843.  2    hardware handshaking enabled
  844.  5    high-speed option enabled (see AH=00h"MBBIOS",#0169)
  845.  other    reserved
  846. --------S-1409-------------------------------
  847. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  848.     AH = 09h
  849.     DX = port number
  850. Return: nothing
  851. SeeAlso: AH=13h"PC-MOS"
  852. --------N-1409--DXFFFF-----------------------
  853. INT 14 - Connection Manager - SEND BREAK
  854.     AH = 09h
  855.     DX = FFFFh
  856.     AL = connection ID
  857. Return: AH = return code (00h-02h) (see #0170 at AH=00h/DX=FFFFh)
  858. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  859.       serial ports over an IPX or NetBIOS-based network
  860. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  861. --------S-140A-------------------------------
  862. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  863.     AH = 0Ah
  864.     DX = port number
  865. SeeAlso: AH=09h"FOSSIL",AH=85h
  866. --------S-140A-------------------------------
  867. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  868.     AH = 0Ah
  869.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  870. Return: AX = number of characters available in buffer
  871. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  872. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  873. --------S-140A-------------------------------
  874. INT 14 - MBBIOS - WRITE BUFFER
  875.     AH = 0Ah
  876.     CX = count
  877.     ES:DI -> buffer (see #0205)
  878. Return: AX = status (see #0171,#0172)
  879.     CX = unsent character count
  880.     DI updated
  881. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  882.       contains the segment of a buffer containing the packet to be sent,
  883.       which by default will be freed once the packet has been sent.     Use
  884.       AH=0Ch"MBBIOS" to allocate the buffer.
  885. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  886.  
  887. Format of MBBIOS PACCOM buffer:
  888. Offset    Size    Description    (Table 0205)
  889.  00h 504 BYTEs    data area
  890. 1F8h    WORD    length of data in data area
  891. 1FAh    BYTE    flags/status
  892.         bit 7: don't discard buffer after transmitting data
  893.         bit 6: buffer has been transmitted
  894. 1FBh    BYTE    reserved (0) for additional flags/status
  895. 1FCh    WORD    user data
  896. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  897. --------N-140A--DXFFFF-----------------------
  898. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  899.     AH = 0Ah
  900.     DX = FFFFh
  901.     ES:DI -> vector string containing new parameters (see #0178)
  902. Return: AH = return code (00h-03h,06h) (see #0170)
  903. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  904.       serial ports over an IPX or NetBIOS-based network
  905. Note:    any subvectors valid for the Change Parameters command replace the
  906.       existing values in the current set
  907. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  908. --------S-140B-------------------------------
  909. INT 14 - FOSSIL - TRANSMIT NO WAIT
  910.     AH = 0Bh
  911.     AL = character
  912.     DX = port number
  913. Return: AX = result
  914.         0000h character not accepted
  915.         0001h character accepted
  916. SeeAlso: AH=01h
  917. --------S-140B-------------------------------
  918. INT 14 - MBBIOS - READ BUFFER
  919.     AH = 0Bh
  920.     CX = size of buffer
  921.     ES:DI -> buffer
  922. Return: AH = composite line status (see #0171) formed by ORing all statuses
  923.           on receive interrupts; bit 0 set if additional characters
  924.           available
  925.     AL = composite modem status (see #0172) formed by ORing all statuses
  926.     CX = number of characters actually read
  927.     DI updated
  928. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  929.       instead returning ES set to the segment of the buffer containing a
  930.       received packet, or 0000h if no packets available; the buffer may
  931.       be freed with AH=0Ch"MBBIOS"
  932. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  933. --------N-140B--DXFFFF-----------------------
  934. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  935.     AH = 0Bh
  936.     DX = FFFFh
  937.     AL = service name
  938.         00h use parameter file or default
  939.         01h use specified name
  940.         ES:DI -> 16-byte blank-padded name
  941.     BH = connection notification
  942.         00h program awaiting connection, don't notify user
  943.         01h notify user on connecting
  944.     BL = connection type
  945.         00h connection will use Connection Manager API
  946. Return: AH = return code (00h-02h) (see #0170 at AH=00h/DX=FFFFh)
  947.     AL = connection ID if AH=00h
  948. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  949.       serial ports over an IPX or NetBIOS-based network
  950. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  951. --------S-140C-------------------------------
  952. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  953.     AH = 0Ch
  954.     DX = port number
  955. Return: AX = FFFFh character not available
  956.     AX = 00xxh character xx available
  957. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  958. --------S-140C-------------------------------
  959. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  960.     AH = 0Ch
  961.     ES = segment of buffer to free, or 0000h to allocate new buffer
  962. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  963. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  964.       AH=0Ah and AH=0Bh
  965. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  966. --------N-140C--DXFFFF-----------------------
  967. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  968.     AH = 0Ch
  969.     DX = FFFFh
  970.     AL = connection ID from AH=0Bh/DX=FFFFh
  971. Return: AH = return code (00h-03h) (see also #0170 at AH=00h/DX=FFFFh)
  972.         03h not prepared for inbound connection
  973.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  974. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  975.       serial ports over an IPX or NetBIOS-based network
  976. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  977. --------S-140D-------------------------------
  978. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  979.     AH = 0Dh
  980. Return: AX = result
  981.         FFFFh character not available
  982.         xxyyh standard IBM-style scan code
  983. SeeAlso: AH=0Eh
  984. --------S-140D-------------------------------
  985. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  986.     AH = 0Dh
  987.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  988. Return: ES:BX -> CH_KEY_RDY flag (see #0206)
  989. SeeAlso: AH=0Ah"Digiboard"
  990.  
  991. (Table 0206)
  992. Values for Digiboard CH_KEY_RDY flag:
  993.  00h    receive buffer empty
  994.  FFh    characters available
  995. --------S-140D-------------------------------
  996. INT 14 - MBBIOS PACCOM support - SET TXD
  997.     AH = 0Dh
  998.     AL = new setting (FFh = 1.0)
  999. Desc:    specify the time from RTS to start or packet
  1000. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  1001. --------N-140D--DXFFFF-----------------------
  1002. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  1003.     AH = 0Dh
  1004.     DX = FFFFh
  1005. Return: AH = return code
  1006.         00h successful
  1007.         nonzero operation not terminated
  1008. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1009.       serial ports over an IPX or NetBIOS-based network
  1010. Desc:    end all Connection Client TSR activity to allow it to be removed from
  1011.       memory
  1012. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  1013. --------S-140D00-----------------------------
  1014. INT 14 - MBBIOS - GET AVAILABLE BYTES
  1015.     AX = 0D00h
  1016. Return: AX = bytes in transmit buffer
  1017.     CX = bytes in receive buffer
  1018. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  1019. --------S-140D01-----------------------------
  1020. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  1021.     AX = 0D01h
  1022. Note:    this function lowers DTR, RTS, etc.
  1023. SeeAlso: AX=0D02h
  1024. --------S-140D02-----------------------------
  1025. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  1026.     AX = 0D02h
  1027. Note:    this function raises DTR, RTS, etc.
  1028. SeeAlso: AX=0D01h
  1029. --------S-140D03-----------------------------
  1030. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  1031.     AX = 0D03h
  1032.     CL = new handshake byte
  1033. Return: CL = previous handshake byte
  1034. Note:    this function lowers DTR, RTS, etc.
  1035. --------S-140E-------------------------------
  1036. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  1037.     AH = 0Eh
  1038. Return: AX = xxyyh standard IBM-style scan code
  1039. SeeAlso: AH=0Dh"FOSSIL"
  1040. --------S-140E-------------------------------
  1041. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  1042.     AH = 0Eh
  1043.     CX = number of characters to write
  1044.     ES:BX -> string
  1045.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1046. Return: AX = number of characters actually written
  1047.     ZF clear if successful
  1048.     ZF set on error
  1049. SeeAlso: AH=0Fh"Digiboard"
  1050. --------S-140E-------------------------------
  1051. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  1052.     AH = 0Eh
  1053.     AL = new setting (FFh = 1.0)
  1054. Desc:    specify the time from end of DCD to RTS
  1055. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  1056. --------N-140E--DXFFFF-----------------------
  1057. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  1058.     AH = 0Eh
  1059.     DX = FFFFh
  1060.     AL = connection ID from AH=04h/DX=FFFFh
  1061.     BL = RTS state (00h off, 01h on)
  1062. Return: AH = return code (00h-03h) (see also #0170 at AH=00h/DX=FFFFh)
  1063.         03h invalid request (BL not 00h or 01h)
  1064. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1065.       serial ports over an IPX or NetBIOS-based network
  1066. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  1067. --------S-140F-------------------------------
  1068. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  1069.     AH = 0Fh
  1070.     AL = bit mask describing requested flow control (see #0207)
  1071.     DX = port number
  1072. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  1073.  
  1074. Bitfields for FOSSIL requested flow control:
  1075. Bit(s)    Description    (Table 0207)
  1076.  0    XON/XOFF on transmit (watch for XOFF while sending)
  1077.  1    CTS/RTS (CTS on transmit/RTS on receive)
  1078.  2    reserved
  1079.  3    XON/XOFF on receive (send XOFF when buffer near full)
  1080.  4-7    all 1
  1081. --------S-140F-------------------------------
  1082. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  1083.     AH = 0Fh
  1084.     CX = number of characters to read
  1085.     ES:BX -> buffer
  1086.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1087. Return: AX = number of characters read
  1088.     ZF clear if successful
  1089.     ZF set on error (line status or wrong number of characters)
  1090. SeeAlso: AH=0Eh"Digiboard"
  1091. --------S-140F-------------------------------
  1092. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  1093.     AH = 0Fh
  1094.     AL = new setting in clock ticks
  1095. Desc:    specify the time from end of DCD to RTS
  1096. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  1097. --------N-140F--DXFFFF-----------------------
  1098. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  1099.     AH = 0Fh
  1100.     DX = FFFFh
  1101.     AL = connection ID
  1102.     CX = size of buffer or 0000h to get length of returned vector
  1103.     ES:DI -> buffer for connection parameter vector (see #0178)
  1104. Return: AH = return code (00h-02h,06h) (see #0170 at AH=00h/DX=FFFFh)
  1105.     CX = number of bytes which could not be returned because the given
  1106.           buffer was too small
  1107. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1108.       serial ports over an IPX or NetBIOS-based network
  1109. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  1110. --------S-1410-------------------------------
  1111. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  1112.     AH = 10h
  1113.     AL = bit mask
  1114.         bit 0: enable/disable ^C/^K checking
  1115.         bit 1: enable/disable the transmitter
  1116.     DX = port number
  1117. SeeAlso: AH=0Fh"FOSSIL"
  1118. --------S-1410-------------------------------
  1119. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  1120.     AH = 10h
  1121.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1122. Return: AH = status
  1123.         00h successful
  1124.         FFh error
  1125. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  1126. --------S-1410-------------------------------
  1127. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  1128.     AH = 10h
  1129.     AL = new setting in clock ticks (should be at least 5 character times)
  1130. Desc:    specify the time from start of last character to dropping RTS
  1131. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  1132. --------N-1410--DXFFFF-----------------------
  1133. INT 14 - Connection Manager - QUERY SERVICE NAMES
  1134.     AH = 10h
  1135.     DX = FFFFh
  1136.     CL = subfunction
  1137.         00h search first
  1138.         01h search next
  1139.     ES:DI -> pattern buffer (see #0208)
  1140. Return: AH = return code (00h,01h,03h,06h) (see also #0170 at AH=00h/DX=FFFFh)
  1141.         01h no (more) matching names
  1142.         03h invalid request
  1143.     ES:DI buffer filled with reply buffer (see #0208) containing matched
  1144.           name if AH=00h
  1145. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1146.       serial ports over an IPX or NetBIOS-based network
  1147. Desc:    obtain the names of groups and lines available for connection requests,
  1148.       and the names of active Connection Servers
  1149. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  1150.  
  1151. Format of Connection Manager pattern/reply buffer:
  1152. Offset    Size    Description    (Table 0208)
  1153.  00h    WORD    length of pattern (30h or 32h)
  1154.  02h 16 BYTEs    server pattern or name
  1155.  12h 16 BYTEs    group pattern or name
  1156.  22h 16 BYTEs    line pattern or name
  1157.  23h    BYTE    (optional) ???
  1158.  24h    BYTE    (optional, returned) current line status
  1159.         00h available
  1160.         01h out of service
  1161.         02h currently allocated to a connection
  1162. Note:    pattern may include '?' wildcard to match any character
  1163. --------S-1411-------------------------------
  1164. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  1165.     AH = 11h
  1166.     DH = row
  1167.     DL = column
  1168. Note:    this is the same as INT 10/AH=02h
  1169. SeeAlso: AH=12h"FOSSIL"
  1170. --------S-1411-------------------------------
  1171. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  1172.     AH = 11h
  1173.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1174. Return: AH = status
  1175.         00h successful
  1176.         FFh error
  1177. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  1178. --------S-1411-------------------------------
  1179. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  1180.     AH = 11h
  1181.     DX = port number
  1182. Return: AL = status
  1183.         00h successful
  1184.         01h IRQ for port is shared
  1185.         02h IRQ was reserved
  1186. SeeAlso: AH=04h,AH=05h,AH=12h"PC-MOS"
  1187. --------S-1412-------------------------------
  1188. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  1189.     AH = 12h
  1190. Return: DH = row
  1191.     DL = column
  1192. Note:    this is the same as INT 10/AH=03h
  1193. SeeAlso: AH=11h"FOSSIL"
  1194. --------S-1412-------------------------------
  1195. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  1196.     AH = 12h
  1197.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1198. Return: AX = number of bytes free
  1199. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  1200. --------S-1412-------------------------------
  1201. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  1202.     AH = 12h
  1203.     DX = port number
  1204. Return: AH = status
  1205.         FFh port number invalid
  1206.     AL = line parameters (see #0171)
  1207.     AH = flow control configuration (see #0203 at AH=05h"PC-MOS")
  1208.     CX:BX = bps rate
  1209.     DL = XOFF character or 00h for none
  1210.     DH = XON character or 00h for none
  1211. --------S-1413-------------------------------
  1212. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  1213.     AH = 13h
  1214.     AL = character
  1215. Note:    should not be called if it is unsafe to call DOS
  1216. SeeAlso: AH=15h
  1217. --------S-1413-------------------------------
  1218. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  1219.     AH = 13h
  1220.     DX = port number
  1221. Return: AH = status
  1222.         FFh port number invalid
  1223.         else
  1224.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  1225. SeeAlso: AH=17h"PC-MOS"
  1226. --------S-1414-------------------------------
  1227. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  1228.     AH = 14h
  1229.     AL = 01h enable watchdog
  1230.          00h disable watchdog
  1231.     DX = port number
  1232. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  1233. --------S-1414-------------------------------
  1234. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  1235.     AH = 14h
  1236.     CX = number of characters in string
  1237.     DX = port number
  1238.     ES:BX -> string to be sent
  1239.     SI = timeout in timer ticks or 0000h for default
  1240. Return: AX = number of bytes actually sent
  1241.     ZF clear if successful
  1242.     ZF set on timeout
  1243. SeeAlso: AH=01h,AH=15h"PC-MOS"
  1244. --------S-1414-------------------------------
  1245. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  1246.     AH = 14h
  1247. Return: AX = number of boards installed
  1248. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  1249. --------S-1415-------------------------------
  1250. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  1251.     AH = 15h
  1252.     AL = character
  1253. SeeAlso: AH=13h"FOSSIL"
  1254. --------S-1415-------------------------------
  1255. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  1256.     AH = 15h
  1257.     CX = size of buffer
  1258.     DX = port number
  1259.     ES:BX -> buffer for received characters
  1260.     SI = timeout in clock ticks or 0000h for default
  1261. Return: AX = number of characters actually read
  1262.     ZF set on timeout (no data available)
  1263. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  1264. --------S-1415-------------------------------
  1265. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  1266.     AH = 15h
  1267.     AL = new state (00h disabled, 01h enabled)
  1268. Return: AH = status
  1269.         00h successful
  1270.         80h error
  1271.         FFh error
  1272. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  1273. --------S-1416-------------------------------
  1274. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  1275.     AH = 16h
  1276.     AL = function
  1277.         00h = delete
  1278.         01h = add
  1279.     ES:DX -> routine to call
  1280. Return: AX = status
  1281.         0000h successful
  1282.         0001h unsuccessful
  1283. SeeAlso: AH=07h"FOSSIL"
  1284. --------S-1416-------------------------------
  1285. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  1286.     AH = 16h
  1287.     ES:BX -> calling driver's INT 14 entry point
  1288. Return: nothing
  1289. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1290.       operating system by The Software Link, Inc.
  1291. --------S-1416-------------------------------
  1292. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  1293.     AH = 16h
  1294.     AL = CCB command number (see #0209) (see also following entries)
  1295.     BL = byte 2
  1296.     BH = byte 3
  1297.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  1298.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1299. Return: AH = status
  1300.         00h successful
  1301.         80h error
  1302.         FFh error
  1303. SeeAlso: AX=1646h,AH=18h"Digiboard"
  1304.  
  1305. (Table 0209)
  1306. Values for Digiboard CCB command number:
  1307.  40h    Set Receive Mid Water Mark
  1308.  41h    Set Receive High Water Mark
  1309.  42h    Flush Receive Buffer
  1310.  43h    Flush Transmit Buffer
  1311.  44h    Transmit Pause
  1312.  45h    Transmit Resume
  1313.  46h    Set Interrupt to Host Mask
  1314.  47h    Set Baud, Data, Stop and Parity
  1315.  48h    Send Break
  1316.  49h    Set Modem Lines
  1317.  4Ah    Set Break Count
  1318.  4Bh    Set Handshake
  1319.  4Ch    Set Xon/Xoff Characters
  1320.  4Dh    Set Transmit Mid Water Mark
  1321.  4Eh    IRQ Polling Timer to Host
  1322.  4Fh    Buffer Set All
  1323.  50h    Port On
  1324.  51h    Port Off
  1325.  52h    Receive Pause
  1326.  53h    Special Character Interrupt
  1327.  54h    RS-422 Enable
  1328. --------S-141646-----------------------------
  1329. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  1330.     AX = 1646h
  1331.     BL = bits to set
  1332.     BH = bits to clear
  1333.     CL = byte 1
  1334.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1335. Return: AH = status
  1336.         00h successful
  1337.         80h error
  1338.         FFh error
  1339. SeeAlso: AH=16h"Digiboard",AX=1647h
  1340. --------S-141647-----------------------------
  1341. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  1342.     AX = 1647h
  1343.     BL = baud
  1344.     BH = datatype
  1345.     CL = byte 1
  1346.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1347. Return: AH = status
  1348.         00h successful
  1349.         80h error
  1350.         FFh error
  1351. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  1352. --------S-141649-----------------------------
  1353. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  1354.     AX = 1649h
  1355.     BL = bits to set
  1356.     BH = bits to clear
  1357.     CL = byte 1
  1358.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1359. Return: AH = status
  1360.         00h successful
  1361.         80h error
  1362.         FFh error
  1363. SeeAlso: AH=16h"Digiboard",AX=1647h
  1364. --------S-14164A-----------------------------
  1365. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  1366.     AX = 164Ah
  1367.     BL = break count
  1368.     CL = byte 1
  1369.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1370. Return: AH = status
  1371.         00h successful
  1372.         80h error
  1373.         FFh error
  1374. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  1375. --------S-14164B-----------------------------
  1376. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  1377.     AX = 164Bh
  1378.     BL = bits to set
  1379.     BH = bits to clear
  1380.     CL = byte 1
  1381.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1382. Return: AH = status
  1383.         00h successful
  1384.         80h error
  1385.         FFh error
  1386. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  1387. --------S-14164C-----------------------------
  1388. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  1389.     AX = 164Ch
  1390.     BL = XON character
  1391.     BH = XOFF character
  1392.     CL = byte 1
  1393.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1394. Return: AH = status
  1395.         00h successful
  1396.         80h error
  1397.         FFh error
  1398. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  1399. --------S-14164D-----------------------------
  1400. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  1401.     AX = 164Dh
  1402.     BX = new mid-water mark
  1403.     CL = byte 1
  1404.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1405. Return: AH = status
  1406.         00h successful
  1407.         80h error
  1408.         FFh error
  1409. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  1410. --------S-14164E-----------------------------
  1411. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  1412.     AX = 164Eh
  1413.     BL = ticks
  1414.     BH = ???
  1415.     CL = mode
  1416.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1417. Return: AH = status
  1418.         00h successful
  1419.         80h error
  1420.         FFh error
  1421. SeeAlso: AH=16h"Digiboard",AX=164Dh
  1422. --------S-14164F-----------------------------
  1423. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  1424.     AX = 164Fh
  1425.     BL = size
  1426.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1427. Return: AH = status
  1428.         00h successful
  1429.         80h error
  1430.         FFh error
  1431. SeeAlso: AH=16h"Digiboard",AX=164Dh
  1432. --------S-141653-----------------------------
  1433. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  1434.     AX = 1653h
  1435.     BL = enable/disable
  1436.     BH = special character
  1437.     CL = byte 1
  1438.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1439. Return: AH = status
  1440.         00h successful
  1441.         80h error
  1442.         FFh error
  1443. SeeAlso: AH=16h"Digiboard",AX=1646h
  1444. --------S-1417-------------------------------
  1445. INT 14 - FOSSIL - REBOOT SYSTEM
  1446.     AH = 17h
  1447.     AL = method
  1448.         00h = cold boot
  1449.         01h = warm boot
  1450. SeeAlso: INT 19,INT 60/DI=0606h
  1451. --------S-1417-------------------------------
  1452. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  1453.     AH = 17h
  1454.     AL = new value for UART's modem control register
  1455.     DX = port number
  1456. Return: nothing
  1457. --------S-1418-------------------------------
  1458. INT 14 - FOSSIL - READ BLOCK
  1459.     AH = 18h
  1460.     CX = maximum number of characters to transfer
  1461.     DX = port number
  1462.     ES:DI -> user buffer
  1463. Return: AX = number of characters transferred
  1464. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  1465. --------S-1418-------------------------------
  1466. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  1467.     AH = 18h
  1468.     ES:BX -> 16-byte command string
  1469.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1470. Return: AH = status
  1471.         00h successful
  1472.         80h timeout
  1473.     AL = mailbox status
  1474.         00h no errors
  1475.         8Xh BIOS error
  1476.     ES:BX buffer filled in with mailbox string
  1477.     ZF clear if no errors
  1478.     ZF set if either status byte contains an error code
  1479. SeeAlso: AH=16h"Digiboard"
  1480. --------S-1418-------------------------------
  1481. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  1482.     AH = 18h
  1483.     DX = port number
  1484. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  1485.         driver
  1486. SeeAlso: AH=06h"PC-MOS"
  1487. --------S-1419-------------------------------
  1488. INT 14 - FOSSIL - WRITE BLOCK
  1489.     AH = 19h
  1490.     CX = maximum number of characters to transfer
  1491.     DX = port number
  1492.     ES:DI -> user buffer
  1493. Return: AX = number of characters transferred
  1494. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  1495. --------S-1419-------------------------------
  1496. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  1497.     AH = 19h
  1498.     BL = flag
  1499.         00h disable special character interrupt
  1500.         FFh enable interrupt
  1501.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1502. Return: AH = status
  1503.         00h successful
  1504.         FFh failed
  1505. SeeAlso: AH=1Ah"Digiboard"
  1506. --------S-1419-------------------------------
  1507. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  1508.     AH = 19h
  1509.     AL = what to flush
  1510.         bit 0: input buffer
  1511.         bit 1: output buffer
  1512.     DX = port number
  1513. Return: nothing
  1514. SeeAlso: AH=09h"PC-MOS"
  1515. --------S-141A-------------------------------
  1516. INT 14 - FOSSIL - BREAK BEGIN OR END
  1517.     AH = 1Ah
  1518.     AL = 00h stop sending 'break'
  1519.          01h start sending 'break'
  1520.     DX = port number
  1521. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  1522. --------S-141A-------------------------------
  1523. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  1524.     AH = 1Ah
  1525.     BX = subfunction
  1526.         00h return pointer to special character flag byte
  1527.         01h return pointer to special character counter word
  1528.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1529. Return: ES:BX -> special character flag or counter
  1530. Notes:    flag is FFh if one or more special characters are in the receive
  1531.       buffer; it is 00h and the counter is invalid if no special characters
  1532.       are in the receive buffer
  1533.     counter (if valid) contains the number of characters in the receive
  1534.       buffer up to and including the last-received special character
  1535. --------S-141B-------------------------------
  1536. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  1537.     AH = 1Bh
  1538.     DX = port number
  1539.     CX = size of user buffer
  1540.     ES:DI -> user buffer for driver info (see #0210)
  1541. Return: AX = number of characters transferred
  1542.     CX = 3058h ("0X") (X00 FOSSIL only)
  1543.     DX = 2030h (" 0") (X00 FOSSIL only)
  1544.  
  1545. Format of FOSSIL driver info:
  1546. Offset    Size    Description    (Table 0210)
  1547.  00h    WORD    size of structure in bytes
  1548.  02h    BYTE    FOSSIL spec driver conforms to
  1549.  03h    BYTE    revision level of this specific driver
  1550.  04h    DWORD    pointer to ASCIZ identification string
  1551.  08h    WORD    size of the input buffer
  1552.  0Ah    WORD    number of bytes left in buffer
  1553.  0Ch    WORD    size of the output buffer
  1554.  0Eh    WORD    number of bytes left in buffer
  1555.  10h    BYTE    width of screen
  1556.  11h    BYTE    length of screen
  1557.  12h    BYTE    actual baud rate, computer to modem
  1558. --------S-141C-------------------------------
  1559. INT 14 - X00 FOSSIL - ACTIVATE PORT
  1560.     AH = 1Ch
  1561.     DX = port number
  1562. Return: AX = 1954h if successful
  1563.     BL = maximum function number supported (not including 7Eh and above)
  1564.     BH = revision of FOSSIL specification supported
  1565. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  1566.       with the PS/2 BIOS in a future release
  1567. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  1568. --------S-141D-------------------------------
  1569. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  1570.     AH = 1Dh
  1571.     DX = port number
  1572. Return: none
  1573. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  1574.       with the PS/2 BIOS in a future release
  1575.     ignored if the port was never activated with AH=04h or AH=1Ch
  1576. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  1577. --------S-141E-------------------------------
  1578. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  1579.     AH = 1Eh
  1580.     AL = break status
  1581.         00h if break
  1582.         01h if no break
  1583.     BH = parity (see #0211)
  1584.     BL = number of stop bits
  1585.         00h one stop bit
  1586.         01h two stop bits (1.5 if 5 bit word length)
  1587.     CH = word length (see #0212)
  1588.     CL = bps rate (see #0213)
  1589.     DX = port number
  1590. Return: AX = port status code (see #0171,#0172)
  1591. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  1592.     if the port was locked at X00 load time, the appropriate parameters are
  1593.       ignored
  1594. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  1595.  
  1596. (Table 0211)
  1597. Values for X00 FOSSIL parity:
  1598.  00h    no parity
  1599.  01h    odd parity
  1600.  02h    even parity
  1601.  03h    stick parity odd
  1602.  04h    stick parity even
  1603.  
  1604. (Table 0212)
  1605. Values for X00 FOSSIL word length:
  1606.  00h    5 bits
  1607.  01h    6 bits
  1608.  02h    7 bits
  1609.  03h    8 bits
  1610.  
  1611. (Table 0213)
  1612. Values for X00 FOSSIL bps rate:
  1613.  00h    110
  1614.  01h    150
  1615.  02h    300
  1616.  03h    600
  1617.  04h    1200
  1618.  05h    2400
  1619.  06h    4800
  1620.  07h    9600
  1621.  08h    19200
  1622. --------S-141E------------------------------------
  1623. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  1624.     AH = 1Eh
  1625.     CX = channel number (00h COM1, 01h COM2, ...)
  1626.     DS:BX -> buffer for communications parameters (see #0214)
  1627. Return: DS:BX buffer filled
  1628. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  1629.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  1630. SeeAlso: AH=20h"HUNTER"
  1631.  
  1632. Format of HUNTER 16 communications parameters:
  1633. Offset    Size    Description    (Table 0214)
  1634.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  1635.  01h    BYTE    port number (00h COM1, 01h COM2)
  1636.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  1637.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  1638.  03h    BYTE    data bits (01h seven, 02h eight)
  1639.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  1640.  05h    BYTE    stop bits (00h one, 01h two)
  1641.  06h    BYTE    handshake (see #0215)
  1642.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  1643.  08h    BYTE    Nulls after CR (0-20)
  1644.  09h    BYTE    LF (00h off, 01h on)
  1645.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  1646.                80h: Serig off
  1647.  0Bh    BYTE    echo (00h off, 01h on)
  1648.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  1649.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  1650.  0Eh  5 BYTEs    reserved
  1651.  
  1652. Bitfields for HUNTER 16 handshake:
  1653. Bit(s)    Description    (Table 0215)
  1654.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  1655.  2    DTR enabled
  1656.  4    CTS enabled
  1657.  5    DSR enabled
  1658.  6    DCD enabled
  1659. --------S-141F-------------------------------
  1660. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  1661.     AH = 1Fh
  1662.     AL = 00h read modem control register
  1663.           Return: BL = modem control register (see #0216)
  1664.               AH = status
  1665.     AL = 01h write modem control register
  1666.           BL = modem control register (see #0216)
  1667.           Return: AX = status
  1668.     DX = port number
  1669. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  1670.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  1671. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  1672.  
  1673. Bitfields for X00 FOSSIL modem control register:
  1674. Bit(s)    Description    (Table 0216)
  1675.  0    data terminal ready
  1676.  1    request to send
  1677.  2    OUT1
  1678.  3    OUT2 (interrupts) enabled
  1679.  4    LOOP
  1680.  5-7    reserved
  1681. --------S-1420-------------------------------
  1682. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  1683.     AH = 20h
  1684.     DX = port number
  1685. Return: AH = 00h if character was available
  1686.         AL = next character (removed from receive buffer)
  1687.     AX = FFFFh if no character available
  1688. SeeAlso: AH=0Ch,AH=21h"X00"
  1689. --------S-1420-------------------------------
  1690. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  1691.     AH = 20h
  1692.     AL = logical port (01h COM1, 02h COM2)
  1693.     DX = physical port number
  1694. Return: AX = status
  1695.         0000h successful
  1696.         FFFFh failed
  1697. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  1698. --------S-1420-------------------------------
  1699. INT 14 - MultiDOS Plus - INITIALIZE PORT
  1700.     AH = 20h
  1701.     AL = port parameters (see #0167 at AH=00h"SERIAL")
  1702.     DX = port number (0-3)
  1703. Return: AH = status
  1704.         00h successful
  1705.         41h no such port
  1706.         64h monitor mode already active
  1707. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  1708. --------S-1420-------------------------------
  1709. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  1710.     AH = 20h
  1711.     DX = port number
  1712. Return: AX = number of bytes in output buffer
  1713. SeeAlso: AH=0Ah"PC-MOS"
  1714. --------S-1420------------------------------------
  1715. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  1716.     AH = 20h
  1717.     CX = channel number (00h COM1, 01h COM2, ...)
  1718.     DS:BX -> buffer with communications parameter (see #0214)
  1719. Return: AX = status
  1720.         0000h successful
  1721.         0001h invalid parameter
  1722. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  1723. --------S-1421-------------------------------
  1724. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  1725.     AH = 21h
  1726.     AL = character
  1727.     DX = port number
  1728. Notes:    the given character is inserted at the end of the receive buffer as if
  1729.       it had just arrived from the serial port; all normal receive
  1730.       processing (XON/XOFF, ^C/^K) is performed on the character
  1731.     fully re-entrant
  1732. SeeAlso: AH=20h"X00"
  1733. --------S-1421-------------------------------
  1734. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  1735.     AH = 21h
  1736.     DX = physical port number
  1737. Return: AX = status
  1738.         0000h successful
  1739.         FFFFh failed
  1740. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  1741. --------S-1421-------------------------------
  1742. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  1743.     AH = 21h
  1744.     AL = character to send
  1745.     DX = port number
  1746. Return: AH = status (see #0217)
  1747. Note:    monitor mode must have been turned on with AH=24h before calling
  1748. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  1749.  
  1750. (Table 0217)
  1751. Values for MultiDOS Plus status:
  1752.  00h    successful
  1753.  39h    no DSR or CTS
  1754.  3Ch    no DSR
  1755.  3Bh    no CTS
  1756.  41h    no such port
  1757.  42h    monitor mode not active
  1758.  97h    timed out
  1759. --------S-1421-------------------------------
  1760. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  1761.     AH = 21h
  1762.     AL = char to send
  1763.     DX = port number
  1764.     SI = timeout in timer ticks (0000h = default)
  1765. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1766.       operating system by The Software Link, Inc.
  1767. SeeAlso: AH=01h,AH=0Eh"PC/MOS",AH=22h"PC-MOS"
  1768. --------S-1421------------------------------------
  1769. INT 14 - HUNTER 16 - EXTENDED CONTROL
  1770.     AH = 21h
  1771.     AL = command
  1772.         01h force transmission of buffer
  1773.         02h clear transmit buffer
  1774.         03h clear receive buffer
  1775.     DX = port (00h COM1, 01h COM2)
  1776. Return: AH = extended status
  1777. Desc:    executes the command on the selected port
  1778. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  1779. --------S-1422-------------------------------
  1780. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  1781.     AH = 22h
  1782.     AL = logical port (01h COM1, 02h COM2)
  1783. Return: AX = status (0000h successful)
  1784. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  1785. --------S-1422-------------------------------
  1786. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  1787.     AH = 22h
  1788.     DX = port number
  1789. Return: AH = status (see also AH=21h"MultiDOS")
  1790.         00h successful
  1791.         AL = character
  1792.         3Dh framing and parity error
  1793.         3Eh overrun error
  1794.         3Fh framing error
  1795.         40h parity error
  1796.         96h ring buffer overflow
  1797. Note:    if no character is available, this function waits until a character
  1798.       arrives or an implementation-dependent timeout elapses
  1799. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  1800. --------S-1422-------------------------------
  1801. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  1802.     AH = 22h
  1803.     DX = port number
  1804.     SI = timeout in timer ticks (0000h = default)
  1805. Return: AH = port status (see also #0171 at AH=03h)
  1806.          bit 7 = 1 indicates time-out
  1807.     AL = character received
  1808. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1809.       operating system by The Software Link, Inc.
  1810. SeeAlso: AH=02h,AH=0Fh"PC-MOS",AH=21h"PC-MOS"
  1811. --------S-1422------------------------------------
  1812. INT 14 - HUNTER 16 - EXTENDED STATUS
  1813.     AH = 22h
  1814.     DX = port (00h COM1, 01h COM2)
  1815. Return: AH = extended status
  1816.     BX = number of characters in input buffer
  1817.     CX = number of characters in output buffer
  1818. Desc:    returns the most recent Extended Status code for the port
  1819. SeeAlso: AH=21h"HUNTER"
  1820. --------S-1423-------------------------------
  1821. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  1822.     AH = 23h
  1823.     AL = logical port (01h COM1, 02h COM2)
  1824.     DH = user ID
  1825.     DL = process ID (DH,DL both FFh for current task)
  1826. Return: AL = MW386 port mode (see #0218)
  1827.     CX = MW386 port number
  1828.     DH = owner's user ID
  1829.     DL = owner's task ID
  1830. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  1831.  
  1832. Bitfields for MW386 port mode:
  1833. Bit(s)    Description    (Table 0218)
  1834.  0    port is shared (spooler only)
  1835.  1    port is spooled instead of direct (spooler only)
  1836.  2    port is assigned as logical COM device, not in spooler
  1837.  3    port is free
  1838. --------S-1423-------------------------------
  1839. INT 14 - MultiDOS Plus - GET PORT STATUS
  1840.     AH = 23h
  1841.     DX = port number
  1842. Return: AH = line status (see #0171 at AH=03h)
  1843.     AL = modem status (see #0172 at AH=03h)
  1844. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  1845. --------S-1423-------------------------------
  1846. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  1847.     AH = 23h
  1848.     DX = port number
  1849.     BX = TCB segment/selector address of owner task
  1850. Return: nothing
  1851. SeeAlso: AH=0Dh"PC-MOS"
  1852. --------S-1423------------------------------------
  1853. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  1854.     AH = 23h
  1855.     BH = handshake line to set (00h RTS, 01h DTR)
  1856.     BL = new level (00h low, 01h high)
  1857. Desc:    sets the handshake lines of COM1 to the desired level
  1858. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  1859. --------S-1424-------------------------------
  1860. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  1861.     AH = 24h
  1862.     CX = physical I/O port number
  1863.     DS:DX -> configuration table (see #0219)
  1864. Return: AH = 00h
  1865. Note:    invalid port numbers are merely ignored
  1866. SeeAlso: INT 17/AH=96h
  1867.  
  1868. Format of Alloy MW386 configuration table:
  1869. Offset    Size    Description    (Table 0219)
  1870.  00h    BYTE    baud rate (see #0220)
  1871.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  1872.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  1873.  03h    BYTE    stop bits (00h=1, 01h=2)
  1874.  04h    BYTE    receive flow control
  1875.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  1876.  05h    BYTE    transmit flow control (as for receive)
  1877.  
  1878. (Table 0220)
  1879. Values for Alloy MW386 baud rate:
  1880.  00h    38400
  1881.  01h    19200
  1882.  02h    9600
  1883.  03h    7200
  1884.  04h    4800
  1885.  05h    3600
  1886.  06h    2400
  1887.  07h    2000
  1888.  08h    1200
  1889.  09h    600
  1890.  0Ah    300
  1891.  0Bh    150
  1892.  0Ch    134.5
  1893. --------S-1424-------------------------------
  1894. INT 14 - MultiDOS Plus - SET MONITOR MODE
  1895.     AH = 24h
  1896.     AL = port status storage
  1897.         00h single status for entire receive buffer
  1898.         01h separate status kept for each byte in receive buffer
  1899.     DX = port number
  1900. Return: AH = status
  1901.         00h successful
  1902.         3Ah invalid status storage specified
  1903.         41h no such port
  1904.         64h monitor mode already active
  1905. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  1906.       port
  1907. SeeAlso: AH=20h"MultiDOS",AH=25h
  1908. --------S-1424-------------------------------
  1909. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  1910.     AH = 24h
  1911. Return: ???
  1912. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1913.       operating system by The Software Link, Inc.
  1914. --------S-1424------------------------------------
  1915. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  1916.     AH = 24h
  1917.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  1918. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  1919. --------S-1425-------------------------------
  1920. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  1921.     AH = 25h
  1922.     AL = function
  1923.         00h only clear buffers
  1924.         01h clear buffers and deactivate
  1925.     DX = port number
  1926. Return: AH = status
  1927.         00h successful
  1928.         3Ah invalid function
  1929.         41h no such port
  1930.         42h monitor mode not active
  1931. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  1932. --------S-1425------------------------------------
  1933. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  1934.     AH = 25h
  1935.     AL = new state of RS232 drivers (00h off, 01h on)
  1936. Note:    this function can be used to save power by turning off the RS232 
  1937.       drivers.  It can also be used to turn on the RS232 drivers before
  1938.       connecting to a remote system to avoid "garbage" while the drivers
  1939.       turn on.
  1940. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  1941. --------S-1426------------------------------------
  1942. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  1943.     AH = 26h
  1944.     AL = 00h enable RI power up
  1945.         else disable RI power up
  1946. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  1947. --------S-1427-------------------------------
  1948. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  1949.     AH = 27h
  1950.     DX = port number
  1951. Return: AH = status
  1952.         00h successful
  1953.         41h no such port
  1954.         42h monitor mode not active
  1955.     AL = number of characters in receive buffer
  1956. --------S-1427------------------------------------
  1957. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  1958.     AH = 27h
  1959.     AL = number of extended protocols installed (since last call)
  1960. Return: AL = total number installed, including new ones
  1961. Desc:    Returns the number of extended communication protocols installed
  1962. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  1963. --------S-1428------------------------------------
  1964. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  1965.     AH = 28h
  1966.     AL = protocol handle
  1967.     DS:BX -> 8 character buffer for protocol name
  1968. Return:    AH = status
  1969.         00h successful
  1970.         DS:BX buffer filled with the protocol name
  1971.         FFh failed
  1972. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  1973. --------S-1429------------------------------------
  1974. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  1975.     AH = 29h
  1976.     DS:BX -> buffer containing the protocol name
  1977. Return: AH = status 
  1978.         00h successful
  1979.         AL = handle
  1980.         FFh failed
  1981. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  1982. --------S-142A------------------------------------
  1983. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  1984.     AH = 2Ah
  1985.     AL = protocol handle
  1986. Return: AH = status
  1987.         00h successful
  1988.         FFh failed
  1989.     AL = menu handle
  1990. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  1991. --------S-142B------------------------------------
  1992. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  1993.     AH = 2Bh
  1994.     AL = protocol handle
  1995.     DS:BX -> buffer for extended protocol parameters
  1996. Return: AH = status    
  1997.         00h successful
  1998.         DS:BX buffer filled with extended parameters
  1999.         FFh failed
  2000. SeeAlso: AH=2Ah"HUNTER"
  2001. --------S-142C00----------------------------------
  2002. INT 14 - HUNTER 16 - GET DTR
  2003.     AX = 2C00h
  2004. Return: AH = 00h
  2005.     BL = current state
  2006.         00h     normal DTR operation
  2007.         else DTR is forced high
  2008. Desc:    Indicates whether the DTR signal on COM1 is forced high
  2009. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  2010.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  2011. SeeAlso: AH=2Ch"SET DTR"
  2012. --------S-142C------------------------------------
  2013. INT 14 - HUNTER 16 - SET DTR
  2014.     AH = 2Ch
  2015.     AL nonzero
  2016.     BL = new state
  2017.         00h     normal operation
  2018.         else force DTR high
  2019. Return: AH = 00h
  2020. Desc:    determine whether the DTR signal on COM1 should be forced high
  2021. SeeAlso: AX=2C00h
  2022. --------S-1456-------------------------------
  2023. INT 14 U - BWCOM14 - INSTALLATION CHECK
  2024.     AH = 56h
  2025. Return: CX = 0001h if installed
  2026. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  2027.       connected to the serial port) distributed as part of the
  2028.       Beame&Whiteside BW-NFS package
  2029. SeeAlso: AH=57h,AH=58h
  2030. --------S-1457-------------------------------
  2031. INT 14 U - BWCOM14 - INITIALIZE
  2032.     AH = 57h
  2033.     DL = port number
  2034. Return: AL = initialization status (00h successful, 01h already initialized)
  2035.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  2036. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  2037.       port will be handled by BWCOM14 until AH=58h is called
  2038. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  2039. --------S-1458-------------------------------
  2040. INT 14 U - BWCOM14 - SHUTDOWN
  2041.     AH = 58h
  2042. Return: CX = status (0001h successful, 0002h not initialized)
  2043. Note:    after this call, BWCOM14 will no longer redirect the COM port
  2044. SeeAlso: AH=56h,AH=57h
  2045. --------N-146F--BXFFFE-----------------------
  2046. INT 14 U - Connection Manager - ???
  2047.     AH = 6Fh
  2048.     BX = FFFEh
  2049.     ???
  2050. Return: ???
  2051. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2052.       serial ports over an IPX or NetBIOS-based network
  2053. --------N-146F--BXFFFF-----------------------
  2054. INT 14 - Connection Manager - INSTALLATION CHECK
  2055.     AH = 6Fh
  2056.     BX = FFFFh
  2057. Return: DX:BX -> Connection Manager Communication Table if installed
  2058.     BX = FFFFh if not installed
  2059. SeeAlso: AH=0Dh/DX=FFFFh
  2060. --------S-147E-------------------------------
  2061. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  2062.     AH = 7Eh
  2063.     AL = code assigned to external application (80h-BFh)
  2064.         80h reserved for communications FOSSIL
  2065.         81h video FOSSIL
  2066.         82h reserved for keyboard FOSSIL
  2067.         83h reserved for system FOSSIL
  2068.     ES:DX -> entry point
  2069. Return: AX = 1954h
  2070.     BL = code assigned to application (same as input AL)
  2071.     DH = 00h failed
  2072.          01h successful
  2073. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  2074. --------S-147F-------------------------------
  2075. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  2076.     AH = 7Fh
  2077.     AL = code assigned to external application
  2078.     ES:DX -> entry point
  2079. Return: AX = 1954h
  2080.     BL = code assigned to application (same as input AL)
  2081.     DH = 00h failed
  2082.          01h successful
  2083. SeeAlso: AH=7Eh
  2084. --------S-1480-------------------------------
  2085. INT 14 - COMMUNICATIONS FOSSIL
  2086.     AH = 80h
  2087. SeeAlso: AH=7Eh
  2088. --------S-1480-------------------------------
  2089. INT 14 - COURIERS.COM - INSTALLATION CHECK
  2090.     AH = 80h
  2091. Return: AH = E8h if loaded
  2092. Program: COURIERS is a TSR utility by PC Magazine
  2093. --------S-148000-----------------------------
  2094. INT 14 - ARTICOM - INSTALLATION CHECK
  2095.     AX = 8000h
  2096. Return: AL = FFh if installed
  2097.         BH = major version
  2098.         BL = minor version
  2099. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  2100.       works on top of NetBIOS and allows modem/serial-port sharing by
  2101.       programs using INT 14 for serial I/O.
  2102. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  2103.       drivers
  2104. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  2105. --------S-148000-----------------------------
  2106. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  2107.     AX = 8000h
  2108.     DX = port number
  2109. Return: AX = code for last error (see #0221)
  2110.     BX = number of characters in output buffer
  2111.     CX = nubmer of characters in input buffer
  2112.     DX = state flag (see #0222)
  2113. Program: COMM-DRV is a universal serial communications driver by Willies'
  2114.       Computer Software Company, which supports standard INT 14 and
  2115.       FOSSIL calls as well as its own interfaces
  2116. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  2117.  
  2118. (Table 0221)
  2119. Values for COMM-DRV error code:
  2120.  00h    no error
  2121.  01h    buffer not set or attempted to change buffer for active port
  2122.  02h    port not active
  2123.  03h    transmit buffer full
  2124.  04h    receive buffer full
  2125.  05h    syntax error
  2126.  06h    invalid buffer size
  2127.  07h    invalid port
  2128.  08h    handler changed
  2129.  09h    invalid baud rate
  2130.  0Ah    invalid parity setting
  2131.  0Bh    invalid data length
  2132.  0Ch    invalid number of stop bits
  2133.  0Dh    invalid protocol number
  2134.  0Eh    IRQ changed
  2135.  0Fh    port changged
  2136.  10h    invalid threshold setting
  2137.  11h    invalid IRQ number
  2138.  12h    interrupts not enabled
  2139.  13h    invalid break syntax
  2140.  14h    fatal error
  2141.  15h    CTS error
  2142.  16h    invalid RS232 I/O port address
  2143.  17h    environment variable not set
  2144.  18h    error on IOCTL call
  2145.  19h    error during atexit cleanup
  2146.  1Ah    error mapping for direct calls
  2147.  1Bh    error opening device
  2148.  1Ch    unable to allocate memory
  2149.  1Dh    error on external micro card
  2150.  1Eh    card changed error
  2151.  1Fh    card type error
  2152.  20h    not supported
  2153.  21h    parent port error
  2154.  22h    card command buffer full
  2155.  23h    no subdevice for this port
  2156.  24h    unknown error
  2157.  25h    external card busy
  2158.  26h    no more timers available
  2159.  27h    INT 14 vector changed
  2160.  28h    INT 08 vector changed
  2161.  29h    DPMI error
  2162.  2Ah    TSR buffer too small (or nonexistent)
  2163.  2Bh    out of asynchronous resources
  2164.  2Ch    out of timer resources
  2165.  2Dh    out of "other" timer resources
  2166.  2Eh    file I/O error
  2167.  2Fh    hardware memory > 64K
  2168.  
  2169. Bitfields for state flag :
  2170. Bit(s)    Description    (Table 0222)
  2171.  0    port is active
  2172.  1    output throttled (XOFF received, or DSR or CTS reset)
  2173.  2    input throttled (XOFF sent, or DTR or RTS reset)
  2174. --------S-148001-----------------------------
  2175. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  2176.     AX = 8001h
  2177. Return: AX = error code, if error (see #0224)
  2178. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  2179. Index:    uninstall;ARTICOM
  2180. --------S-148001-----------------------------
  2181. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  2182.     AX = 8001h
  2183.     DX = port number
  2184. Return: BX:DI -> Port Control Block (see #0231)
  2185. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  2186. --------S-148002-----------------------------
  2187. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  2188.     AX = 8002h
  2189.     ES:DI -> buffer for redirector status structure (see #0223)
  2190. Return: AX = error code, if error (see #0224)
  2191. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  2192.  
  2193. Format of ARTICOM redirector status:
  2194. Offset    Size    Description    (Table 0223)
  2195.  00h    WORD    redirector major and minor version numbers
  2196.  02h    WORD    redirectable ports found
  2197.  04h    WORD    redirectable ports + local ports found
  2198.  06h    WORD    redirector internal buffer size
  2199.  08h    WORD    maximum servers maintained
  2200.  0Ah    WORD    number of adapters found
  2201. --------S-148002-----------------------------
  2202. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  2203.     AX = 8002h
  2204.     DX = port number
  2205. Return: AH bit 7 set on error
  2206.     AH bit 7 clear if successful
  2207.         BX:DI -> Port Control Block (see #0231) (modifyable portion only)
  2208. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  2209. --------S-148003-----------------------------
  2210. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  2211.     AX = 8003h
  2212.     CX = error number to translate (see #0224)
  2213. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  2214. SeeAlso: AX=8000h
  2215.  
  2216. (Table 0224)
  2217. Values for ARTICOM error codes:
  2218.  00h    "No error"
  2219.  01h    "An invalid port number was specified"
  2220.  02h    "Port is already redirected"
  2221.  03h    "Too many ports redirected"
  2222.  04h    "Cannot locate the server"
  2223.  05h    "Server is busy"
  2224.  06h    "Access denied"
  2225.  07h    "Resource in use"
  2226.  08h    "Resource in use - request queued"
  2227.  09h    "No such resource"
  2228.  0Ah    "Invalid username/password pair"
  2229.  0Bh    "Noncompatible version number"
  2230.  0Ch    "Can't remove from memory"
  2231.  0Dh    "Bad NETBIOS adapter number"
  2232.  0Eh    "No more entries in list"
  2233.  0Fh    "Resource is not available at this time"
  2234.  10h    "Invalid value to INT 14 call"
  2235. --------S-148003-----------------------------
  2236. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  2237.     AX = 8003h
  2238.     DX = port number
  2239. Return: AX = number of characters in input buffer
  2240.     BX = input buffer size
  2241.     CX = number of characters in output buffer
  2242.     DX = output buffer size
  2243. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  2244. --------S-148004-----------------------------
  2245. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  2246.     AX = 8004h
  2247.     DX = port to redirect (COM1=0, COM2=1, ...)
  2248.     CH = attach type
  2249.     CL = adapter to use for attach, 0FFh to search all
  2250.     ES:DI -> attachment structure (see #0225)
  2251. Return: AX = error code, if error (see #0224)
  2252. Note:    The wildcard '*' is supported in the server and resource fields.  If
  2253.       wild cards are used then the first matching available server is
  2254.       attached.
  2255. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  2256.  
  2257. Format of ARTICOM attachment structure:
  2258. Offset    Size    Description    (Table 0225)
  2259.  00h 16 BYTEs    server to look for attach
  2260.  10h 16 BYTEs    attach to resource name
  2261.  20h 16 BYTEs    username for attach
  2262.  30h 16 BYTEs    password for username or resource
  2263.  40h    BYTE    attach type
  2264.         00h normal
  2265.         01h queue if resource is in use (not yet supported in v1.00)
  2266. --------S-148005-----------------------------
  2267. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  2268.     AX = 8005h
  2269.     DX = port to detach (COM1=0, COM2=1, ...)
  2270. Return: AX = error code, if error (see #0224)
  2271. Note:    only a previously attached resource can be detached
  2272. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  2273. --------S-148006-----------------------------
  2274. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  2275.     AX = 8006h
  2276.     BX = remote port (COM1=0, COM2=1, ...)
  2277.     CL = adapter number, FFh to try all adapters
  2278.     ES:DI -> resource information structure (see #0226)
  2279.     DS:SI -> 16 byte server name. See note.
  2280. Return: AX = error code, if error (see #0224)
  2281.     BX = next remote port, recall to get next resource info
  2282. Note:    Wild cards supported in both the resource field and server name
  2283.       string DS:SI. If wild cards used then first matching available
  2284.       resource information is searched. Set the resource field to FFh to
  2285.       return all resources.
  2286. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  2287.  
  2288. Format of ARTICOM resource information structure:
  2289. Offset    Size    Description    (Table 0226)
  2290.  00h    BYTE    00h = free, else used
  2291.  01h 16 BYTEs    resource name
  2292.  11h 16 BYTEs    username of resource user
  2293.  21h    WORD    amount of time used
  2294.  23h    WORD    amount of time remaining
  2295.  53h 48 BYTEs    description of resource
  2296.  93h 64 BYTEs    initialization string for modem
  2297.  B3h 32 BYTEs    dial string for modem
  2298.  D3h 32 BYTEs    hang-up string for modem
  2299. --------S-148007-----------------------------
  2300. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  2301.     AX = 8007h
  2302.     DX = port index (COM1=0, COM2=1, ...)
  2303.     ES:DI -> buffer for port information structure (see #0227)
  2304. Return: CF clear if redirection info returned and port is redirected
  2305.     CF set if not a redirected port
  2306.     AX = error code, if error (see #0224)
  2307. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  2308.  
  2309. Format of ARTICOM port information structure:
  2310. Offset    Size    Description    (Table 0227)
  2311.  00h 16 BYTEs    server name resource is on
  2312.  10h    BYTE    adapter number server is on
  2313.  11h 16 BYTEs    resource name
  2314.  21h    WORD    remote port index, use to get additional information
  2315.  23h    WORD    buffer size
  2316.  25h    WORD    baud rate (see #0228)
  2317.  26h    BYTE    modem status register
  2318.  27h    BYTE    modem control register
  2319.  28h    BYTE    line status register
  2320.  29h    BYTE    line control register
  2321.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  2322.  2Bh    WORD    send timeout in ticks
  2323.  2Dh    WORD    receive timeout in ticks
  2324.  2Fh    WORD    time used on remote port
  2325.  31h    WORD    time left before timeout
  2326.  33h    BYTE    if server changes allowed?
  2327.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  2328.  
  2329. (Table 0228)
  2330. Values for ARTICOM baud rate:
  2331.  00h    110
  2332.  01h    150
  2333.  02h    300
  2334.  03h    600
  2335.  04h    1200
  2336.  05h    2400
  2337.  06h    4800
  2338.  07h    9600
  2339.  08h    19200
  2340.  09h    38400
  2341.  0Ah    57600
  2342.  0Bh    115200
  2343.  0Ch    134.5
  2344.  0Dh    1800
  2345.  0Eh    2000
  2346.  0Fh    3600
  2347.  10h    7200
  2348. --------S-148008-----------------------------
  2349. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  2350.     AX = 8008h
  2351.     BX = server index (0,1,...)
  2352.     ES:DI -> server name structure (see #0229)
  2353. Return: AX = error code, if error (see #0224)
  2354.     BX = next remote port, repeat call to get next available server
  2355. Note:    the wildcard '*' is supported in the server name field.     Set the
  2356.       server name to FFh to search for all servers.
  2357. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  2358.  
  2359. Format of ARTICOM server name structure:
  2360. Offset     Size      Description    (Table 0229)
  2361.   00h 16 BYTEs      (call) ASCIZ server name
  2362.   10h     BYTE      (return) the adapter server is found
  2363. --------S-148009-----------------------------
  2364. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  2365.     AX = 8009h
  2366.     BX = send timeout in ticks
  2367.     CX = receive timeout in ticks
  2368.     DX = port index (COM1=0, COM2=1, ...)
  2369. Return: nothing
  2370. SeeAlso: AX=8000h,AX=800Ah
  2371. --------S-14800A-----------------------------
  2372. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  2373.     AX = 800Ah
  2374.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  2375.     DX = port index (COM1=0, COM2=1, ...)
  2376. Return: AX = error code, if error (see #0224)
  2377. Note:    for attached ports only!
  2378. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  2379. --------S-148025-----------------------------
  2380. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  2381.     AX = 8025h
  2382.     DS:DX -> address of trap function (see #0230) to call on read/write
  2383. Note:    setting the vector to a user function allows the redirector's activity
  2384.       to be monitored.
  2385. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  2386.  
  2387. (Table 0230)
  2388. Values ARTICOM trap function is called with:
  2389.     AH = operation
  2390.         80h reading character
  2391.         81h writing character
  2392.     AL = character
  2393. Return: AX must be preserved
  2394.     far JUMP to old trap function (see AX=8035h)
  2395. --------S-148035-----------------------------
  2396. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  2397.     AX = 8035h
  2398. Return: ES:BX -> address of current send/receive routine
  2399. Note:    this function returns the address of the routine which is called
  2400.       inside A-REDIR.EXE each time a character is received or sent on the
  2401.       active COM port.
  2402. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  2403. --------S-1481-------------------------------
  2404. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  2405.     AH = 81h
  2406.     AL = port number (1-4)
  2407. Return: AH = 00h port available
  2408.          01h port exists but already in use
  2409.          02h port nonexistent
  2410. Program: COURIERS is a TSR utility by PC Magazine
  2411. SeeAlso: AH=83h,AH=8Dh
  2412. --------S-1481-------------------------------
  2413. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  2414.     AH = 81h
  2415.     BX:DI -> port control block (see #0231)
  2416.     DX = port number
  2417. Return: AH = line status register (see #0171)
  2418.         error if bit 7 set
  2419.     AL = modem status register (see #0172)
  2420. Program: COMM-DRV is a universal serial communications driver by Willies'
  2421.       Computer Software Company, which supports standard INT 14 and
  2422.       FOSSIL calls as well as its own interfaces
  2423. Note:    AX=8001h should be called first to fill in the port control block
  2424. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  2425.  
  2426. Format of COMM-DRV port control block:
  2427. Offset    Type    Description    (Table 0231)
  2428.  00h    WORD    port IO address
  2429.  02h    WORD    port IRQ
  2430.  04h    WORD    baud rate
  2431.  06h    WORD    parity
  2432.  08h    WORD    data bits
  2433.  0Ah    WORD    stop bits
  2434.  0Ch    WORD    break status (0000h off)
  2435.  0Eh    WORD    flow control protocol
  2436.  10h    BYTE    input block
  2437.  11h    BYTE    output block
  2438.  12h    WORD    low threshold
  2439.  14h    WORD    high threshold
  2440.  16h    WORD    segment of buffer
  2441.  18h    WORD    offset of buffer
  2442.  1Ah    WORD    input buffer length
  2443.  1Ch    WORD    output buffer length
  2444.  1Eh    BYTE    auxiliary address
  2445.  1Fh    BYTE    spare
  2446.  20h  4 WORDs    spares
  2447. --------V-148100-----------------------------
  2448. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  2449.     AX = 8100h
  2450.     ES:DI -> buffer for VFOSSIL information (see #0232)
  2451. Return: AX = 1954h if installed
  2452. SeeAlso: AH=7Eh,AX=8101h
  2453.  
  2454. Format of VFOSSIL information:
  2455. Offset    Size    Description    (Table 0232)
  2456.  00h    WORD    size of information in bytes, including this field
  2457.  02h    WORD    VFOSSIL major version
  2458.  04h    WORD    VFOSSIL revision level
  2459.  06h    WORD    highest VFOSSIL application function supported
  2460. --------V-148101-----------------------------
  2461. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  2462.     AX = 8101h
  2463.     ES:DI -> buffer for application function table (see #0233)
  2464.     CX = length of buffer in bytes
  2465. Return: AX = 1954h if installed
  2466.         BH = highest VFOSSIL application function supported
  2467. Note:    the number of initialized pointers in the application function table
  2468.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  2469.       will be initialized
  2470. SeeAlso: AX=8102h
  2471.  
  2472. Format of VFOSSIL application function table:
  2473. Offset    Size    Description    (Table 0233)
  2474.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0238)
  2475.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0239)
  2476.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0240)
  2477.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0241)
  2478.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0242)
  2479.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0243)
  2480.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  2481.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0245)
  2482.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0246)
  2483.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0247)
  2484.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0248)
  2485.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0249)
  2486.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  2487.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  2488.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  2489.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  2490.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  2491.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  2492.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  2493.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  2494.  
  2495. Format of VFOSSIL video mode data structure:
  2496. Offset    Size    Description    (Table 0234)
  2497.  00h    WORD    length of structure including this field
  2498.  02h    BYTE    mode characteristics
  2499.         bit 0: clear if MDA, set otherwise
  2500.         bit 1: graphics mode
  2501.         bit 2: color disabled (black-and-white)
  2502.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  2503.  04h    WORD    number of text columns
  2504.  06h    WORD    number of text rows
  2505.  08h    WORD    reserved
  2506.  0Ah    WORD    reserved
  2507.  0Ch    DWORD    reserved
  2508.  
  2509. Format of VFOSSIL video configuration data:
  2510. Offset    Size    Description    (Table 0235)
  2511.  00h    WORD    structure length including this field
  2512.  02h    WORD    adapter type
  2513.         00h monochrome/printer
  2514.         01h CGA
  2515.         02h EGA
  2516.         03h VGA
  2517.         07h 8514/A
  2518.  04h    WORD    display type
  2519.         00h monochrome
  2520.         01h color
  2521.         02h enhanced color
  2522.         09h 8514
  2523.  06h    DWORD    adapter memory size
  2524.  
  2525. Format of VFOSSIL cursor type record:
  2526. Offset    Size    Description    (Table 0236)
  2527.  00h    WORD    cursor start line
  2528.  02h    WORD    cursor end line
  2529.  04h    WORD    cursor width (always 01h)
  2530.  06h    WORD    cursor attribute (FFFFh = hidden)
  2531.  
  2532. (Table 0237)
  2533. Values for VFOSSIL error code:
  2534.  0000h    successful
  2535.  0074h    internal VIO failure
  2536.  0163h    unsupported mode
  2537.  0166h    invalid row value
  2538.  0167h    invalid column value
  2539.  017Eh    buffer too small
  2540.  01A5h    invalid VIO parameter
  2541.  01B4h    invalid VIO handle
  2542.  
  2543. (Table 0238)
  2544. Call VioGetMode with:
  2545.     STACK:    WORD    VIO handle (must be 00h)
  2546.         DWORD    pointer to video mode data structure (see #0234)
  2547. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0237)
  2548. SeeAlso: #0239
  2549.  
  2550. (Table 0239)
  2551. Call VioSetMode with:
  2552.     STACK:    WORD    VIO handle (must be 00h)
  2553.         DWORD    pointer to video mode data structure (see #0234)
  2554. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0237)
  2555. SeeAlso: #0238
  2556.  
  2557. (Table 0240)
  2558. Call VioGetConfig with:
  2559.     STACK:    WORD    VIO handle (must be 00h)
  2560.         DWORD    pointer to video configuration data buffer (see #0235)
  2561. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0237)
  2562.  
  2563. (Table 0241)
  2564. Call VioWrtTTY with:
  2565.     STACK:    WORD    VIO handle (must be 00h)
  2566.         WORD    length of string
  2567.         DWORD    pointer to character string to be written to screen
  2568. Return: AX = error code (00h, 74h, 1B4h) (see #0237)
  2569. Notes:    write wraps at end of line and terminates if it reaches end of screen
  2570.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  2571.       not required to be reentrant; in non-ANSI mode, the function is
  2572.       reentrant and may be called from within an MS-DOS function call
  2573.  
  2574. (Table 0242)
  2575. Call VioGetANSI with:
  2576.     STACK:    WORD    VIO handle (must be 00h)
  2577.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  2578.             or 01h if ANSI is on
  2579. Return: AX = error code (00h, 74h, 1B4h) (see #0237)
  2580. SeeAlso: #0243
  2581.  
  2582. (Table 0243)
  2583. Call VioSetANSI with:
  2584.     STACK:    WORD    VIO handle (must be 00h)
  2585.         DWORD    pointer to WORD indicating new state of ANSI
  2586.             00h off, 01h on
  2587. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0237)
  2588. SeeAlso: #0242
  2589.  
  2590. (Table 0244)
  2591. Call VioGetCurPos with:
  2592.     STACK:    WORD    VIO handle (must be 00h)
  2593.         DWORD    pointer to WORD to hold current cursor column (0-based)
  2594.         DWORD    pointer to WORD to hold current cursor row (0-based)
  2595. Return: AX = error code (00h, 74h, 1B4h) (see #0237)
  2596. SeeAlso: #0245
  2597.  
  2598. (Table 0245)
  2599. Call VioSetCurPos with:
  2600.     STACK:    WORD    VIO handle (must be 00h)
  2601.         WORD    cursor column
  2602.         WORD    cursor row
  2603. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2604. Note:    if either coordinate is invalid, the cursor is not moved
  2605. SeeAlso: #0244
  2606.  
  2607. (Table 0246)
  2608. Call VioGetCurType with:
  2609.     STACK:    WORD    VIO handle (must be 00h)
  2610.         DWORD    pointer to cursor type record (see #0236)
  2611. Return: AX = error code (00h, 74h, 1B4h) (see #0237)
  2612. SeeAlso: #0247
  2613.  
  2614. (Table 0247)
  2615. Call VioSetCurType with:
  2616.     STACK:    WORD    VIO handle (must be 00h)
  2617.         DWORD    pointer to cursor type record (see #0236)
  2618. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0237)
  2619. SeeAlso: #0248
  2620.  
  2621. (Table 0248)
  2622. Call VioScrollUp with:
  2623.     STACK:    WORD    VIO handle (must be 00h)
  2624.         DWORD    pointer to char/attr cell for filling emptied rows
  2625.         WORD    number or rows to scroll (FFFFh = clear area)
  2626.         WORD    right column of scroll area
  2627.         WORD    bottom row of scroll area
  2628.         WORD    left column of scroll area
  2629.         WORD    top row of scroll area
  2630. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2631. SeeAlso: #0249,INT 10/AH=06h
  2632.  
  2633. (Table 0249)
  2634. Call VioScrollDn with:
  2635.     STACK:    WORD    VIO handle (must be 00h)
  2636.         DWORD    pointer to char/attr cell for filling emptied rows
  2637.         WORD    number or rows to scroll (FFFFh = clear area)
  2638.         WORD    right column of scroll area
  2639.         WORD    bottom row of scroll area
  2640.         WORD    left column of scroll area
  2641.         WORD    top row of scroll area
  2642. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2643. SeeAlso: #0248,INT 10/AH=07h
  2644.  
  2645. (Table 0250)
  2646. Call VioReadCellStr with:
  2647.     STACK:    WORD    VIO handle (must be 00h)
  2648.         WORD    column at which to start reading
  2649.         WORD    row at which to start reading
  2650.         DWORD    pointer to WORD containing length of buffer in bytes
  2651.             on return, WORD contains number of bytes actually read
  2652.         DWORD    pointer to buffer for cell string
  2653. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0237)
  2654.  
  2655. (Table 0251)
  2656. Call VioReadCharStr with:
  2657.     STACK:    WORD    VIO handle (must be 00h)
  2658.         WORD    column at which to start reading
  2659.         WORD    row at which to start reading
  2660.         DWORD    pointer to WORD containing length of buffer in bytes
  2661.             on return, WORD contains number of bytes actually read
  2662.         DWORD    pointer to buffer for character string
  2663. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0237)
  2664.  
  2665. (Table 0252)
  2666. Call VioWrtCellStr with:
  2667.     STACK:    WORD    VIO handle (must be 00h)
  2668.         WORD    column at which to start writing
  2669.         WORD    row at which to start writing
  2670.         WORD    length of cell string in bytes
  2671.         DWORD    pointer to cell string to write
  2672. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2673. Note:    write wraps at end of line and terminates if it reaches end of screen
  2674.  
  2675. (Table 0253)
  2676. Call VioWrtCharStr with:
  2677.     STACK:    WORD    VIO handle (must be 00h)
  2678.         WORD    column at which to start writing
  2679.         WORD    row at which to start writing
  2680.         WORD    length of character string
  2681.         DWORD    pointer to character string to write
  2682. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2683. Note:    write wraps at end of line and terminates if it reaches end of screen
  2684.  
  2685. (Table 0254)
  2686. Call VioWrtCharStrAttr with:
  2687.     STACK:    WORD    VIO handle (must be 00h)
  2688.         DWORD    pointer to attribute to be applied to each character
  2689.         WORD    column at which to start writing
  2690.         WORD    row at which to start writing
  2691.         WORD    length of character string
  2692.         DWORD    pointer to character string to write
  2693. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2694. Note:    write wraps at end of line and terminates if it reaches end of screen
  2695.  
  2696. (Table 0255)
  2697. Call VioWrtNAttr with:
  2698.     STACK:    WORD    VIO handle (must be 00h)
  2699.         WORD    column at which to start writing
  2700.         WORD    row at which to start writing
  2701.         WORD    number of times to write attribute
  2702.         DWORD    pointer to display attribute to replicate
  2703. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2704. Note:    write wraps at end of line and terminates if it reaches end of screen
  2705.  
  2706. (Table 0256)
  2707. Call VioWrtNCell with:
  2708.     STACK:    WORD    VIO handle (must be 00h)
  2709.         WORD    column at which to start writing
  2710.         WORD    row at which to start writing
  2711.         WORD    number of times to write cell
  2712.         DWORD    pointer to cell to replicate
  2713. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2714. Note:    write wraps at end of line and terminates if it reaches end of screen
  2715.  
  2716. (Table 0257)
  2717. Call VioWrtNChar with:
  2718.     STACK:    WORD    VIO handle (must be 00h)
  2719.         WORD    column at which to start writing
  2720.         WORD    row at which to start writing
  2721.         WORD    number of times to write character
  2722.         DWORD    pointer to character to replicate
  2723. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0237)
  2724. Note:    write wraps at end of line and terminates if it reaches end of screen
  2725. --------V-148102-----------------------------
  2726. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  2727.     AX = 8102h
  2728. Return: AX = 1954h
  2729. Note:    terminates all operations; after this call, the video FOSSIL may either
  2730.       be removed from memory or reinitialized
  2731. SeeAlso: AX=8101h,AX=8103h
  2732. --------V-148103-----------------------------
  2733. INT 14 - VIDEO FOSSIL - UNINSTALL
  2734.     AX = 8103h
  2735. Return: AX = 1954h
  2736. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  2737. --------K-1482-------------------------------
  2738. INT 14 - KEYBOARD FOSSIL
  2739.     AH = 82h
  2740. SeeAlso: AH=7Eh
  2741. --------S-1482-------------------------------
  2742. INT 14 - COURIERS.COM - CONFIGURE PORT
  2743.     AH = 82h
  2744.     AL = port number (1-4)
  2745.     BX = speed (bps)
  2746.     CX = bit flags
  2747.         bit 0: enable input flow control
  2748.         bit 1: enable output flow control
  2749.         bit 2: use X.PC protocol (not yet implemented)
  2750. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  2751. --------S-1482-------------------------------
  2752. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  2753.     AH = 82h
  2754.     DX = port number
  2755. Return: AH bit 7 set on error
  2756.     AH bit 7 clear if successful
  2757. Desc:    reset the port to its state before the AH=81h initialization and unhook
  2758.       any interrupts used by the port
  2759. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  2760. ----------1483-------------------------------
  2761. INT 14 - SYSTEM FOSSIL
  2762.     AH = 83h
  2763. SeeAlso: AH=7Eh
  2764. --------S-1483-------------------------------
  2765. INT 14 - COURIERS.COM - START INPUT
  2766.     AH = 83h
  2767.     ES:BX -> circular input buffer
  2768.     CX = length of buffer
  2769.         (should be at least 128 bytes if input flow control enabled)
  2770. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  2771. --------S-1483-------------------------------
  2772. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  2773.     AH = 83h
  2774.     DX = port number
  2775.     AL = subfunction
  2776.         00h flush input buffer
  2777.         01h flush output buffer
  2778.         02h flush both buffers
  2779. Return: AH bit 7 set on error
  2780.     AH bit 7 clear if successful
  2781. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  2782. --------S-1484-------------------------------
  2783. INT 14 - COURIERS.COM - READ CHARACTER
  2784.     AH = 84h
  2785. Return: ZF set if no characters available
  2786.     ZF clear
  2787.        AL = character
  2788.        AH = modem status bits
  2789.         bit 7: set on input buffer overflow
  2790. SeeAlso: AH=02h,AH=86h,AH=89h
  2791. --------S-1484-------------------------------
  2792. INT 14 - COMM-DRV v14.0 - SEND PACKET
  2793.     AH = 84h
  2794.     CX = packet length in bytes
  2795.     DX = port number
  2796.     ES:DI -> packet to be sent
  2797. Return: AH = line status (see #0171)
  2798.         bit 7 set on error
  2799.     AL destroyed
  2800. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  2801. --------S-1485-------------------------------
  2802. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  2803.     AH = 85h
  2804. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  2805. --------S-1485-------------------------------
  2806. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  2807.     AH = 85h
  2808.     CX = length of packet in bytes
  2809.     DX = port number
  2810.     ES:DI -> buffer for packet
  2811. Return: AH = line status (see #0171)
  2812.         bit 7 set on error
  2813.     AL destroyed
  2814. Note:    this call requires that at least the requested number of bytes are
  2815.       already present in the input buffer, and will fail if there are
  2816.       fewer bytes available
  2817. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  2818. --------S-1486-------------------------------
  2819. INT 14 - COURIERS.COM - START OUTPUT
  2820.     AH = 86h
  2821.     ES:BX -> output buffer
  2822.     CX = length of output buffer
  2823. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  2824. --------S-1486-------------------------------
  2825. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  2826.     AH = 86h
  2827.     BL = maximum clock ticks to wait before signalling error on input func
  2828.     BH = maximum clock ticks to wait before signalling error on output
  2829.     DX = port number
  2830.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  2831.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  2832. Return: AH bit 7 set on error
  2833.     AH bit 7 clear if successful
  2834. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  2835.       returning an error when no data is available; functions 01h and 84h
  2836.       will wait for the output timeout before returning an error if there
  2837.       is no space to output the data
  2838. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  2839. --------S-1487-------------------------------
  2840. INT 14 - COURIERS.COM - OUTPUT STATUS
  2841.     AH = 87h
  2842. Return: AX = number of unsent characters
  2843. SeeAlso: AX=88h"COURIERS"
  2844. --------S-1487-------------------------------
  2845. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  2846.     AH = 87h
  2847.     DX = port number
  2848. Return: AH bit 7 set on error
  2849.     AH bit 7 clear if successful
  2850. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  2851. --------S-1488-------------------------------
  2852. INT 14 - COURIERS.COM - ABORT OUTPUT
  2853.     AH = 88h
  2854. SeeAlso: AH=09h,AH=85h"COURIERS"
  2855. --------S-1488-------------------------------
  2856. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  2857.     AH = 88h
  2858.     DX = port number
  2859. Return: AH bit 7 set on error
  2860.     AH bit 7 clear if successful
  2861. Program: COMM-DRV is a universal serial communications driver by Willies'
  2862.       Computer Software Company, which supports standard INT 14 and
  2863.       FOSSIL calls as well as its own interfaces
  2864. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  2865. --------S-1489-------------------------------
  2866. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  2867.     AH = 89h
  2868.     CL = character to send
  2869. SeeAlso: AH=01h,AH=84h"COURIERS"
  2870. --------S-1489-------------------------------
  2871. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  2872.     AH = 89h
  2873.     DX = port number
  2874. Return: AH bit 7 set on error
  2875.     AH bit 7 clear if successful
  2876. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  2877. --------S-148A-------------------------------
  2878. INT 14 - COURIERS.COM - SEND BREAK
  2879.     AH = 8Ah
  2880. SeeAlso: AH=89h"COURIERS",AH=FAh
  2881. --------S-148A-------------------------------
  2882. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  2883.     AH = 8Ah
  2884.     DX = port number
  2885. Return: AH bit 7 set on error
  2886.     AH bit 7 clear if successful
  2887. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  2888. --------S-148B-------------------------------
  2889. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  2890.     AH = 8Bh
  2891.     CX = bitmask of interrupt to process
  2892.         00h = deinstall
  2893.     BX:DI -> DWORD containing address of function to be called
  2894. Return: AH bit 7 clear if successful
  2895.     AH bit 7 set on error
  2896. --------S-148C-------------------------------
  2897. INT 14 - COURIERS.COM - SET SPEED
  2898.     AH = 8Ch
  2899.     BX = speed in bps
  2900. SeeAlso: AH=00h,AH=82h"COURIERS"
  2901. --------S-148C-------------------------------
  2902. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  2903.     AH = 8Ch
  2904.     AL = register offset
  2905.     DX = port number
  2906. Return: AH bit 7 set on error
  2907.     AH bit 7 clear if successful
  2908.         AL = contents of UART register
  2909. SeeAlso: AH=8Dh"COMM-DRV"
  2910. --------S-148D-------------------------------
  2911. INT 14 - COURIERS.COM - DECONFIGURE PORT
  2912.     AH = 8Dh
  2913. SeeAlso: AH=82h"COURIERS"
  2914. --------S-148D-------------------------------
  2915. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  2916.     AH = 8Dh
  2917.     AL = register offset
  2918.     BL = new value for UART register
  2919.     DX = port number
  2920. Return: AH bit 7 set on error
  2921.     AH bit 7 clear if successful
  2922. SeeAlso: AH=8Ch"COMM-DRV"
  2923. --------S-148E-------------------------------
  2924. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  2925.     AH = 8Eh
  2926.     CX = length of packet in bytes
  2927.     DX = port number
  2928.     ES:DI -> buffer for packet
  2929. Return: AH = line status (see #0171)
  2930.         bit 7 set on error (see AX=8000h"COMM-DRV")
  2931.     AL destroyed
  2932. Program: COMM-DRV is a universal serial communications driver by Willies'
  2933.       Computer Software Company, which supports standard INT 14 and
  2934.       FOSSIL calls as well as its own interfaces
  2935. Desc:    retrieve a packet from the input buffer without removing it from the
  2936.       buffer
  2937. Note:    this call requires that at least the requested number of bytes are
  2938.       already present in the input buffer, and will fail if there are
  2939.       fewer bytes available
  2940. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  2941. --------S-14A0-------------------------------
  2942. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  2943.     AH = A0h
  2944.     ES:BX -> ASCIZ internet host name
  2945.     CX = length of name
  2946. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0258)
  2947.     CL = session ID
  2948. Program: the Bridge Application Program Interface is a set of functions which
  2949.       makes many of the details of LAN communications transparent
  2950. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  2951. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  2952.  
  2953. (Table 0258)
  2954. Values for 3com BAPI return code:
  2955.  00h    successful
  2956.  01h    no characters written
  2957.  02h    no characters read
  2958.  03h    no such session
  2959.  04h    clearinghouse name not found
  2960.  05h    no response from host
  2961.  06h    no more sessions available
  2962.  07h    session aborted
  2963.  08h    invalid clearinghouse name
  2964.  09h    not supported
  2965.  0Ah    internal (general) network error
  2966.  0Bh    out of memory
  2967.  0Ch    invalid IP address
  2968. --------S-14A0--CXFFFF-----------------------
  2969. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  2970.     AH = A0h
  2971.     CX = FFFFh
  2972. Return: CF clear if successful
  2973.         AX = 5445h ('TE')
  2974.         CX <> FFFFh
  2975.         DX = port number
  2976.     CF set on error
  2977. Program: TES is a network serial port emulation program
  2978. SeeAlso: AH=A1h"TES"
  2979. --------S-14A1-------------------------------
  2980. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  2981.     AH = A1h
  2982.     DH = session ID (00h for external session managment)
  2983. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0258)
  2984.     AL destroyed (Novell TELAPI.EXE)
  2985. SeeAlso: AH=A0h"BAPI"
  2986. --------S-14A1-------------------------------
  2987. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  2988.     AH = A1h
  2989. Return: CX = number of active sessions
  2990.     ES:SI -> status array (see #0259)
  2991. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  2992.  
  2993. Format of Interconnections TES status array entry:
  2994. Offset    Size    Description    (Table 0259)
  2995.  00h    BYTE    status
  2996.  01h    WORD    offset of name
  2997. --------S-14A2-------------------------------
  2998. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  2999.     AH = A2h
  3000.     AL = character
  3001.     DH = session ID (00h for external session managment)
  3002. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0258)
  3003. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  3004. --------S-14A2-------------------------------
  3005. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  3006.     AH = A2h
  3007. Return: CX = number of servers
  3008.     ES:SI -> array of offsets from ES for server names
  3009. SeeAlso: AH=A1h"TES"
  3010. --------S-14A3-------------------------------
  3011. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  3012.     AH = A3h
  3013.     DH = session ID (00h for external session managment)
  3014. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0258)
  3015.     AL = character read or 00h if none available
  3016. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  3017. --------S-14A3-------------------------------
  3018. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  3019.     AH = A3h
  3020.     ES:SI -> ???
  3021. Return: CF clear if successful
  3022.         AX = 5445h ('TE')
  3023.         CX <> FFFFh
  3024.         DX = port number
  3025.     CF set on error
  3026. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  3027. --------S-14A4-------------------------------
  3028. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  3029.     AH = A4h
  3030.     CX = length of buffer in bytes
  3031.     DH = session ID (00h for external session managment)
  3032.     ES:BX -> buffer containing data
  3033. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0258)
  3034.     CX = number of bytes actually sent
  3035. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  3036. --------S-14A4-------------------------------
  3037. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  3038.     AH = A4h
  3039.     ???
  3040. Return: ???
  3041. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  3042. --------S-14A5-------------------------------
  3043. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  3044.     AH = A5h
  3045.     CX = length of buffer
  3046.     DH = session ID (00h for external session managment)
  3047.     ES:BX -> buffer for data
  3048. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0258)
  3049.     CX = number of bytes actually read
  3050. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  3051. SeeAlso: AH=A7h"BAPI",AX=FF02h
  3052. --------S-14A5-------------------------------
  3053. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  3054.     AH = A5h
  3055.     AL = session number
  3056. Return: ???
  3057. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  3058. --------S-14A6-------------------------------
  3059. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  3060.     AH = A6h
  3061.     DH = session ID (00h for external session managment)
  3062. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0258)
  3063. Desc:    generate a short break signal; if data delivery was turned off by the
  3064.       break, wait for the host to turn it on again
  3065. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  3066. --------S-14A6-------------------------------
  3067. INT 14 - Interconnections Inc. TES - DROP A SESSION
  3068.     AH = A6h
  3069.     AL = session number
  3070. Return: AH = status
  3071.         00h successful
  3072.         else error
  3073. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  3074. --------S-14A7-------------------------------
  3075. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  3076.     AH = A7h
  3077.     DH = session ID (00h for external session managment)
  3078. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0258)
  3079.     CX = number of bytes available for reading
  3080. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  3081. SeeAlso: AH=A5h"BAPI"
  3082. --------S-14A7-------------------------------
  3083. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  3084.     AH = A7h
  3085.     ???
  3086. Return: ???
  3087. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  3088. --------S-14A8-------------------------------
  3089. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  3090.     AH = A8h
  3091.     AL = 00h no visible response
  3092.     ES:SI -> ASCIZ command
  3093. Return: ???
  3094. --------N-14A8-------------------------------
  3095. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  3096.     AH = A8h
  3097.     DH = session ID???
  3098.     CH = subfunction
  3099.         02h ???
  3100.         0Dh ???
  3101.         0Fh ???
  3102.         10h ???
  3103.         11h ???
  3104.         28h ???
  3105.         else
  3106.         Return: AH = 09h (not supported)
  3107. Return: AH = return code (see #0258)
  3108.         00h successful
  3109.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  3110.         CL = ??? (7Fh/FFh) (subfunction 28h)
  3111.         CX = ??? (subfunction 11h)
  3112. SeeAlso: AH=A9h"TelAPI"
  3113. --------N-14A9-------------------------------
  3114. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  3115.     AH = A9h
  3116.     DH = session ID???
  3117.     CH = subfunction
  3118.         02h ???
  3119.         0Dh ???
  3120.         0Fh ???
  3121.         10h ???
  3122.         11h ???
  3123.         28h ???
  3124.         else
  3125.         Return: AH = 09h (not supported)
  3126.     ???
  3127. Return: AH = return code (see #0258)
  3128.     ???
  3129. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  3130. --------V-14AA01-----------------------------
  3131. INT 14 - DimVGA v2.0 - INSTALLATION CHECK
  3132.     AX = AA01h
  3133. Return: AX = FFFFh if installed, unchanged
  3134.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  3135. Program: DimVGA is a public domain screen saver by Menno Pieters
  3136. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0255h/BX=6900h,INT 12"KEYBUI"
  3137. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  3138. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  3139. SeeAlso: INT 2F/AX=E300h
  3140. Index:    screen saver;DimVGA
  3141. --------V-14AA02-----------------------------
  3142. INT 14 - DimVGA v2.0 - SET TIME-OUT (BLANKING) PERIOD
  3143.     AX = AA02h
  3144.     BX = number of clock ticks
  3145. Return: AX = FFFFh
  3146. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  3147. Index:    screen saver;DimVGA
  3148. --------V-14AA03-----------------------------
  3149. INT 14 - DimVGA v2.0 - SET DIMMING FACTOR
  3150.     AX = AA03h
  3151.     BX = percentage remaining visible (0-100)
  3152. Return: AX = FFFFh
  3153. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  3154. Index:    screen saver;DimVGA
  3155. --------V-14AA04-----------------------------
  3156. INT 14 - DimVGA v2.0 - GET TIME-OUT PERIOD
  3157.     AX = AA04h
  3158. Return: AX = FFFFh
  3159.     BX = current time-out in clock ticks
  3160. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  3161. Index:    screen saver;DimVGA
  3162. --------V-14AA05-----------------------------
  3163. INT 14 - DimVGA v2.0 - GET DIMMING FACTOR
  3164.     AX = AA05h
  3165. Return: AX = FFFFh
  3166.     BX = current dimming factor
  3167. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  3168. Index:    screen saver;DimVGA
  3169. --------V-14AA06-----------------------------
  3170. INT 14 - DimVGA v2.0 - DISABLE
  3171.     AX = AA06h
  3172. Return: AX = FFFFh
  3173. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  3174. Index:    screen saver;DimVGA
  3175. --------V-14AA07-----------------------------
  3176. INT 14 - DimVGA v2.0 - ENABLE
  3177.     AX = AA07h
  3178. Return: AX = FFFFh
  3179. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  3180. Index:    screen saver;DimVGA
  3181. --------V-14AA08-----------------------------
  3182. INT 14 - DimVGA v2.0 - DIM SCREEN 'MANUALLY'
  3183.     AX = AA08h
  3184. Return: AX = FFFFh
  3185. Note:    this function will dim the screen immediately, even if DimVGA is
  3186.       currently disabled
  3187. SeeAlso: AX=AA01h,AX=AA09h
  3188. Index:    screen saver;DimVGA
  3189. --------V-14AA09-----------------------------
  3190. INT 14 - DimVGA v2.0 - UNDIM SCREEN 'MANUALLY'
  3191.     AX = AA09h
  3192. Return: AX = FFFFh
  3193. Note:    this function will undim the screen immediately, even if DimVGA is
  3194.       currently disabled
  3195. SeeAlso: AX=AA01h,AX=AA08h
  3196. Index:    screen saver;DimVGA
  3197. --------V-14AA0A-----------------------------
  3198. INT 14 - DimVGA v2.0 - CHECK WHETHER ENABLED
  3199.     AX = AA0Ah
  3200. Return: AX = FFFFh
  3201.     BX = current state (0000h disabled, 0001h enabled)
  3202. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  3203. Index:    screen saver;DimVGA
  3204. --------S-14AF00BXAAAA-----------------------
  3205. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  3206.     AX = AF00h
  3207.     BX = AAAAh
  3208. Return: AX = AF01h if installed
  3209.         BH = protocol type (if BX=AAAAh on entry)
  3210.         01h NetManage TCP/IP
  3211.         BL = version for protocol type (if BX=AAAAh on entry)
  3212. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  3213.       behavior is used to determine whether the newer functions (AH=B0h,
  3214.       AH=B1h,etc) are available
  3215. SeeAlso: AH=A0h"BAPI"
  3216. --------S-14B0-------------------------------
  3217. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  3218.     AH = B0h
  3219.     AL = new state (00h disabled, 01h enabled)
  3220. Return: AH = return code (00h,07h,0Ah) (see #0258)
  3221. Note:    disabling the ECM character allows applications to send data which
  3222.       includes the ECM character
  3223. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  3224. --------S-14B1-------------------------------
  3225. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  3226.     AH = B1h
  3227. Return: AH = return code (00h,07h,0Ah) (see #0258)
  3228. Desc:    provide a means for the application or terminal emulator to perform
  3229.       the same action normally caused by the ECM character
  3230. SeeAlso: AH=B0h,AH=B2h
  3231. --------S-14B2-------------------------------
  3232. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  3233.     AH = B2h
  3234. Return: AH = return code (00h,07h,0Ah) (see #0258)
  3235.     AL = watch flag (00h disabled, 01h enabled)
  3236. Desc:    determine whether the ECM character is enabled
  3237. SeeAlso: AH=B0h,AH=B1h
  3238. --------S-14B3-------------------------------
  3239. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  3240.     AH = B3h
  3241.     AL = direction (00h get, 01h set)
  3242.     DH = session ID (00h for external session managment)
  3243.     DL = configuration item (00h = end-of-line mapping)
  3244.     CX = new configuration item value (if AL=01h)
  3245.         ---if DL=00h---
  3246.         CH = application EOL type (app to Telnet client)
  3247.         01h application will send lone CR
  3248.         02h application will send CR-? pair
  3249.         CL = driver EOL type (Telnet client to Telnet server)
  3250.         01h driver should send CR-NUL pair
  3251.         02h driver should send CR-LF pair
  3252. Return: AH = return code (00h,03h,09h-0Bh) (see #0258)
  3253.     ---if AL=00h---
  3254.     CX = configuration item value (see above)
  3255. SeeAlso: AH=B2h
  3256. --------N-14E0-------------------------------
  3257. INT 14 - TelAPI - ???
  3258.     AH = E0h
  3259.     BX = ???
  3260.     CX:DX = ???
  3261.     DS:DI -> ???
  3262.     ES:SI -> ???
  3263. Return: AX = status (0000h,FF37h,etc.)
  3264.     ES:SI -> ??? if ???
  3265.     ???
  3266. SeeAlso: AH=ECh,AX=FF00h
  3267. --------S-14E000-----------------------------
  3268. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  3269.     AX = E000h
  3270.     DX = port number (0-3)
  3271. Return: ES:BX -> status block (see #0260)
  3272. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  3273.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  3274.       the .DRV extension)
  3275. SeeAlso: AX=E006h
  3276.  
  3277. Format of MX5 Extended FOSSIL status block:
  3278. Offset    Size    Description    (Table 0260)
  3279.  00h    BYTE    flag: active (00h no, 01h yes)
  3280.  01h    BYTE    MNP level (2,4,5)
  3281.  02h    BYTE    series ID from remote MNP
  3282.  03h    DWORD    total packets transmitted
  3283.  07h    DWORD    duplicate packets transmitted
  3284.  0Bh    DWORD    maximum speed
  3285.  0Fh    DWORD    total packets received
  3286.  13h    DWORD    duplicate packets received
  3287.  17h    DWORD    maximum speed
  3288. --------S-14E001-----------------------------
  3289. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  3290.     AX = E001h
  3291.     BH = function
  3292.         00h get MNP level
  3293.         01h set MNP level
  3294.         BL = new level (00h none, 02h/04h/05h MNP level N)
  3295.     DX = port number (0-3)
  3296. Return: BL = MNP level
  3297. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  3298. --------S-14E002-----------------------------
  3299. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  3300.     AX = E002h
  3301.     BH = function
  3302.         00h get answer/originate mode
  3303.         01h set mode
  3304.         BL = new mode (00h originate [default], 01h answer)
  3305.     DX = port number (0-3)
  3306. Return: BL = answer/originate mode
  3307. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  3308. --------S-14E003-----------------------------
  3309. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  3310.     AX = E003h
  3311.     BH = function
  3312.         00h get wait ticks
  3313.         01h set wait ticks
  3314.         BL = MNP wait ticks (default 0Eh)
  3315.     DX = port number (0-3)
  3316. Return: BL = wait ticks
  3317. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  3318. --------S-14E004-----------------------------
  3319. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  3320.     AX = E004h
  3321.     BH = function
  3322.         00h get sound level
  3323.         01h set sound level
  3324.         BL = new sound level (00h off, 01h on [default])
  3325.     DX = port number
  3326. Return: BL = sound state
  3327. Desc:    specify whether MX5 should generate beeps after an MNP connection
  3328.       (three high beeps if successful, high then low on connection failure)
  3329. SeeAlso: AX=E002h,AX=E006h
  3330. --------S-14E005-----------------------------
  3331. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  3332.     AX = E005h
  3333. Return: BX = segment of MX5's memory block or 0000h on failure
  3334. Note:    caller must free the returned memory block to complete the uninstall
  3335. SeeAlso: AX=E006h
  3336. --------S-14E006BX0000-----------------------
  3337. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  3338.     AX = E006h
  3339.     BX = 0000h
  3340. Return: BX = 4D58h ('MX') if installed
  3341.         AH = major version
  3342.         AL = minor version
  3343. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  3344. --------S-14E007-----------------------------
  3345. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  3346.     AX = E007h
  3347.     CX = number of ticks to wait
  3348. Return: nothing
  3349. SeeAlso: AX=E006h
  3350. --------N-14E1-------------------------------
  3351. INT 14 - TelAPI - ???
  3352.     AH = E1h
  3353.     BX = connection ID
  3354.     ???
  3355. Return: AX = status (0000h,FFF7h,maybe others)
  3356.     ???
  3357. SeeAlso: AH=E6h,AX=FF00h
  3358. --------N-14E2-------------------------------
  3359. INT 14 - TelAPI - BUFFERED READ
  3360.     AH = E2h
  3361.     BX = connection ID
  3362.     CX = length of buffer in bytes
  3363.     ES:SI -> buffer for data
  3364. Return: AX = number of characters actually read??? (negative on error)
  3365. SeeAlso: AH=E6h,AX=FF00h,INT 6B/AH=01h
  3366. --------N-14E3-------------------------------
  3367. INT 14 - TelAPI - BUFFERED WRITE
  3368.     AH = E3h
  3369.     BX = connection ID
  3370.     CX = length of buffer in bytes
  3371.     ES:SI -> buffer containing data
  3372. Return: AX = number of characters actually written??? (negative on error)
  3373. SeeAlso: AH=07h"TelAPI",AH=E6h,AX=FF00h,INT 6B/AH=00h
  3374. --------N-14E4-------------------------------
  3375. INT 14 - TelAPI - CONNECTION CONTROL???
  3376.     AH = E4h
  3377.     BX = connection ID
  3378.     CX = ???
  3379.     ES:SI -> 10-byte buffer containing ???
  3380. Return: ???
  3381. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  3382. --------N-14E5-------------------------------
  3383. INT 14 - TelAPI - ???
  3384.     AH = E5h
  3385. Return: AX = status???
  3386. SeeAlso: AH=E6h,AX=FF00h
  3387. --------N-14E6-------------------------------
  3388. INT 14 - TelAPI - ???
  3389.     AH = E6h
  3390. Return: AX = status???
  3391. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  3392.     this function invokes AH=E5h internally
  3393. SeeAlso: AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  3394. --------N-14E7-------------------------------
  3395. INT 14 - TelAPI - GET ???
  3396.     AH = E7h
  3397.     ES:SI -> 20-byte buffer for ???
  3398. Return: AX = 0000h (successful)
  3399.     ES:SI buffer filled
  3400. SeeAlso: AX=FF00h
  3401. --------N-14E8-------------------------------
  3402. INT 14 - TelAPI - SET ???
  3403.     AH = E8h
  3404.     BX = connection ID
  3405.     CL = new value for ???
  3406.     DX = ??? (ignored by Novell TELAPI v4.01)
  3407. Return: AX = status (0000h,FFFFh)
  3408. SeeAlso: AX=FF00h
  3409. --------N-14E9-------------------------------
  3410. INT 14 - TelAPI - ???
  3411.     AH = E9h
  3412.     DX = ???
  3413. Return: ???
  3414. SeeAlso: AX=FF00h
  3415. --------N-14EA-------------------------------
  3416. INT 14 - TelAPI - GET CONNECTION INFO???
  3417.     AH = EAh
  3418.     BX = connection ID
  3419.     ES:SI -> buffer for info???
  3420. Return: AX = status (0000h,FFFFh,etc.)
  3421. SeeAlso: AX=FF00h
  3422. --------N-14EB-------------------------------
  3423. INT 14 - TelAPI - GET ???
  3424.     AH = EBh
  3425.     ES:SI -> buffer for ???
  3426. Return: ES:SI buffer filled
  3427. SeeAlso: AX=FF00h
  3428. --------N-14EC-------------------------------
  3429. INT 14 - TelAPI - ???
  3430.     AH = ECh
  3431.     BX = ???
  3432.     CX:DX = ???
  3433.     DS:DI -> ???
  3434.     ES:SI -> ???
  3435. Return: AX = status (0000h,FF37h,etc.)
  3436.     ES:SI -> ??? if ???
  3437.     ???
  3438. Note:    this function is not supported by the Microdyne TelAPI v3.7
  3439. SeeAlso: AH=E0h"TelAPI",AX=FF00h
  3440. --------N-14ED-------------------------------
  3441. INT 14 - TelAPI - ???
  3442.     AH = EDh
  3443.     BX = connection ID
  3444. Return: AX = status (0000h,FFFFh,etc.)
  3445. Note:    this function is not supported by the Microdyne TelAPI v3.7
  3446. SeeAlso: AX=FF00h
  3447. --------a-14F0F0-----------------------------
  3448. INT 14 - ASAP v1.0 - ???
  3449.     AX = F0F0h
  3450.     DX = ???
  3451.     ???
  3452. Return: ???
  3453. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  3454.       MicroTalk
  3455. SeeAlso: AX=F0F1h
  3456. --------a-14F0F1DX0000-----------------------
  3457. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  3458.     AX = F0F1h
  3459.     DX = 0000h
  3460. Return: DX = segment of resident code
  3461.         0000h if not installed
  3462. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  3463.       MicroTalk
  3464. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  3465. --------S-14F4FF-----------------------------
  3466. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  3467.     AX = F4FFh
  3468.     DX = port (00h-03h)
  3469. Return: CF clear if present
  3470.         AX = 0000h
  3471.     CF set if not present
  3472.         AX <> 0000h
  3473. --------S-14F9-------------------------------
  3474. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  3475.     AH = F9h
  3476.     DX = port (00h-03h)
  3477. --------S-14FA-------------------------------
  3478. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  3479.     AH = FAh
  3480.     DX = port (00h-03h)
  3481. SeeAlso: AH=1Ah,AH=8Ah
  3482. --------S-14FB-------------------------------
  3483. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  3484.     AH = FBh
  3485.     AL = modem control register (see #0201 at AH=05h)
  3486.     DX = port (00h-03h)
  3487. SeeAlso: AH=05h"SERIAL"
  3488. --------S-14FC-------------------------------
  3489. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  3490.     AH = FCh
  3491.     DX = port (00h-03h)
  3492. Return: AH = RS232 status bits (see #0171 at AH=03h)
  3493.     AL = character
  3494. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  3495. --------S-14FD02-----------------------------
  3496. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  3497.     AX = FD02h
  3498. Return: CX = number of characters available
  3499. --------N-14FF00-----------------------------
  3500. INT 14 - TelAPI - INSTALLATION CHECK
  3501.     AX = FF00h
  3502. Return: AL = FFh if installed
  3503.     AH = 00h for Novell TELAPI.EXE
  3504. SeeAlso: AH=E6h
  3505. --------S-14FF01-----------------------------
  3506. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  3507.     AX = FF01h
  3508.     CX = length of buffer (0000h to cancel buffer assignment)
  3509.     DX = port (00h-03h)
  3510.     ES:BX -> send buffer
  3511. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  3512. --------S-14FF02-----------------------------
  3513. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  3514.     AX = FF02h
  3515.     CX = length of buffer (0000h to cancel buffer assignment)
  3516.     DX = port (00h-03h)
  3517.     ES:BX -> receive buffer
  3518. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF03h
  3519. --------S-14FFF8-----------------------------
  3520. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  3521.     AX = FFF8h
  3522.     BX = card type (sub-device number)
  3523.     CX = new baudrate divisor
  3524.     DX = index to baud rate
  3525. Return: AH bit 7 set on error
  3526.     AH bit 7 clear if successful
  3527. Program: COMM-DRV is a universal serial communications driver by Willies'
  3528.       Computer Software Company, which supports standard INT 14 and
  3529.       FOSSIL calls as well as its own interfaces
  3530. SeeAlso: AX=8000h"COMM-DRV"
  3531. --------S-14FFFB-----------------------------
  3532. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  3533.     AX = FFFBh
  3534.     DX = port number
  3535. Return: AH bit 7 set on error
  3536.     AH bit 7 clear if successful
  3537.         BX = highest port number
  3538. --------S-14FFFC-----------------------------
  3539. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  3540.     AX = FFFCh
  3541.     DX = port number
  3542. Return: AH bit 7 set on error
  3543.     AH bit 7 clear if successful
  3544.         BX = flags (see #0261)
  3545. SeeAlso: AX=FFFDh
  3546.  
  3547. Bitfields for INT 14h flags:
  3548. Bit(s)    Description    (Table 0261)
  3549.  0    port active for INT 14h
  3550.  1    interface behaving like a FOSSIL driver
  3551. --------S-14FFFD-----------------------------
  3552. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  3553.     AX = FFFDh
  3554.     BX = flags (see #0261)
  3555.     DX = port number
  3556. Return: AH bit 7 set on error
  3557.     AH bit 7 clear if successful
  3558. SeeAlso: AX=FFFCh
  3559. --------S-14FFFE-----------------------------
  3560. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  3561.     AX = FFFEh
  3562. Return: AH bit 7 set on error
  3563.     AH bit 7 clear if successful
  3564. --------S-14FFFF-----------------------------
  3565. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  3566.     AX = FFFFh
  3567.     BX:SI -> DWORD buffer for address of information area (see #0262)
  3568.           (initialized to zeros)
  3569. Return: BX:SI buffer filled with nonzero value if installed
  3570. Program: COMM-DRV is a universal serial communications driver by Willies'
  3571.       Computer Software Company, which supports standard INT 14 and
  3572.       FOSSIL calls as well as its own interfaces
  3573. Index:    installation check;COMM-DRV
  3574.  
  3575. Format of COMM-DRV information area:
  3576. Offset    Size    Description    (Table 0262)
  3577.  00h  8 BYTEs    signature "COMM-DRV"
  3578.  08h  2 BYTEs    00h,00h
  3579.  0Ah    DWORD    -> direct address mapping table
  3580.  0Eh    DWORD    previous INT 14 vector
  3581. --------t-15---------------------------------
  3582. INT 15 - Microsoft TSR Specification
  3583.     No additional information available at this time.
  3584. --------B-1500-------------------------------
  3585. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  3586.     AH = 00h
  3587. Return: CF set on error
  3588.         AH = 86h no cassette present
  3589.     CF clear if successful
  3590. SeeAlso: AH=01h"CASSETTE"
  3591. --------M-1500-------------------------------
  3592. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  3593.     AH = 00h
  3594. Return: CX = signed X count
  3595.     DX = signed Y count
  3596. --------O-1500-------------------------------
  3597. INT 15 - VMiX v2+ - INSTALLATION CHECK
  3598.     AH = 00h
  3599. Return: DX = 0798h if installed
  3600.         AX = version (AH = major, AL = minor)
  3601. --------T-1500-------------------------------
  3602. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  3603.     AH = 00h
  3604. Note:    if issued by the highest-priority task while MultiDOS is using
  3605.       priority-based rather than round-robin scheduling, control will be
  3606.       returned to the caller immediately
  3607. SeeAlso: AH=03h"MultiDOS",AX=1000h
  3608. --------B-1501-------------------------------
  3609. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  3610.     AH = 01h
  3611. Return: CF set on error
  3612.         AH = 86h no cassette present
  3613.     CF clear if successful
  3614. SeeAlso: AH=00h"CASSETTE"
  3615. --------b-1501-------------------------------
  3616. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  3617.     AH = 01h
  3618.     AL = NVRAM location (00h to 3Fh) (see #0263)
  3619.     BL = NVRAM data value
  3620. Return: AH = return code
  3621.         00h OK
  3622.         01h address bad
  3623.         02h write error
  3624. SeeAlso: AH=02h"Amstrad"
  3625.  
  3626. Format of Amstrad NVRAM:
  3627. Offset    Size    Description    (Table 0263)
  3628.  00h    BYTE    time of day: seconds
  3629.  01h    BYTE    alarm time: seconds
  3630.  02h    BYTE    time of day: minutes
  3631.  03h    BYTE    alarm time: minutes
  3632.  04h    BYTE    time of day: hours
  3633.  05h    BYTE    alarm time: hours
  3634.  06h    BYTE    day of week, 1 = Sunday
  3635.  07h    BYTE    day of month
  3636.  08h    BYTE    month
  3637.  09h    BYTE    year mod 100
  3638.  0Ah    BYTE    RTC status register A (see #0264)
  3639.  0Bh    BYTE    RTC status register B (see #0265)
  3640.  0Ch    BYTE    RTC status register C (read-only) (see #0266)
  3641.  0Dh    BYTE    RTC status register D
  3642.         bit 7: battery good
  3643.  0Eh  6 BYTEs    time and date machine last used
  3644.  14h    BYTE    user RAM checksum
  3645.  15h    WORD    Enter key scancode/ASCII code
  3646.  17h    WORD    Forward delete key scancode/ASCII code
  3647.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  3648.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  3649.  1Dh    WORD    mouse button 1 scancode/ASCII code
  3650.  1Fh    WORD    mouse button 2 scancode/ASCII code
  3651.  21h    BYTE    mouse X scaling factor
  3652.  22h    BYTE    mouse Y scaling factor
  3653.  23h    BYTE    initial VDU mode and drive count
  3654.  24h    BYTE    initial VDU character attribute
  3655.  25h    BYTE    size of RAM disk in 2K blocks
  3656.  26h    BYTE    initial system UART setup byte
  3657.  27h    BYTE    initial external UART setup byte
  3658.  28h 24 BYTEs    available for user application
  3659. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  3660.       the clock chip
  3661.  
  3662. Bitfields for RTC status register A:
  3663. Bit(s)    Description    (Table 0264)
  3664.  7    set if date/time being updated
  3665.  6-4    time base speed, default 010 = 32768 Hz
  3666.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  3667.  
  3668. Bitfields for RTC status register B:
  3669. Bit(s)    Description    (Table 0265)
  3670.  7    clear if normal update, set if abort update
  3671.  6    periodic interrupt enable
  3672.  5    alarm interrupt enable
  3673.  4    update end interrupt enable
  3674.  3    square wave enable
  3675.  2    date mode (clear = BCD, set = binary)
  3676.  1    24-hour format
  3677.  0    daylight saving time enable
  3678.  
  3679. Bitfields for RTC status register C:
  3680. Bit(s)    Description    (Table 0266)
  3681.  7    IRQF flag
  3682.  6    PF flag
  3683.  5    AF flag
  3684.  4    UF flag
  3685. --------O-1501-------------------------------
  3686. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  3687.     AH = 01h
  3688.     STACK:    WORD    object ID of requestor
  3689.         DWORD    pointer to ASCIZ name of requested method
  3690.             "assign" assign channel to object
  3691.             "deassign" deassign channel
  3692.             "cursor" set cursor on/off
  3693.             "init" initialize comm port
  3694.             "open" open I/O channel
  3695.             "position" set cursor position
  3696.             "receive" get buffered packet from comm port
  3697.             "send" send buffered packet to comm port
  3698.             "vio" set current virtual I/O to specified channel
  3699.             "window" make window at cursor position
  3700.         ---if "assign"---
  3701.          WORD    object UID
  3702.          WORD    caller UID/PID
  3703.          DWORD    CSL with port
  3704.         ---if "deassign"---
  3705.          WORD    channel ID
  3706.         ---if "cursor"---
  3707.          WORD    channel ID (must be a SRCSINK)
  3708.          WORD    new state (0000h off, 0001h on)
  3709.         ---if "init"---
  3710.          WORD    channel ID (must be a SRCSINK)
  3711.          WORD    comm port number (00h-03h)
  3712.          WORD    UART init code
  3713.         ---if "open"---
  3714.          WORD    channel ID
  3715.         ---if "position"---
  3716.          WORD    channel ID (must be a SRCSINK)
  3717.          WORD    position (high byte = row, low byte = column)
  3718.         ---if "receive"---
  3719.          DWORD    pointer to buffer
  3720.         ---if "send"---
  3721.          WORD    length of buffer
  3722.          DWORD    pointer to buffer
  3723.         ---if "vio"---
  3724.          WORD    channel ID (must be a SRCSINK)
  3725.         ---if "window"---
  3726.          WORD    top left (high byte = row, low byte = column)
  3727.          WORD    bottom right (high byte = row, low byte = column)
  3728. Return: DX:AX -> IRP structure or 0000h:0000h
  3729. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  3730. --------T-1501-------------------------------
  3731. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  3732.     AH = 01h
  3733.     AL = semaphore number (00h-3Fh)
  3734. Return: AH = status
  3735.         00h successful
  3736.         02h invalid semaphore number
  3737. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  3738.       task and the call returns immediately
  3739.     if the semaphore is already owned by another task, the calling task
  3740.       is placed on a queue for the semaphore and suspended until it can
  3741.       become owner of the semaphore
  3742.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  3743. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  3744. --------B-1502-------------------------------
  3745. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  3746.     AH = 02h
  3747.     CX = number of bytes to read
  3748.     ES:BX -> buffer
  3749. Return: CF clear if successful
  3750.         DX = number of bytes read
  3751.         ES:BX -> byte following last byte read
  3752.     CF set on error
  3753.     AH = status (see #0267)
  3754. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  3755.  
  3756. (Table 0267)
  3757. Values for Cassette status:
  3758.  00h    successful
  3759.  01h    CRC error
  3760.  02h    bad tape signals
  3761.  04h    no data
  3762.  80h    invalid command
  3763.  86h    no cassette present
  3764. --------b-1502-------------------------------
  3765. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  3766.     AH = 02h
  3767.     AL = NVRAM location (00h to 3Fh)
  3768. Return: AH = return code
  3769.         00h OK
  3770.         01h address bad
  3771.         02h checksum error
  3772.     AL = NVRAM data value
  3773. SeeAlso: AH=01h"Amstrad"
  3774. --------O-1502-------------------------------
  3775. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  3776.     AH = 02h
  3777.     STACK:    WORD    object ID of requestor
  3778.         DWORD    pointer to ASCIZ name of requested method
  3779.             "assign" allocate low memory block
  3780.             "assign extended" allocate extended memory pages
  3781.             "assign gdt" allocate GDT selector
  3782.             "paged" allocate low paged memory
  3783.             "paged extended" alllocate extended memory pages
  3784.             "deassign" free memory block
  3785.             "deassign gdt" free GDT selector
  3786.             "getvpage" get physical address for virtual page
  3787.             "setvpage" set physical address for virtual page
  3788.             "info" get VMiX memory usage info block
  3789.             "move" move contents of 32-bit memory
  3790.             "newmcb" make new DOS memory control block
  3791.             "owner" get process ID of MCB or PSP owner
  3792.             "umb" allocate upper memory block
  3793.             "video" toggle system use of vidoe memory and get stat
  3794.         ---if "assign"---
  3795.          WORD    number of objects
  3796.          WORD    size in bytes (multiple of 512 bytes)
  3797.         ---if "assign extended"---
  3798.          WORD    number of objects
  3799.          WORD    size in bytes (multiple of 4K)
  3800.         ---if "assign gdt"---
  3801.          WORD    access type (low byte)
  3802.          WORD    segment size in paragraphs
  3803.          DWORD    pointer to start of physical segment
  3804.         ---if "paged"---
  3805.          WORD    number of 512-byte pages
  3806.         ---if "paged extended"
  3807.          WORD    number of 4K pages
  3808.         ---if "deassign"---
  3809.          DWORD    pointer returned by previous allocation call
  3810.         ---if "deassign gdt"---
  3811.          WORD    GDT selector
  3812.         ---if "getvpage"---
  3813.          WORD    owner's process ID
  3814.          DWORD    pointer to buffer for page structure (struct VPGE)
  3815.         ---if "setvpage"---
  3816.          WORD    owner's process ID
  3817.          DWORD    pointer to new page structure (struct VPGE)
  3818.         ---if "info"---
  3819.          no additional arguments
  3820.         ---if "move"
  3821.          DWORD    32-bit source address
  3822.          DWORD    32-bit destination address
  3823.          WORD    number of words to move
  3824.         ---if "newmcb"---
  3825.          DWORD    pointer to new MCB's location
  3826.          WORD    size of memory block
  3827.          DWORD    pointer to ASCIZ name string (max 8 chars)
  3828.         ---if "owner"---
  3829.          WORD    MCB or PSP segment
  3830.         ---if "umb"---
  3831.          WORD    size in paragraphs
  3832.         ---if "video"---
  3833.          no additional arguments
  3834. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  3835. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  3836. --------T-1502-------------------------------
  3837. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  3838.     AH = 02h
  3839.     AL = semaphore number (00h-3Fh)
  3840. Return: AH = status
  3841.         00h successful
  3842.         01h not semaphore owner
  3843.         02h invalid semaphore number
  3844. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  3845.       queue will become the new owner and be reawakened
  3846.     do not use within an interrupt handler
  3847. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  3848. --------B-1503-------------------------------
  3849. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  3850.     AH = 03h
  3851.     CX = number of bytes to write
  3852.     ES:BX -> data buffer
  3853. Return: CF clear if successful
  3854.         ES:BX -> byte following last byte written
  3855.     CF set on error
  3856.     AH = status (see #0267)
  3857.     CX = 0000h
  3858. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  3859. --------V-1503-------------------------------
  3860. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  3861.     AH = 03h
  3862.     AL = value (I,R,G,B bits)
  3863. SeeAlso: AH=04h"Amstrad"
  3864. --------O-1503-------------------------------
  3865. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  3866.     AH = 03h
  3867.     STACK:    DWORD    pointer to ASCII prompt
  3868.         WORD    field outline character
  3869.         WORD    length of input field (max 7Fh)
  3870.         DWORD    address of pointer to input buffer
  3871. Return: AX = length of input (input buffer is padded with blanks)
  3872. SeeAlso: AH=04h"VMiX"
  3873. --------T-1503-------------------------------
  3874. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  3875.     AH = 03h
  3876.     DX = number of time slices to remain suspended
  3877. Return: after specified interval has elapsed
  3878. Note:    when priority-based scheduling is in use, high-priority tasks should
  3879.       use this function to yield the processor
  3880. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  3881. --------B-1504-------------------------------
  3882. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  3883.     AH = 04h
  3884.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0268)
  3885.     DS = segment containing ABIOS RAM extensions (zero if none)
  3886. Return: CF clear if successful
  3887.         AH = 00h success
  3888.         ES:DI buffer filled
  3889.         AL destroyed
  3890.     CF set on failure
  3891.         AX destroyed
  3892.         AH = 80h/86h if not supported
  3893. SeeAlso: AH=05h"ABIOS",AH=C1h
  3894.  
  3895. Format of ABIOS System Parameter Table:
  3896. Offset    Size    Description    (Table 0268)
  3897.  00h    DWORD    FAR address of ABIOS Common Start Routine
  3898.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  3899.  08h    DWORD    FAR address of ABIOS Time-out Routine
  3900.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  3901.  0Eh 16 BYTEs    reserved
  3902.  1Eh    WORD    number of entries in initialization table
  3903. --------V-1504-------------------------------
  3904. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  3905.     AH = 04h
  3906.     AL = value (RDSEL1 and RDSEL0)
  3907. SeeAlso: AH=03h"Amstrad",05h"Amstrad"
  3908. --------O-1504-------------------------------
  3909. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  3910.     AH = 04h
  3911.     STACK:    DWORD    control string
  3912.         DWORD    array of arguments
  3913. SeeAlso: AH=03h"VMiX"
  3914. --------T-1504-------------------------------
  3915. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  3916.     AH = 04h
  3917.     AL = mailbox number (00h-3Fh)
  3918.     CX = message length in bytes
  3919.     DS:SI -> message
  3920. Return: AH = status
  3921.         00h successful
  3922.         01h out of message memory
  3923.         02h invalid mailbox number
  3924. Note:    the message is copied into a system buffer; the caller may immediately
  3925.       reuse its buffer
  3926. SeeAlso: AH=05h"MultiDOS"
  3927. --------B-1505-------------------------------
  3928. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  3929.     AH = 05h
  3930.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0269)
  3931.     DS = segment containing ABIOS RAM extensions (zero if none)
  3932. Return: CF clear if successful
  3933.         AH = 00h success
  3934.         ES:DI buffer filled
  3935.         AL destroyed
  3936.     CF set on failure
  3937.         AX destroyed
  3938.         AH = 80h/86h if not supported
  3939. SeeAlso: AH=04h"ABIOS",AH=C1h
  3940.  
  3941. Format of one entry of ABIOS Initialization Table:
  3942. Offset    Size    Description    (Table 0269)
  3943.  00h    WORD    device ID (see #0270)
  3944.  02h    WORD    number of Logical IDs
  3945.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  3946.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  3947.  0Ah    WORD    request block length
  3948.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  3949.  0Eh    WORD    Data Pointers length (in Common Data Area)
  3950.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  3951.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  3952.  12h  6 BYTEs    reserved
  3953.  
  3954. (Table 0270)
  3955. Values for ABIOS device ID:
  3956.  00h    ABIOS internal calls
  3957.  01h    floppy disk
  3958.  02h    hard disk
  3959.  03h    video
  3960.  04h    keyboard
  3961.  05h    parallel port
  3962.  06h    serial port
  3963.  07h    system timer
  3964.  08h    real-time clock
  3965.  09h    system services
  3966.  0Ah    NMI
  3967.  0Bh    mouse
  3968.  0Eh    CMOS RAM
  3969.  0Fh    DMA
  3970.  10h    Programmable Option Select (POS)
  3971.  16h    keyboard password
  3972. --------V-1505-------------------------------
  3973. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  3974.     AH = 05h
  3975.     AL = value (I,R,G,B bits)
  3976. SeeAlso: AH=04h"Amstrad"
  3977. --------O-1505-------------------------------
  3978. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  3979.     AH = 05h
  3980. Return: AX = process ID
  3981. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  3982. --------T-1505-------------------------------
  3983. INT 15 - MultiDOS Plus - CHECK MAILBOX
  3984.     AH = 05h
  3985.     AL = mailbox number (00h-3Fh)
  3986. Return: AH = status
  3987.         00h successful
  3988.         DX = length of first message in queue, 0000h if no message
  3989.         02h invalid mailbox number
  3990. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  3991. --------b-1506-------------------------------
  3992. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  3993.     AH = 06h
  3994. Return: BX = version number
  3995. --------O-1506-------------------------------
  3996. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  3997.     AH = 06h
  3998.     STACK:    WORD    process ID
  3999. Return: DX:AX -> process control block
  4000. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  4001. --------T-1506-------------------------------
  4002. INT 15 - MultiDOS Plus - READ MAILBOX
  4003.     AH = 06h
  4004.     AL = mailbox number (00h-3Fh)
  4005.     CX = size of buffer in bytes
  4006.     ES:DI -> buffer for message
  4007. Return: AH = status
  4008.         00h successful
  4009.         CX = number of bytes copied
  4010.         DX = actual length of message
  4011.         02h invalid mailbox number
  4012. Note:    if the caller's buffer is not large enough, the message is truncated
  4013.       and the remainder is lost
  4014. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  4015. --------O-1507-------------------------------
  4016. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  4017.     AH = 07h
  4018.     STACK:    WORD    object type
  4019. Return: DX:AX -> object control block
  4020. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  4021. --------T-1507-------------------------------
  4022. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  4023.     AH = 07h
  4024.     BX:CX = entry point of new task
  4025.     DX = stack size in paragraphs
  4026. Return: AH = status
  4027.         00h successful
  4028.         01h no free task control blocks
  4029.         02h no free memory for task's stack
  4030. Note:    execution returns immediately to calling task
  4031. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  4032. --------O-1508-------------------------------
  4033. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  4034.     AH = 08h
  4035.     STACK:    WORD    channel ID
  4036. Return: DX:AX -> channel control block
  4037. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  4038. --------T-1508-------------------------------
  4039. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  4040.     AH = 08h
  4041. Return: calling task terminated, so execution never returns to caller
  4042. Notes:    an internal task must be terminated with this function rather than a
  4043.       DOS termination function
  4044.     task's stack space is returned to parent task's memory pool
  4045. SeeAlso: AH=07h"MultiDOS"
  4046. --------O-1509-------------------------------
  4047. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  4048.     AH = 09h
  4049.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  4050.         WORD    subqueue ID
  4051. Return: AX = queue ID
  4052. SeeAlso: AH=0Ah"VMiX"
  4053. --------T-1509-------------------------------
  4054. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  4055.     AH = 09h
  4056.     AL = new priority
  4057. Note:    the priority has different meanings depending on whether priority-
  4058.       based or round-robin scheduling is used
  4059. SeeAlso: AH=07h"MultiDOS"
  4060. --------O-150A-------------------------------
  4061. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  4062.     AH = 0Ah
  4063.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  4064.         WORD    ID of current element in queue chain
  4065. Return: AX = ID of next element
  4066. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  4067. --------T-150A-------------------------------
  4068. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  4069.     AH = 0Ah
  4070.     AL = new interval
  4071.         00h = 55.0 ms (default)
  4072.         80h = 27.5 ms
  4073.         40h = 13.75 ms
  4074.         20h = 6.88 ms
  4075.         10h = 3.44 ms
  4076.         08h = 1.72 ms
  4077. SeeAlso: AH=03h"MultiDOS"
  4078. --------O-150B-------------------------------
  4079. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  4080.     AH = 0Bh
  4081.     STACK:    WORD    caller's UID
  4082.         DWORD    pointer to ASCIZ name of requested method
  4083.             "abort" abort current send/receive on comm port
  4084.             "block" start/end critical section
  4085.             "close" terminate interrupt-drive comm I/O
  4086.             "open" prepare comm port for interrupt-driven I/O
  4087.             "delay" set delay timer and wait
  4088.             "hibernate" put process to sleep
  4089.             "ints" enable/disable interrupt-driven INT 14h
  4090.             "length" get current send/receive buffer offsets
  4091.             "kswitch" switch stacks
  4092.             "numproc" get number of active processes
  4093.             "protocol" set protocol function for comm interrupts
  4094.             "relocate" set/reset VMiX flag for relocating to himem
  4095.             "status" get current open comm port status
  4096.             "wake" awaken a process
  4097.             "xport" get comm port polled for logins
  4098.         ---if "abort"---
  4099.          no additional arguments
  4100.         ---if "block"---
  4101.          WORD    0000h end, 0001h start
  4102.         ---if "close"---
  4103.          no additional arguments
  4104.         ---if "open"---
  4105.          WORD    comm port (00h-03h)
  4106.          WORD    BIOS parameter byte (see #0167 at INT 14/AH=00h),
  4107.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  4108.         ---if "delay"---
  4109.          WORD    time in seconds
  4110.         ---if "hibernate"---
  4111.          WORD    process ID
  4112.         ---if "ints"---
  4113.          WORD    0000h if no, 0001h if yes
  4114.         ---if "length","numproc","relocate","status","xport"---
  4115.          no additional arguments
  4116.         ---if "kswitch"---
  4117.          DWORD    pointer to new stack
  4118.         ---if "protocol"---
  4119.          DWORD    pointer to function (must be in low "assign"ed memory
  4120.             when in 386 mode)
  4121.         ---if "wake"---
  4122.          WORD    process ID
  4123. Return: DX:AX -> result or 0000h:0000h
  4124.         ---if "length"---
  4125.          BYTE    receive offset
  4126.          BYTE    send offset
  4127.         ---if "kswitch"---
  4128.          DWORD    old stack pointer
  4129.         ---if "numproc"---
  4130.          WORD    number of active processes
  4131.         ---if "status"---
  4132.          current open comm port status
  4133.         ---if "xport"---
  4134.          current comm port being polled for logins
  4135. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  4136. --------T-150B-------------------------------
  4137. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  4138.     AH = 0Bh
  4139. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  4140.       may be restored with AH=0Ch
  4141.     caller's video mode must be same as foreground task's video mode
  4142.     any text written while in the background will be saved to the
  4143.       foreground task's virtual screen when it switches to the background
  4144.     useful if a background task wants to display a message on the
  4145.       foreground screen
  4146. SeeAlso: AH=0Ch"MultiDOS"
  4147. --------O-150C-------------------------------
  4148. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  4149.     AH = 0Ch
  4150.     STACK:    WORD    process ID
  4151. Return: DX:AX -> TSS stack store
  4152. SeeAlso: AH=00"VMiX"
  4153. --------T-150C-------------------------------
  4154. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  4155.     AH = 0Ch
  4156. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  4157.       unless AH=0Bh has been called first
  4158. SeeAlso: AH=0Bh"MultiDOS"
  4159. --------O-150D-------------------------------
  4160. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  4161.     AH = 0Dh
  4162.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  4163.             followed by standard VMiX shell command string
  4164. Return: AX = process ID or error code "SYS_ERROR"
  4165. Note:    the maximum string length is 7Fh characters
  4166. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  4167. --------T-150D-------------------------------
  4168. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  4169.     AH = 0Dh
  4170. Note:    calling task receives all time slices until AH=0Eh is called; this
  4171.       allows time-critical events or nonreentrant code to be processed
  4172. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  4173. --------O-150E-------------------------------
  4174. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  4175.     AH = 0Eh
  4176.     STACK:    WORD    process ID
  4177. Return: AX = status (SYS_OK or SYS_ERROR)
  4178. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  4179. --------T-150E-------------------------------
  4180. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  4181.     AH = 0Eh
  4182. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  4183. --------d-150F-------------------------------
  4184. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  4185.     AH = 0Fh
  4186.     AL = phase code
  4187.         00h reserved
  4188.         01h surface analysis
  4189.         02h formatting
  4190. Return: CF clear if formatting should continue
  4191.     CF set if formatting should terminate
  4192. Note:    called during ESDI drive formatting after each cylinder is completed
  4193. SeeAlso: INT 13/AH=1Ah
  4194. --------O-150F-------------------------------
  4195. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  4196.     AH = 0Fh
  4197.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  4198.         WORD    ID of element in queue chain
  4199. Return: AX = key
  4200. SeeAlso: AH=0Ah"VMiX"
  4201. --------T-150F-------------------------------
  4202. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  4203.     AH = 0Fh
  4204.     DS:BX -> ASCIZ command
  4205. Return: after command has been processed
  4206. Notes:    specified string is executed as if it had been typed at the MultiDOS
  4207.       command prompt
  4208.     the task is placed on a queue which MultiDOS examines periodically and
  4209.       is suspended until MultiDOS has processed the command
  4210.     all lowercase characters up to the first blank are converted to upper
  4211.       case within the given buffer
  4212. --------O-1510-------------------------------
  4213. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  4214.     AH = 10h
  4215.     STACK:    DWORD    pointer to function
  4216.           N WORDs    function args
  4217. Return: AX = function's return value??? (not specified in documentation)
  4218. Note:    while the function is executing, the following global descriptors are
  4219.       available:
  4220.         20h stack segment
  4221.         38h code segment of function
  4222.         40h data alias for function's code segment
  4223.       additional GDT descriptors can be allocated using AH=02h with
  4224.       function "assign gdt"
  4225. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  4226. --------T-1510-------------------------------
  4227. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  4228.     AH = 10h
  4229.     AL = semaphore number (00h-3Fh)
  4230. Return: AH = status
  4231.         00h semaphore not in use
  4232.         01h semaphore owned by another task
  4233.         02h invalid semaphore number
  4234.         03h semaphore owned by caller
  4235. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  4236. --------Q-151000-----------------------------
  4237. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  4238.     AX = 1000h
  4239. Return: after other processes run
  4240. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  4241.       the current time-slice is set to expire at the next clock tick rather
  4242.       than immediately
  4243. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  4244. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 7A/BX=000Ah
  4245. SeeAlso: INT 7F/AH=E8h
  4246. --------Q-151001-----------------------------
  4247. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  4248.     AX = 1001h
  4249.     BX = number of bytes to allocate
  4250. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  4251.     AX = status (DV v2.42)
  4252.         0000h successful
  4253.         0001h failed
  4254. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  4255.       common memory.  Under DV v2.42, this call never generates a user
  4256.       prompt regardless of the SETERROR value; instead, it always returns
  4257.       AX=0001h and ES:DI=0000h:0000h if out of memory
  4258. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  4259. --------Q-151002-----------------------------
  4260. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  4261.     AX = 1002h
  4262.     ES:DI -> previously allocated block
  4263. Return: block freed
  4264. SeeAlso: AX=1001h,AX=DE0Dh
  4265. --------Q-151003-----------------------------
  4266. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  4267.     AX = 1003h
  4268.     BH = attribute
  4269.     BL = character
  4270.     DX = segment of object handle for window
  4271. Note:    BX=0 does not display anything, it only positions the hardware cursor
  4272. --------Q-1510-------------------------------
  4273. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  4274.     AH = 10h
  4275.     AL = 04h thru 12h
  4276. Return: pops up "Programming error" window in DV 2.x
  4277. --------Q-151013-----------------------------
  4278. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  4279.     AX = 1013h
  4280.     ES:DI -> FAR service routine
  4281. Return: BX = bit mask indicating which bit was allocated
  4282.          0000h if no more bits available
  4283. SeeAlso: AX=1014h,AX=1015h
  4284. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  4285.       interrupt; if other calls need to be made, the interrupt handler
  4286.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  4287. --------Q-151014-----------------------------
  4288. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  4289.     AX = 1014h
  4290.     BX = bit mask from INT 15/AX=1013h
  4291. SeeAlso: AX=1013h,AX=1015h
  4292. --------Q-151015-----------------------------
  4293. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  4294.     AX = 1015h
  4295.     BX = bit mask for interrupts to post
  4296. Return: indicated routines will be called: (DV 2.0x) at next task switch
  4297.                        (DV 2.2x) immediately on return from
  4298.                              hardware interrupt
  4299. SeeAlso: AX=1013h,AX=1014h
  4300. Notes:    this is one of the few TopView calls which are allowed from a hardware
  4301.       interrupt handler
  4302.     the handler will be called with ES containing the segment of the handle
  4303.       of the next task to be executed; on return, ES must be the segment of
  4304.       a task handle
  4305. --------Q-151016-----------------------------
  4306. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  4307.     AX = 1016h
  4308.     ES:DI = possible object handle
  4309. Return: BX = status
  4310.         FFFFh if ES:DI is a valid object handle (see #0272)
  4311.         0000h if ES:DI is not
  4312. Note:    under DESQview versions prior to 2.50, an object handle is always a
  4313.       pointer to the object; for versions 2.50 and up, only task handles
  4314.       are always pointers (other handles may consist of a unique object
  4315.       number and offset into DESQview's common memory)
  4316. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  4317.  
  4318. (Table 0271)
  4319. Values for DESQview object type:
  4320.  00h    window/task
  4321.  01h    mailbox
  4322.  02h    keyboard
  4323.  03h    timer
  4324.  04h    pointer
  4325.  05h    panel
  4326.  06h    objectq
  4327.  
  4328. Format of DESQview object:
  4329. Offset    Size    Description    (Table 0272)
  4330.  00h    WORD    offset in common memory of previous object of same type
  4331.  02h    WORD    offset in common memory of next object of same type
  4332.  04h    WORD    signature FEDCh (DV 2.42-)
  4333.         signature FEDCh or object number (DV 2.50+)
  4334.  06h    WORD    object type (see #0271)
  4335.  08h    DWORD    object handle to return to caller
  4336.  0Ch    DWORD    canonicalized object address (segment = common memory)
  4337.  10h    WORD    offset in common memory of owning task
  4338.         (0000h for unowned OBJECTQs)
  4339.  12h    WORD    mapping context
  4340.         offset in common memory of mapping context record (see #0274)
  4341.     remainder varies by object type and DESQview version
  4342. ---v2.42 keyboard object---
  4343.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  4344.         bit 15: keyboard opened
  4345.  16h  4 BYTEs    ???
  4346.  1Ah    WORD    priority in OBJECTQ???
  4347.  1Ch    ...
  4348.  25h    WORD    offset in common memory of ??? task
  4349.  27h  4 BYTEs    ???
  4350. ---v2.42 objectq object---
  4351.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  4352.         bit 15: OBJECTQ opened
  4353.  16h  2 BYTEs    ???
  4354.  18h    WORD    offset in common memory of ??? task
  4355.  1Ah  6 BYTEs    ???
  4356. ---v2.42 mailbox object---
  4357.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  4358.         bit 15: mailbox opened
  4359.  1Ah    WORD    priority in OBJECTQ???
  4360.  1Ch  6 BYTEs    ???
  4361.  22h    WORD    offset in common memory of mailbox name (counted string)
  4362.         0000h if no name
  4363.      <= 5 BYTEs ???
  4364. ---v2.22-2.42,2.52,2.60 window/task object---
  4365.  14h    BYTE    00h window, 01h task
  4366.  15h    BYTE    internal (not Switch menu) window number???
  4367.  16h    BYTE    internal (not Switch menu) window number???
  4368.  17h    WORD    segment of internal window record (see #0275)
  4369.  19h  2 BYTEs    ???
  4370.  1Bh    BYTE    cursor row
  4371.  1Ch    BYTE    cursor column
  4372.  1Dh    BYTE    visible window origin, row
  4373.  1Eh    BYTE    visible window origin, column
  4374.  1Fh    BYTE    window height (logical)
  4375.  20h    BYTE    window width (logical)
  4376.  21h    BYTE    window position, row
  4377.  22h    BYTE    window position, column
  4378.  23h    BYTE    window height (visible)
  4379.  24h    BYTE    window width (visible)
  4380.  25h    BYTE    row of top of frame (or window if unframed)
  4381.  26h    BYTE    column of left of frame (or window if unframed)
  4382.  27h    BYTE    window height (physical, including frame)
  4383.  28h    BYTE    window width (physical, including frame)
  4384.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  4385.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  4386.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  4387.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  4388.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  4389.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  4390.         unzoomed parameters above are updated when window is zoomed
  4391.           to full screen
  4392.  2Fh    BYTE    ??? initially logical window height
  4393.  30h    BYTE    ??? initially logical window width
  4394.  31h  2 BYTEs    ???
  4395.  33h    BYTE    minimum height of window
  4396.  34h    BYTE    minimum width of window
  4397.  35h    BYTE    maximum height of window
  4398.  36h    BYTE    maximum width of window
  4399.  37h  3 BYTEs    ???
  4400.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  4401.  42h 24 BYTEs    attributes???
  4402.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  4403.  62h  3 BYTEs    ???
  4404.  65h    BYTE    ??? bitflags
  4405.  66h    BYTE    bit 0: window is zoomed
  4406.  67h    BYTE    ???
  4407.  68h    WORD    offset in common memory of window name or 0000h if untitled
  4408.  6Ah    WORD    length of window name
  4409.  6Ch  2 BYTEs    ???
  4410.  6Eh    WORD    offset of logical cursor in window (in character cells)
  4411.  70h    DWORD    pointer to field table for window
  4412.  74h    BYTE    ???
  4413.  75h  2 BYTEs    ???
  4414.  77h    BYTE    number of last-visited field
  4415.  78h    DWORD    pointer to field table entry for last-visited field
  4416.  7Ch  3 BYTEs    ???
  4417.  7Fh    BYTE    select field marker character
  4418.  80h    BYTE    ??? bit flags
  4419.         bit 0: allow ECh window stream opcode to change reverse logattr
  4420.         bit 1: alternate field processing mode selected
  4421.  81h    BYTE    ???
  4422.  82h    DWORD    notification function (manager stream opcode 8Ah)
  4423.         no notification if segment = 0000h
  4424.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  4425.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  4426.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  4427.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  4428.  90h    BYTE    ??? bitflags
  4429.  91h    BYTE    ???
  4430.  ---task object only
  4431.  92h    BYTE    bit flags (bits 0-4)
  4432.  93h    BYTE    character for ??? (default 20h)
  4433.  94h    BYTE    ??? flag
  4434.  95h    WORD    offset in common memory of ???
  4435.  97h  2 BYTEs    ???
  4436.  99h    WORD    ???
  4437.  9Bh    BYTE    ??? bit flags
  4438.         bit 3: ???
  4439.         bit 6: perform protected-attribute processing on select fields
  4440.  9Ch    BYTE    ???
  4441.  9Dh    WORD    offset in common memory of current register save record
  4442.           (see #0273).    No register save record in use if < 01C0h
  4443.  9Fh    WORD    offset in common memory of task's keyboard object
  4444.  A1h    WORD    offset in common memory of task's OBJECTQ object
  4445.  A3h    WORD    offset in common memory of task's mailbox object
  4446.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  4447.  A7h    DWORD    user's SS:SP
  4448.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  4449.  ADh  6 BYTEs    ???
  4450.  B3h    BYTE    ??? bit flags
  4451.         bit 0: run in foreground only
  4452.  B4h    BYTE    ???
  4453.  B5h    BYTE    ??? bitflags
  4454.  B6h    BYTE    task status (see #0373 at AX=DE2Ch)
  4455.  B7h  9 BYTEs    ???
  4456.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  4457.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  4458.  C4h  2 BYTEs    ??? (0000h)
  4459.  C6h    WORD    segment of keyboard buffer for task
  4460.  C8h    WORD    offset in common memory of ??? keyboard object
  4461.  CAh    BYTE    ???
  4462. ---v2.22-2.42
  4463.  CBh    WORD    offset in common memory of ??? object
  4464.  CEh    BYTE    ??? flag
  4465.  CFh    WORD    offset in common memory of default notify window for task
  4466.           or 0000h if none
  4467.  D1h  4 BYTEs    ???
  4468.  D5h    BYTE    window number on Switch Window menu
  4469.  D6h  5 BYTEs    ???
  4470.  DBh    WORD    offset in common memory of ??? object
  4471.  DDh  2 BYTEs    ???
  4472.  DFh    WORD    API level for task
  4473.  E1h    WORD    offset in common memory of object task is waiting on if task
  4474.           status is 'waiting', else 0000h
  4475.  E7h    WORD    segment of ???
  4476.  E9h 4    BYTEs    ???
  4477.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  4478.  F1h 12 BYTEs    ???
  4479.  FBh    WORD    ???
  4480.  FDh    BYTE    ???
  4481.  FFh 12 BYTEs    ???
  4482. 10Bh    DWORD    pointer to process record (see #0276,#0277)
  4483. 10Dh 10 BYTEs    ???
  4484. 119h    DWORD    SS:SP for ???
  4485. 11Dh  4 BYTEs    ???
  4486. 121h    DWORD    pointer to ???
  4487. 125h 25 BYTEs    ???
  4488. 13Eh    DWORD    pointer to ??? in system memory
  4489. ---v2.22
  4490. 142h  3 BYTEs    ???
  4491. 145h        task's default keyboard object
  4492. ---v2.42
  4493. 142h    DWORD    pointer to first task instance data record in system memory
  4494. 148h    DWORD    pointer to last task instance data record in system memory
  4495.         (see #0278)
  4496. 14Ah    BYTE    ???
  4497. 14Dh 42 BYTEs    task's default keyboard object
  4498. 177h 32 BYTEs    task's ObjectQ object
  4499. 197h 41 BYTEs    task's default mailbox object
  4500. 1C0h 24 BYTEs    first register save record
  4501. 450h    --    default top of private stack
  4502. ---v2.52 (probably all DV/X)
  4503. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  4504.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  4505.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  4506.   0000h even when waiting.
  4507. ---v2.60
  4508.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  4509.  CDh    WORD    offset in common memory of ??? object
  4510.  D0h    BYTE    ??? flag
  4511.  D1h    WORD    offset in common memory of default notify window for task
  4512.           or 0000h if none
  4513.  D3h  4 BYTEs    ???
  4514.  D7h    BYTE    window number on Switch Window menu
  4515.  D8h  5 BYTEs    ???
  4516.  DDh    WORD    offset in common memory of ??? object
  4517.  DFh  2 BYTEs    ???
  4518.  E1h    WORD    API level for task
  4519.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  4520.           that task is waiting on, else 0000h. (Task with CPU also
  4521.           has 0000h here)
  4522.  E9h    WORD    segment of ???
  4523.  EBh 4    BYTEs    ???
  4524.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  4525.  F3h 12 BYTEs    ???
  4526.  FDh    WORD    ???
  4527.  FFh    BYTE    ???
  4528. 101h  8 BYTEs    ???
  4529. 109h    DWORD    pointer to process record in system memory
  4530. 10Dh 14 BYTEs  ???
  4531. 11Bh    DWORD    SS:SP for ???
  4532. 11Fh  4 BYTEs    ???
  4533. 123h    DWORD    pointer to ???
  4534. 127h 25 BYTEs    ???
  4535. 140h    DWORD    pointer to ??? in system memory
  4536. 144h    DWORD    pointer to first task instance data record in system memory
  4537. 148h    DWORD    pointer to last task instance data record in system memory
  4538.         (from INT 15/AX=DE27h, see below)
  4539. 14Ch    BYTE    ???
  4540. 14Eh 42 BYTEs    task's default keyboard object
  4541. 179h 32 BYTEs    task's ObjectQ object
  4542. 199h 41 BYTEs    task's default mailbox object
  4543. 1C2h 24 BYTEs    first register save record
  4544. 452h    --    default top of private stack
  4545.  
  4546. Format of DESQview Register Save Record:
  4547. Offset    Size    Description    (Table 0273)
  4548.  00h    WORD    AX
  4549.  02h    WORD    BX
  4550.  04h    WORD    CX
  4551.  06h    WORD    DX
  4552.  08h    WORD    DI
  4553.  0Ah    WORD    SI
  4554.  0Eh    WORD    DS
  4555.  10h    WORD    ES
  4556.  12h    DWORD    return address
  4557.  16h    WORD    original flags
  4558.  
  4559. Format of DESQview mapping context record:
  4560. Offset    Size    Description    (Table 0274)
  4561.  00h    WORD    lowest segment in process's memory
  4562.         (often start of system memory chain)
  4563.  02h    WORD    size of process's memory in paragraphs
  4564.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  4565.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  4566.  06h  2 BYTEs    ???
  4567.  08h    WORD    EMS handle if in EMS, else 0
  4568.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  4569.  0Ch    WORD    segment of system memory block that contains process record,
  4570.           referenced from segment of start of system memory chain
  4571.  0Eh    BYTE    ???
  4572.  0Fh    WORD    size of system memory block that contains process record
  4573.           and DOS memory in paragraphs
  4574.  11h    BYTE    bit flags
  4575.         Bit 0: Swapped out???
  4576.         Bit 1: ???
  4577.         Bit 2: Swapped out???
  4578.  12h    BYTE    ???
  4579.  13h    BYTE    reference count
  4580.  ---v2.31
  4581.  14h 10 BYTEs    ???
  4582.  1Eh    WORD    segment of process record
  4583.  20h  2 BYTEs    ???
  4584.  22h    WORD    segment of ???    (in first free system memory block???)
  4585.  24h    WORD    segment of end of system memory chain
  4586.  26h    WORD    segment of start of system memory chain
  4587.  28h  8 BYTEs    ???
  4588.  2Ah    DWORD    pointer to ??? (process record???)
  4589.  2Dh 10 BYTEs    ???
  4590.  37h    BYTE    lowest interrupt vector to save on context switch
  4591.  38h    BYTE    highest interrupt vector to save on context switch
  4592.  39h    WORD    offset in common memory of main task with this context
  4593.  3Ah 12 BYTEs    ???
  4594.  46h    BYTE    internal mapping context number
  4595.  47h 12 BYTEs    ???
  4596.  ---v2.5x-2.60
  4597.  14h  6 BYTEs    ???
  4598.  1Ah    WORD    segment of process record
  4599.  1Ch  2 BYTEs    ???
  4600.  1Eh    WORD    segment of first free system memory block
  4601.  20h    WORD    segment of start of system memory chain
  4602.  22h    WORD    segment of end of system memory chain
  4603.  24h 8    BYTEs    ???
  4604.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  4605.  30h 3    BYTEs    ???
  4606.  33h    WORD    Offset in common memory of main task with this context
  4607.  35h 7    BYTEs    ???
  4608.  3Ch    BYTE    internal mapping context number
  4609.  3Dh 14 BYTEs    ???
  4610.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  4611.  4Dh    BYTE    ??? (flag???)
  4612.  ---v2.53 (2.5x???)
  4613.  4Eh 12 BYTEs    ???
  4614.  ---v2.60
  4615.  4Eh    WORD    segment of script buffer (see #0279)
  4616.  50h  6 BYTEs    ???
  4617.  
  4618. Format of DESQview Internal Window Record (v2.31-2.60):
  4619. Offset    Size    Description    (Table 0275)
  4620.  00h    BYTE    internal window number???
  4621.  01h    BYTE    display page???
  4622.  02h    BYTE    video mode
  4623.  03h  3 BYTEs    ???
  4624.  06h    BYTE    logical window height
  4625.  07h    BYTE    logical window width
  4626.  08h    DWORD    pointer to text video buffer
  4627.  0Ch 116 BYTEs    ???
  4628.  
  4629. Format of DESQview process record (v2.31):
  4630. Offset    Size    Description    (Table 0276)
  4631. -470h 13 BYTEs    filename of ??? Script
  4632. -463h 1117 BYTEs ??? (script buffer???)
  4633.  -6h  6 BYTEs    ???
  4634.  00h    WORD    segment of parent PSP in process
  4635.  02h  5 BYTEs    ???
  4636.  07h    WORD    segment of current PSP in process
  4637.  09h    WORD    segment of first MCB in process
  4638.  0Bh 13 BYTEs    ???
  4639.  18h 1024 BYTEs process's interrupt vector table
  4640. 418h 376 BYTEs    ???
  4641. 590h        first MCB in process
  4642.  
  4643. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  4644. Offset    Size    Description    (Table 0277)
  4645.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  4646.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  4647. 11Ch    WORD    segment of parent PSP in process
  4648. 11Eh  4 BYTEs    ???
  4649. 122h    WORD    segment of current PSP
  4650. 124h    WORD    segment of current PSP
  4651. 126h    WORD    segment of first MCB in process
  4652. 128h  4 BYTEs    ???
  4653. 12Ch    DWORD    pointer to first process instance data record in system memory
  4654. 130h    DWORD    pointer to last process instance data record in system memory
  4655.         (from INT 15/AX=DE27h, see below)
  4656. 134h  8 BYTEs    ???
  4657. 13Ch    WORD    size of current environment
  4658. 13Eh    WORD    segment of current environment
  4659. 140h    WORD    segment of current PSP
  4660. 142h    DWORD    entry point of current program
  4661. 146h 10 BYTEs    ???
  4662. ---v2.52 (v2.5x???)
  4663. 150h    BYTE    ???
  4664. 151h    WORD    segment of parent PSP in process
  4665. 153h    WORD    ???
  4666. 155h    WORD    ???
  4667. 157h    WORD    ???
  4668. 159h  4 BYTEs    ???
  4669. 15Dh    WORD    segment of current environment
  4670. 15Fh    WORD    segment of current PSP
  4671. 161h    WORD    segment of ???
  4672. 162h    WORD    ???
  4673. 164h  3 BYTEs    ???
  4674. 168h 1024 BYTEs process's interrupt vector table
  4675. 568h 120 BYTEs    ???
  4676. 5E0h        first MCB in process
  4677. ---v2.60
  4678. 150h    WORD    segment of parent PSP in process
  4679. 152h    WORD    ???
  4680. 154h    WORD    ???
  4681. 156h    WORD    ???
  4682. 158h  4 BYTEs    ???
  4683. 15Ch    WORD    segment of current environment
  4684. 15Eh    WORD    segment of current PSP
  4685. 160h    WORD    segment of ???
  4686. 162h    WORD    ???
  4687. 164h 1024 BYTEs process's interrupt vector table
  4688. 564h 108 BYTEs    ???
  4689. 5D0h        first MCB in process
  4690.  
  4691. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  4692. Offset    Size    Description    (Table 0278)
  4693.  00h    DWORD    pointer to next record of same type or 00000000
  4694.  04h    DWORD    pointer to previous record of same type or 00000000
  4695.  08h    DWORD    pointer to source area of memory during restore state
  4696.  0Ch    WORD    number of bytes to save/restore
  4697.  0Eh    DWORD    pointer to destination area of memory during restore state
  4698.  12h    WORD    ??? (0)
  4699.  14h  N BYTEs    source memory buffer during restore state
  4700.  
  4701. Format of DESQview script buffer (v2.60):
  4702. Offset    Size    Description    (Table 0279)
  4703.  00h 13 BYTEs    ASCIZ Script filename
  4704.  0Dh 80 BYTEs    ???
  4705.  5Eh  N BYTEs    script records (see #0280)
  4706.  
  4707. Format of one DESQview script record (v2.60):
  4708. Offset    Size    Description    (Table 0280)
  4709.  00h    BYTE    signature 12h
  4710.  01h 18 BYTEs    blank-padded script name
  4711.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  4712.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  4713.  15h    BYTE    ???
  4714.  16h    WORD    size of script in bytes
  4715.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  4716.           scan code of non-ASCII key)
  4717.  
  4718. Format of DESQview Common Memory Header (v2.31-2.60):
  4719. Offset    Size    Description    (Table 0281)
  4720.  00h    WORD    offset of lowest used block
  4721.  02h    WORD    bytes of commom memory, including header
  4722.  04h    WORD    offset of first free block
  4723.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  4724. Note:    the above is located at the beginning of the commom memory segment
  4725. SeeAlso: #0282,#0283,#0288
  4726.  
  4727. Format of DESQview Free block header:
  4728. Offset    Size    Description    (Table 0282)
  4729.  00h    WORD    size of block in bytes including header
  4730.  02h    WORD    offset of next free block
  4731.  04h  N BYTEs    free block
  4732. SeeAlso: #0281,#0283
  4733.  
  4734. Format of DESQview Used block header:
  4735. Offset    Size    Description    (Table 0283)
  4736.  00h    WORD    size of block in bytes including header
  4737.  02h  N BYTEs    used block
  4738. SeeAlso: #0281,#0282
  4739. --------Q-151017-----------------------------
  4740. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  4741.     AX = 1017h
  4742. Return: pops up "Programming error" window in DV 2.x
  4743. --------Q-151018-----------------------------
  4744. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  4745.     AX = 1018h
  4746.     BH = column
  4747.     BL = row
  4748.     ES = segment of object handle for window below which to search
  4749.          0000h = start search with topmost window
  4750. Return: ES = segment of object handle for window which is visible at the
  4751.            indicated position, or covered by indicated window
  4752.         0000h if no window
  4753. SeeAlso: AX=1023h,AX=1024h
  4754. --------Q-151019-----------------------------
  4755. INT 15 - TopView - "SOUND" - MAKE TONE
  4756.     AX = 1019h
  4757.     BX = frequency in Hertz (0000h = silence)
  4758.     CX = duration in clock ticks (18.2 ticks/sec)
  4759. Return: immediately, tone continues to completion
  4760. Notes:    if another tone is already playing, the new tone does not start until
  4761.       completion of the previous one.  Up to 32 tones may be queued before
  4762.       the process is blocked until a note completes.
  4763.     in DV 2.00, the lowest tone allowed is 20 Hz
  4764.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  4765.       notes are also cancelled
  4766. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  4767. --------Q-15101A-----------------------------
  4768. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  4769.     AX = 101Ah
  4770. Return: stack switched
  4771. Notes:    this call may not be nested; a second call must be preceded by a call
  4772.       to "USTACK" (AX=1025h)
  4773.     while TopView requires many API calls to be executed while on the
  4774.       task's internal stack, DESQview allows those calls to be executed
  4775.       regardless of the current stack
  4776. SeeAlso: AX=1025h
  4777. --------Q-15101B-----------------------------
  4778. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  4779.     AX = 101Bh
  4780. Return: task-switching temporarily disabled
  4781. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  4782.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  4783.       will again be disabled)
  4784.     suspends the caller until DOS is free
  4785. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  4786. SeeAlso: INT 60/DI=0602h
  4787. --------Q-15101C-----------------------------
  4788. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  4789.     AX = 101Ch
  4790. Return: task-switching enabled
  4791. Note:    this API call may be made from within a hardware interrupt handler
  4792. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  4793. --------Q-15101D-----------------------------
  4794. INT 15 - TopView - "STOP" - STOP TASK
  4795.     AX = 101Dh
  4796.     ES = segment of object handle for task to be stopped
  4797.          (== handle of main window for that task)
  4798. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  4799. Note:    once a task has been stopped, additional "STOP"s are ignored
  4800. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  4801.       current task
  4802. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  4803. --------Q-15101E-----------------------------
  4804. INT 15 - TopView - "START" - START TASK
  4805.     AX = 101Eh
  4806.     ES = segment of object handle for task to be started
  4807.          (== handle of main window for that task)
  4808. Return: indicated task is started up again
  4809. Note:    once a task has been started, additional "START"s are ignored
  4810. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  4811. --------Q-15101F-----------------------------
  4812. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  4813.     AX = 101Fh
  4814.     BX = bit fields
  4815.          bits 0-12: number of characters to display
  4816.          bits 13,14: which mouse button may be pressed to remove window
  4817.              00 = either
  4818.              01 = left
  4819.              10 = right
  4820.              11 = either
  4821.          bit 15: beep if 1
  4822.     ES:DI -> text of message
  4823.     CH = width of error window (0 = default)
  4824.     CL = height of error window (0 = default)
  4825.     DX = segment of object handle
  4826. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  4827. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  4828. --------Q-151020-----------------------------
  4829. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  4830.     AX = 1020h
  4831. Return: pops up "Programming error" window in DV v2.00+
  4832. --------Q-151021-----------------------------
  4833. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  4834.     AX = 1021h
  4835.     BX = segment of object handle for task to interrupt (not self)
  4836.     DX:CX -> FAR routine to jump to next time task is run
  4837. Return: nothing
  4838. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  4839.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  4840.       needs to be preserved
  4841.     multiple PGMINTs to a single task are processed last-in first-out
  4842.     if the other task is in a DOS or DV API call, the interruption will
  4843.       occur on return from that call
  4844. --------Q-151022BX0000-----------------------
  4845. INT 15 - TopView - "GETVER" - GET VERSION
  4846.     AX = 1022h
  4847.     BX = 0000h
  4848. Return: BX nonzero, TopView or compatible loaded
  4849.     (BL = major version, BH = minor version)
  4850. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  4851. --------Q-151023-----------------------------
  4852. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  4853.     AX = 1023h
  4854.     BX = segment of object handle for parent window within which to
  4855.            position the window (0 = full screen)
  4856.     ES = segment of object handle for window to be positioned
  4857.     DL = general window position (see #0284)
  4858.     CH = number of columns to offset from position specified by DL
  4859.     CL = number of rows to offset from position specified by DL
  4860. Return: nothing
  4861.  
  4862. Bitfields for TopView general window position:
  4863. Bit(s)    Description    (Table 0284)
  4864.  0,1    horizontal position
  4865.     00 = current, 01 = center, 10 = left, 11 = right
  4866.  2,3    vertical position
  4867.     00 = current, 01 = center, 10 = top, 11 = bottom
  4868.  4    don't redraw screen if set
  4869.  5-7    not used
  4870. --------Q-151024-----------------------------
  4871. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  4872.     AX = 1024h
  4873.     BX = segment of object handle for window
  4874.           (0 = use default)
  4875. Return: ES:DI -> virtual screen
  4876.     CX = size of virtual screen in bytes
  4877.     DL = 00h text screen
  4878.          01h graphics screen
  4879. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  4880. --------Q-151025-----------------------------
  4881. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  4882.     AX = 1025h
  4883. Return: stack switched back
  4884. Notes:    call only after having switched to internal stack with AX=101Ah
  4885.     while TopView requires many API calls to be executed while on the
  4886.       task's private stack, DESQview allows those calls to be executed
  4887.       regardless of the current stack
  4888. SeeAlso: AX=101Ah
  4889. --------Q-1510-------------------------------
  4890. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  4891.     AH = 10h
  4892.     AL = 26h thru 2Ah
  4893. Return: pops up "Programming error" window in DV 2.x
  4894. --------Q-15102B-----------------------------
  4895. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  4896.     AX = 102Bh
  4897.     BX = segment of object handle for task
  4898. Return: nothing
  4899. Note:    forces a task which is waiting on its objectq to continue by placing
  4900.       the handle for the task on the objectq
  4901. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  4902. --------Q-15102C-----------------------------
  4903. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  4904.     AX = 102Ch
  4905.     ES:DI -> contents of .PIF/.DVP file (see #0285)
  4906.     BX = size of .PIF/.DVP info
  4907. Return: BX = segment of object handle for new task
  4908.          0000h on error
  4909. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  4910.  
  4911. Format of .PIF/.DVP file:
  4912. Offset    Size    Description    (Table 0285)
  4913.  00h    BYTE    reserved (0)
  4914.  01h    BYTE    checksum of bytes 02h through 170h
  4915.  02h 30 BYTEs    blank-padded program title
  4916.  20h    WORD    maximum memory to allocate to partition in KB
  4917.  22h    WORD    minimum memory required in KB
  4918.  24h 64 BYTEs    ASCIZ program pathname
  4919.  64h    BYTE    default drive letter ('A',...)
  4920.  65h 64 BYTEs    ASCIZ default directory name
  4921.  A5h 64 BYTEs    ASCIZ program parameters
  4922.  E5h    BYTE    initial screen mode (0-7) (see also offset 189h)
  4923.  E6h    BYTE    number of text pages used
  4924.  E7h    BYTE    number of first interrupt to save
  4925.  E8h    BYTE    number of last interrupt to save
  4926.  E9h    BYTE    rows in virtual screen buffer
  4927.  EAh    BYTE    columns in virtual screen buffer
  4928.  EBh    BYTE    initial window position, row
  4929.  ECh    BYTE    initial window position, column
  4930.  EDh    WORD    system memory in KB
  4931.  EFh 64 BYTEs    ASCIZ shared program name
  4932. 12Fh 64 BYTEs    ASCIZ shared program data file
  4933. 16Fh    BYTE    flags1
  4934.         bit 7: writes text directly to screen
  4935.         bit 6: runs in foreground only (see also offset 184h)
  4936.         bit 5: uses math coprocessor
  4937.         bit 4: accesses system keyboard buffer directly
  4938.         bits 3-1: reserved (0)
  4939.         bit 0: swappable
  4940. 170h    BYTE    flags2
  4941.         bit 6: uses command-line parameters in field at A5h
  4942.         bit 5: swaps interrupt vectors
  4943. ---information unique to .DVP files---
  4944. 171h  2 BYTEs    keys to use on open menu
  4945. 173h    WORD    size of script buffer in bytes
  4946. 175h    WORD    automatically give up CPU after this many tests for keyboard
  4947.           input in one clock tick (default 0 = never)
  4948. 177h    BYTE    nonzero = "uses own colors"
  4949. 178h    BYTE    nonzero if application swappable
  4950. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  4951.         in actual .DVP files, frequently 01h
  4952. 17Ch    BYTE    nonzero to automatically close on exit (see also offset 18Bh)
  4953. 17Dh    BYTE    nonzero if copy-protect floppy is required
  4954. ---information unique to DESQview 2.0+---
  4955. 17Eh    BYTE    .DVP version number
  4956.         00h DESQview v1.2+
  4957.         01h DESQview v2.0+
  4958.         02h DESQview v2.2+
  4959. 17Fh    BYTE    reserved (0)
  4960. 180h    BYTE    initial number of rows in physical window
  4961. 181h    BYTE    initial number of columns in physical window
  4962. 182h    WORD    maximum expanded memory to allow, in KB
  4963. 184h    BYTE    flags3
  4964.         bit 7: automatically assign window position
  4965.         bit 5: maximum memory value has been specified
  4966.         bit 4: disallow "Close" command
  4967.         bit 3: foreground-only when doing graphics
  4968.             set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  4969.         bit 2: don't virtualize (see also offset 18Bh)
  4970.         bit 1: foreground-only during DOS calls
  4971.             set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  4972. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  4973.         (see #0286)
  4974. 186h    BYTE    number of graphics pages used
  4975. 187h    WORD    extra system memory size
  4976. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  4977. ---information unique to DESQview 2.2+---
  4978. 18Ah    BYTE    serial port usage
  4979.         FFh uses all serial ports
  4980.         00h no serial ports
  4981.         01h only COM1
  4982.         02h only COM2
  4983. 18Bh    BYTE    flags4
  4984.         bit 7: automatically close application on exit if .COM or .EXE
  4985.             specified (see also offset 17Ch)
  4986.         bit 6: swappable if not using serial ports
  4987.         bit 5: start program with window hidden (v2.26+)
  4988.         bit 4: start program in background (v2.26+)
  4989.         bit 3: virtualize text (see also offset 184h)
  4990.         bit 2: virtualize graphics (see also offset 184h)
  4991.         bit 1: share CPU when foreground
  4992.         bit 0: share EGA when foreground and zoomed
  4993. 18Ch    BYTE    protection level for 386 machines
  4994. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  4995. ---information unique to DESQview/X 1.0---
  4996. 18Dh    BYTE    X flags
  4997.         bits 3-7: unused (0)
  4998.         bit 2: don't display wait message when opening window
  4999.         bit 1: don't display DOS window
  5000.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  5001.                (NEWPROC) inherit DOS client layer usage
  5002. 18Eh    BYTE    X keyboard behavior (0-3)
  5003. 18Fh    BYTE    font scaling
  5004.         00h fixed fonts
  5005.         01h scalable fonts
  5006. 190h 10 BYTEs    reserved (0)
  5007. 19Ah    WORD    length of data follownig XDVP signature
  5008. 19Ch  4 BYTEs    signature "XDVP"
  5009. 1A0h  N BYTEs    list of variable length records (see #0287)
  5010.  
  5011. Bitfields for DESQview keyboard conflict level:
  5012. Bit(s)    Description    (Table 0286)
  5013.  3    save/restore entire INT 09 handler state every taskswtch
  5014.  2    take special precautions for programs which read the BIOS keyboard
  5015.       buffer directly from memory
  5016.  1    never indicate keystroke available during scripts/xfers
  5017.  0    only indicate keystroke available every sixth poll
  5018.  
  5019. Format of DESQview/X variable length record:
  5020. Offset    Size    Description    (Table 0287)
  5021.  00h    WORD    length of following record, 0000h if end of record list
  5022.  02h    BYTE    record type
  5023.         01h script filename, up to 64 characters
  5024.         02h command-line parameters (allows >64 characters on cmdline)
  5025.         03h environment inheritance
  5026.         04h environment string
  5027.         05h starting window position
  5028. ---types 01h,02h,04h---
  5029.  03h  N BYTEs    ASCII data
  5030. ---type 03h---
  5031.  03h    BYTE    inheritance
  5032.         00h do not inherit
  5033.         01h inherit environment
  5034. ---type 05h---
  5035.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  5036.         starting row, starting column, starting height, starting width
  5037. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  5038.       only the last instance of each type is used; multiple occurrences of
  5039.       type 04h are concatenated
  5040. --------Q-15102D-----------------------------
  5041. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  5042.     AX = 102Dh
  5043.     BL = subfunction
  5044.          00h determine whether using keyboard mouse
  5045.         Return: BL = 00h using real mouse
  5046.                  01h using keyboard mouse
  5047.          01h turn keyboard mouse on
  5048.          02h turn keyboard mouse off
  5049. --------Q-15102E-----------------------------
  5050. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  5051.     AX = 102Eh
  5052.     BX = number of bytes
  5053. Return: AX = status
  5054.         0000h successful
  5055.         ES:DI -> allocated system memory (see #0288)
  5056.         0001h failed
  5057.         ES:DI = 0000h:0000h
  5058. Note:    under DV 2.42, this call is identical to AX=1001h
  5059. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  5060.  
  5061. Format of DESQview system memory block header:
  5062. Offset    Size    Description    (Table 0288)
  5063.  00h    WORD    segment of next header or 0000h
  5064.  02h    WORD    segment of previous header or 0000h
  5065.  04h    WORD    size of block in paragraphs, including header
  5066.  06h    BYTE    availability flag (00h in use, 01h free)
  5067. Note:    this header is located one paragraph before the memory block proper
  5068. SeeAlso: #0281
  5069. --------Q-1511-------------------------------
  5070. INT 15 - TopView commands
  5071.     AH = 11h
  5072.     AL = various (except 17h)
  5073. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  5074.       see those below
  5075. SeeAlso: AH=DEh
  5076. --------T-1511-------------------------------
  5077. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  5078.     AH = 11h
  5079.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  5080.             request (max len = 127)
  5081. Return: AX = status (SYS_OK or SYS_ERROR)
  5082. SeeAlso: AH=0Ch"VMiX"
  5083. --------T-1511-------------------------------
  5084. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  5085.     AH = 11h
  5086. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  5087. SeeAlso: AH=12h"MultiDOS"
  5088. Index:    hotkeys;MultiDOS Plus
  5089. --------Q-151117BX0000-----------------------
  5090. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  5091.     AX = 1117h
  5092.     BX = 0000h    get current mapping context without setting
  5093.          nonzero    set new mapping context
  5094. Return: BX = mapping context in effect before call
  5095.     interrupts enabled
  5096. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  5097.     mapping contexts determine conventional-memory addressability; setting
  5098.       a mapping context ensures that the associated program and data areas
  5099.       are in memory for access.  Usable by drivers, TSRs and shared
  5100.       programs.
  5101.     caller need not be running under DESQview, but must ensure that the
  5102.       stack in use will not be mapped out by the call
  5103. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  5104. --------m-1511DE-----------------------------
  5105. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  5106.     AX = 11DEh
  5107. Return: CF clear if installed
  5108.         AX = segment at which QEXT.SYS is located
  5109. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  5110.       versions also implement the XMS standard
  5111. Note:    a private entry point (see #0289) may be found by searching the
  5112.       beginning of the returned segment for the signature string
  5113.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  5114.       prior to the signature contains the QEXT version number in BCD,
  5115.       and the word prior to that contains the offset within the QEXT
  5116.       code segment of the private entry point
  5117. SeeAlso: INT 2F/AX=4310h,INT 67/AH=3Fh
  5118.  
  5119. (Table 0289)
  5120. Call QEXT.SYS private entry point with:
  5121.     AH = 00h ???
  5122.     AH = nonzero ???
  5123. --------T-1512-------------------------------
  5124. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  5125.     AH = 12h
  5126.     STACK:    WORD    process ID
  5127. Return: AX = status (SYS_OK or SYS_ERROR)
  5128. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  5129. --------T-1512-------------------------------
  5130. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  5131.     AH = 12h
  5132. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  5133. SeeAlso: AH=11h"MultiDOS"
  5134. Index:    hotkeys;MultiDOS Plus
  5135. --------Q-1512--BH00-------------------------
  5136. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  5137.     AH = 12h
  5138.     BH = 00h
  5139.     BL = which handle to return
  5140.         00h handle in DWORD on top of stack
  5141.         01h current task's window handle
  5142.         02h given task's mailbox handle (task's handle on stack)
  5143.         03h current task's mailbox handle
  5144.         04h given task's keyboard handle (task's handle on stack)
  5145.         05h current task's keyboard object handle
  5146.         06h given task's OBJECTQ handle (task's handle on stack)
  5147.         07h current task's OBJECTQ handle
  5148.         08h      \
  5149.           thru > return 0000:0000 under DV < 2.26
  5150.         10h      /
  5151.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  5152.         0Dh (2.26+) task handle of owner (parent) of current task
  5153. Return: DWORD on top of stack is object handle
  5154. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  5155.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  5156.       window)
  5157. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  5158. --------Q-1512--BH01-------------------------
  5159. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  5160.     AH = 12h
  5161.     BH = 01h
  5162.     BL = object type to create
  5163.         00h (DV 2.0x only) handle is DWORD on top of stack
  5164.         01h (DV 2.0x only) use task's window handle
  5165.         02h (DV 2.0x only) given task's mailbox (task's handle on stack)
  5166.         03h (DV 2.0x only) current task's mailbox
  5167.         04h (DV 2.0x only) given task's keyboard (task's handle on stack)
  5168.         05h (DV 2.0x only) current task's keyboard object
  5169.         08h WINDOW class
  5170.         09h MAILBOX class
  5171.         0Ah KEYBOARD class
  5172.         0Bh TIMER object (counts down 32-bit time in 10ms increments)
  5173.         0Fh POINTER object
  5174.         10h PANEL object
  5175.     STACK: (if window object or WINDOW class)
  5176.            DWORD address to jump to (no new task if high word == 0)
  5177.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  5178.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  5179.            DWORD bytes system memory for input buffer for READ/READN
  5180.             (0 == none, -1 == default--same as logical window size)
  5181.            DWORD window size, columns
  5182.            DWORD window size, rows
  5183.            DWORD length of window title
  5184.            DWORD address of window title
  5185. Return: DWORD on top of stack is new object handle
  5186. Notes:    if a new task is created, it is started with
  5187.       AX = BX = SI = DI = BP = 0
  5188.       DX:CX = handle of parent task
  5189.       DS = ES = SS = segment of private stack (and new task's handle)
  5190.     new windows are orphans, inherit the colors/hidden status of the
  5191.       creating task's window, and are placed in the upper left hand corner
  5192.       of the screen but not automatically redrawn
  5193.     new keyboards are closed, and have all object bits cleared except for
  5194.       the hardware cursor bit
  5195. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  5196. --------Q-1512--BH02-------------------------
  5197. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  5198.     AH = 12h
  5199.     BH = 02h
  5200.     BL = object
  5201.         00h handle in DWORD on top of stack
  5202.         window: close window and free
  5203.         timer: free timer
  5204.         panel: free panel object
  5205.         pointer: free pointer
  5206.         01h task's window handle - kills task, never returns
  5207.         02h given task's mailbox (task's handle on top of stack)
  5208.         03h current task's mailbox
  5209.         04h given task's keyboard (task's handle on top of stack)
  5210.         05h current task's keyboard object
  5211. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  5212.       task windows also free any mailbox, objectq, and panel objects held
  5213.       by the task and any child tasks
  5214.     if the keyboard being freed is the default keyboard for a task, this
  5215.       call is equivalent to CLOSE
  5216.     panel and pointer objects are automatically closed if open
  5217. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  5218. --------Q-1512--BH03-------------------------
  5219. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  5220.     AH = 12h
  5221.     BH = 03h
  5222.     BL = object
  5223.         00h mailbox handle in DWORD on top of stack
  5224.         02h sender of last msg read from mailbox (task's handle on stack)
  5225.         03h sender of last msg read from current task's mailbox
  5226. Return: DWORD on stack is task handle of message sender
  5227. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  5228. --------Q-1512--BH03-------------------------
  5229. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  5230.     AH = 12h
  5231.     BH = 03h
  5232.     BL = window to be connected
  5233.         00h handle of window to be attached in DWORD on top of stack
  5234.         01h attach current task's main window
  5235.     STACK: DWORD handle of window to attach to or 00000000h to detach
  5236. Return: STACK popped
  5237. Notes:    when two windows are connected, both will move if the user moves either
  5238.     multiple windows may be attached to a single window, but each window
  5239.       may only be attached to one window at a time
  5240. SeeAlso: AH=12h/BH=83h
  5241. --------Q-1512--BX0300-----------------------
  5242. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  5243.     AH = 12h
  5244.     BX = 0300h
  5245.     STACK: DWORD handle of panel object (see #0290)
  5246. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  5247.            DWORD address of directory
  5248. Note:    a null string is returned if the object is not open
  5249. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  5250.  
  5251. Format of TopView panel file:
  5252. Offset    Size    Description    (Table 0290)
  5253.  00h  2 BYTEs    C0h C3h
  5254.  02h    BYTE    number of panels in file
  5255.  03h    for each panel in file:
  5256.         8 BYTEs  blank-padded panel name
  5257.           DWORD  panel offset in file
  5258.           WORD   panel length
  5259.     data for panels (each consists of one or more window/query/manager
  5260.       streams); first byte of each panel must be 1Bh, fifth byte must be
  5261.       E5h
  5262. --------Q-1512--BH04-------------------------
  5263. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  5264.     AH = 12h
  5265.     BH = 04h
  5266.     BL = window to read from
  5267.         00h handle is DWORD on top of stack
  5268.         01h use calling task's default window
  5269.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5270.         0Dh (DV 2.26+) default window of parent task of current task
  5271. Return: STACK:    DWORD number of bytes read
  5272.         DWORD address of buffer
  5273. Notes:    reading starts at the current logical cursor position; the cursor is
  5274.       updated to point at the character following the last one read
  5275.     any translucent blanks (FFh) which are visible on screen are changed
  5276.       to the character which is seen through them
  5277.     the string produced by the read is placed in an input buffer which may
  5278.       be reused by the next READ or READN of a window
  5279.     window stream opcodes D8h and D9h determine whether the read returns
  5280.       characters or attributes
  5281. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  5282. --------Q-1512--BH04-------------------------
  5283. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  5284.     AH = 12h
  5285.     BH = 04h
  5286.     BL = object
  5287.         00h handle is DWORD on top of stack
  5288.         mailbox: wait for and get next message
  5289.         keyboard: wait for and get pointer to next input buffer
  5290.         pointer: wait for and get next message
  5291.         02h get next message from mailbox (task's handle on top of stack)
  5292.         03h get next message from current task's mailbox
  5293.         04h get the next input from keyboard (handle on top of stack)
  5294.         05h get the next input from task's default keyboard
  5295.         06h wait for input from any object in OBJECTQ (handle on stack)
  5296.         07h wait for input from any object in task's default OBJECTQ
  5297. Return: STACK: (if objectq) DWORD handle of object with input
  5298.            (otherwise)  DWORD number of bytes
  5299.                 DWORD address of pointer message (see #0291)
  5300. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  5301.       containing the character code as returned by the BIOS; the BIOS scan
  5302.       code is available via the STATUS call if the character is zero
  5303.     for a keyboard in field mode, the input buffer format is determined
  5304.       by the field table header for the window the keyboard is attached to
  5305.     keyboard input buffers and mailbox message buffers may be invalidated
  5306.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  5307. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  5308.  
  5309. Format of DESQview pointer message:
  5310. Offset    Size    Description    (Table 0291)
  5311.  00h    WORD    row
  5312.  02h    WORD    column
  5313.  04h    BYTE    status (see #0292)
  5314.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  5315.  
  5316. Bitfields for DESQview pointer status:
  5317. Bit(s)    Description    (Table 0292)
  5318.  7-2    number of clicks-1 if multiple-click mode active
  5319.  7    set when press/release mode active and button pressed
  5320.  6    set when press/release mode active and button released
  5321.  1-0    button pressed (00=none,01=button1,10=button2)
  5322. --------Q-1512--BX0400-----------------------
  5323. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  5324.     AH = 12h
  5325.     BX = 0400h
  5326.     STACK: DWORD timer's handle
  5327. Return: after timer expires
  5328.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  5329. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  5330. --------Q-1512--BX0400-----------------------
  5331. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  5332.     AH = 12h
  5333.     BX = 0400h
  5334.     STACK: DWORD handle of panel object
  5335.            DWORD window's handle (or 0 for current task's window)
  5336.            DWORD length of panel name
  5337.            DWORD pointer to panel name
  5338. Return: STACK: DWORD handle of window which was used
  5339.            DWORD handle of keyboard or 0
  5340. Notes:    status of APPLY may be checked with STATUS message
  5341.     panel MUST have the following format
  5342.       first byte must be 1Bh (i.e. must start with a stream)
  5343.       first opcode in stream must be E5h
  5344.         single byte arg of opcode is interpreted thus:
  5345.           bits 7,6    11 means create new window
  5346.             10 means create new field table for existing window
  5347.             01 means use existing window and field table
  5348.           bit 5 if set, panel contains a field table
  5349.             (creates a new keyboard and puts it in field mode)
  5350.           bit 4 if set, panel contains input fields
  5351.           bit 3 if set, panel contains select fields but no input fields
  5352.     if the panel contains input or select fields, a keyboard handle is
  5353.       returned; either the window's current open keyboard or a
  5354.       newly-created keyboard object.  The caller should read that keyboard
  5355.       to obtain input from the panel.
  5356. SeeAlso: AH=12h/BH=84h
  5357. --------Q-1512--BH05------------------------
  5358. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  5359.     AH = 12h
  5360.     BH = 05h
  5361.     BL = object
  5362.         00h handle is DWORD on top of stack
  5363.         timer: start timer to end at a specified time
  5364.         keyboard: add input buffer to queue
  5365.         pointer: move pointer icon to specified position
  5366.         02h send message by value/status=0 to mbox (task's handle on stack)
  5367.         03h send message by value/status=0 to current task's mailbox
  5368.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  5369.         05h add input buffer to task's default KEYBOARD queue
  5370.         06h add an object to OBJECTQ (handle on top of stack)
  5371.         07h add an object to task's default OBJECTQ
  5372.     STACK: (if mailbox)  DWORD length
  5373.                  DWORD address
  5374.            (if keyboard) DWORD status (scan code in keystroke mode)
  5375.                  DWORD length (should be 1 in keystroke mode)
  5376.                  DWORD address
  5377.            (if objectq)  DWORD handle of object to add
  5378.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  5379.                    only accurate to 1/18 sec)
  5380.            (if pointer)  DWORD column relative to origin of window
  5381.                  DWORD row relative to origin of window
  5382. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  5383.     the data and status written to a keyboard object must match the format
  5384.       returned by the keyboard object in the current mode
  5385.     the pointer position is scaled according to the current scaling factors
  5386. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  5387. --------Q-1512--BH05-------------------------
  5388. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  5389.     AH = 12h
  5390.     BH = 05h
  5391.     BL = window to write to
  5392.         00h DWORD on top of stack is window handle
  5393.         01h write string to task's default window
  5394.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5395.         0Dh (DV 2.26+) default window of parent of current task
  5396.     STACK: DWORD object handle if handle passed on stack
  5397.            DWORD total length of string (high word == 0)
  5398.            DWORD address of string to display (see #0293)
  5399. Return: indicated actions performed
  5400.     a. non-control characters are displayed (opcodes DEh and DFh control
  5401.        whether the attributes are left or changed to the current attrib)
  5402.     b. CR/LF/BS/Tab cause the usual cursor movement
  5403.     c. ESC starts a data structure with additional commands if following
  5404.        byte is less than 20h; otherwise, it is written to the window
  5405.     STACK:    DWORD handle of new window if window stream opcode E6h
  5406.         else nothing
  5407. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  5408.  
  5409. Format of stream data structure:
  5410. Offset    Size    Description    (Table 0293)
  5411.  00h    BYTE    1Bh magic value identifying start of stream
  5412.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  5413.         (see #0294,#0300,#0301,#0302)
  5414.  02h    WORD    length of remainder of stream in bytes
  5415.     var-length fields follow, each an OPCODE followed by
  5416.          zero or more args
  5417.  
  5418. (Table 0294)
  5419. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  5420. Opcodes:args
  5421.  00h  display 20h blanks with the default attribute
  5422.  01h-1Fh display OPCODE blanks with the default attribute
  5423.  20h  display char with default attribute 20h times
  5424.     BYTE char to repeat
  5425.  21h-3Fh display char with default attribute OPCODE-20h times
  5426.     BYTE char to repeat
  5427.  40h  display 20h blanks with specified attribute
  5428.     BYTE attribute of blanks
  5429.  41h-5Fh display OPCODE-40h blanks with specified attribute
  5430.     BYTE attribute of blanks
  5431.  60h  display next 20h characters
  5432.     20h BYTEs characters to display
  5433.  61h-7Fh display next OPCODE-60h characters
  5434.     N BYTEs characters to display
  5435.  80h-87h display N blanks with default attribute
  5436.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  5437.           [000h means 800h]
  5438.  88h-8Fh display N copies of the character
  5439.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  5440.           [000h means 800h]
  5441.     BYTE character to repeat
  5442.  90h-97h display N blanks with specified attribute
  5443.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  5444.           [000h means 800h]
  5445.     BYTE attribute
  5446.  98h-9Fh display string at logical cursor pos
  5447.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  5448.           [000h means 800h]
  5449.     N BYTEs string to display
  5450.  A0h  set logical cursor row
  5451.     BYTE row number (0 is top)
  5452.  A1h  set logical cursor column
  5453.     BYTE column number (0 is leftmost)
  5454.  A2h  set top edge of scrolling region
  5455.     BYTE row
  5456.  A3h  set left edge of scrolling region
  5457.     BYTE column
  5458.  A4h  set row of physical window position
  5459.     BYTE line
  5460.  A5h  set column of physical window position
  5461.     BYTE column
  5462.  A6h  set height of physical window
  5463.     BYTE number of rows
  5464.  A7h  set width of physical window
  5465.     BYTE number of columns
  5466.  A8h  set viewport row
  5467.     BYTE row
  5468.  A9h  set viewport column
  5469.     BYTE column
  5470.  AAh  set virtual screen height [contents of window unpredictable after]
  5471.     BYTE rows
  5472.  ABh  set virtual screen width [contents of window unpredictable after]
  5473.     BYTE columns
  5474.  ACh-AEh unused
  5475.  AFh  set compatible/preferred video modes
  5476.     BYTE compatibility/preference mask
  5477.         bit 7    compatible with monochrome
  5478.         bit 6    compatible with color text, EGA/VGA graphics
  5479.         bit 5    compatible with medium-resolution CGA graphics
  5480.         bit 4    compatible with high-resolution CGA graphics
  5481.         bit 3    prefer monochrome
  5482.         bit 2    prefer color text, EGA/VGA graphics
  5483.         bit 1    prefer medium-resolution CGA graphics
  5484.         bit 0    prefer high-resolution CGA graphics
  5485.  B0h  move logical cursor down
  5486.     BYTE number of rows (signed, negative values move up)
  5487.         [if rows=0 and hardware cursor owner, update hardware cursor]
  5488.  B1h  move logical cursor right
  5489.     BYTE number of columns (signed, negative values move left)
  5490.         [if cols=0 and hardware cursor owner, update hardware cursor]
  5491.  B2h  shift top edge of scrolling region
  5492.     BYTE number of rows (signed)
  5493.  B3h  shift left edge of scrolling region
  5494.     BYTE number of columns (signed)
  5495.  B4h  shift physical window down
  5496.     BYTE number of lines (signed)
  5497.  B5h  shift physical window right
  5498.     BYTE number of columns (signed)
  5499.  B6h  expand physical window vertically
  5500.     BYTE number of lines (signed)
  5501.  B7h  expand physical window horizontally
  5502.     BYTE number of columns (signed)
  5503.  B8h  adjust viewport row
  5504.     BYTE number of rows (signed)
  5505.  B9h  adjust viewport column
  5506.     BYTE number of columns (signed)
  5507.  BAh  adjust virtual screen height [contents of window unpredict after]
  5508.     BYTE number of rows to increase (signed)
  5509.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  5510.     BYTE number of columns to increase (signed)
  5511.  BCh-BFh reserved (currently unused)
  5512.  C0h  set logical cursor position
  5513.     BYTE row number (0 is top border)
  5514.     BYTE column number (0 is left border)
  5515.  C1h  set top left corner of scrolling region
  5516.     BYTE row
  5517.     BYTE column
  5518.  C2h  set physical window pos
  5519.     BYTE upper left row (no top border if 0)
  5520.     BYTE upper left column (no left border if 0)
  5521.  C3h  set current window size
  5522.     BYTE number of rows
  5523.     BYTE number of columns
  5524.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  5525.       in window)
  5526.     BYTE row
  5527.     BYTE column
  5528.  C5h  set size of virtual screen [contents unpredictable afterwards]
  5529.     BYTE number of rows
  5530.     BYTE number of columns
  5531.  C6h  unused
  5532.  C7h  unused
  5533.  C8h  set logical cursor relative to current position
  5534.     BYTE number of rows to move down (signed)
  5535.     BYTE number of columns to move right (signed)
  5536.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  5537.  C9h  shift top left corner of scrolling region
  5538.     BYTE number of rows (signed)
  5539.     BYTE number of columns (signed)
  5540.  CAh  set window pos relative to current position
  5541.     BYTE number of rows to shift down (signed)
  5542.     BYTE number of columns to shift right (signed)
  5543.  CBh  set window size relative to current size
  5544.     BYTE number of rows to expand (signed)
  5545.     BYTE number of cols to expand (signed)
  5546.  CCh  shift viewport relative to current position
  5547.     BYTE rows to shift (signed)
  5548.     BYTE cols to shift (signed)
  5549.  CDh  resize virtual screen
  5550.     BYTE number of rows to expand (signed)
  5551.     BYTE number of columns to expand (signed)
  5552.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  5553.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  5554.  D0h  allow window frame to extend beyond screen
  5555.  D1h  always display a complete frame, even if window extends beyond edge of
  5556.       screen
  5557.  D2h  allow DV to change logical colors on video mode switch (default)
  5558.  D3h  application changes logical attributes
  5559.  D4h  window is visible [must redraw to actually make visible]
  5560.  D5h  window is hidden [must redraw to actually remove]
  5561.  D6h  window has frame (default)
  5562.  D7h  window unframed [must redraw to actually remove frame]
  5563.  D8h  READ/READN will read characters from window (default)
  5564.  D9h  READ/READN will read attributes from window
  5565.  DAh  use logical attributes, which may be remapped (see #0295)
  5566.  DBh  use physical attributes for characters
  5567.  DCh  enable special actions for control characters (default)
  5568.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  5569.       call
  5570.  DEh  write both character and attribute (default)
  5571.  DFh  write character only, leave attribute untouched
  5572.  E0h  repeat following commands through E1h opcode
  5573.     BYTE number of times to repeat (00h means 256 times)
  5574.  E1h  end of commands to repeat, start repeating them
  5575.  E2h  set current output color
  5576.     BYTE color
  5577.  E3h  clear virtual screen from scroll origin to end using current color
  5578.  E4h  redraw window
  5579.  E5h  select menu style
  5580.     BYTE style (normally 18h)
  5581.         bits 5,4 = 01 use two-letter menu entries for remainder of
  5582.           this stream
  5583.  E5h  (panel file only)
  5584.     BYTE modifier
  5585.         bits 7,6 = 11 panel stream creates new window
  5586.              = 10 panel defines new field table for existing window
  5587.              = 01 panel stream uses existing window & field table
  5588.         bit 5 = 1 stream contains a field table (create kyboard object)
  5589.         bit 4 = 1 stream defines input fields (create keyboard object)
  5590.         bit 3 = 1 stream defines select fields but not input fields
  5591.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  5592.         bit 1 reserved
  5593.         bit 0 reserved
  5594.  E6h  create new window and perform rest of manipulations in new window
  5595.     BYTE number of rows
  5596.     BYTE number of columns
  5597.     Return: DWORD object handle of new window returned on stack at end
  5598.     Note:    the window is created with a physical size of 0x0 at the
  5599.           same position as the window to which this stream was sent
  5600.  E7h  no operation
  5601.  E8h  scroll area up (top left corner defined by opcode C1h)
  5602.     BYTE height
  5603.     BYTE width
  5604.  E9h  scroll area down (top left corner defined by opcode C1h)
  5605.     BYTE height
  5606.     BYTE width
  5607.  EAh  scroll area left (top left corner defined by opcode C1h)
  5608.     BYTE height
  5609.     BYTE width
  5610.  EBh  scroll area right (top left corner defined by opcode C1h)
  5611.     BYTE height
  5612.     BYTE width
  5613.  ECh  set logical attributes for window contents
  5614.     BYTE video modes command applies to
  5615.         bit 7    monochrome
  5616.         bit 6    color text, EGA/VGA graphics
  5617.         bit 5    medium-resolution CGA graphics
  5618.         bit 4    high-resolution CGA graphics
  5619.     BYTE which attributes to set
  5620.         bit 7    if set, copy single following byte to indicated attribs
  5621.         bits 4-6  number of first attribute to change - 1
  5622.         bits 0-3  number of consecutive attributes to change
  5623.     N BYTEs new attributes
  5624.  EDh  set logical attributes for window frame
  5625.     BYTE video modes command applies to (see opcode ECh)
  5626.     BYTE which attributes to set
  5627.         bit 7    if set, copy single following byte to indicated attrs
  5628.         bits 4-6  number of first attribute to change - 1
  5629.         bits 0-3  number of consecutive attributes to change
  5630.     N BYTEs new attributes
  5631.           attributes
  5632.                1 = top left corner
  5633.                2 = top right corner
  5634.                3 = bottom left corner
  5635.                4 = bottom right corner
  5636.                5 = top edge
  5637.                6 = bottom edge
  5638.                7 = left edge
  5639.                8 = right edge
  5640.  EEh  set characters for window frame
  5641.     BYTE video modes command applies to (see opcode ECh)
  5642.     BYTE which characters to set
  5643.         bit 7    if set, copy single following byte to indicated chars
  5644.         bits 4-6  number of first character to change - 1
  5645.         bits 0-3  number of consecutive characters to change
  5646.     N BYTEs new chars (same relative position as attributes above)
  5647.  EFh  set window name
  5648.     BYTE length of name (should be in range 0 to logical screen width)
  5649.     N BYTEs name
  5650.  F0h  clear input field to blanks
  5651.     BYTE field number
  5652.  F1h  fill input field with character
  5653.     BYTE field number
  5654.     BYTE char
  5655.  F2h  set color of input field
  5656.     BYTE field number (1-N)
  5657.     BYTE attribute
  5658.  F3h  set initial contents of input field
  5659.     BYTE field number (1-N)
  5660.     N BYTEs enough chars to exactly fill field as defined by op FFh
  5661.  F4h  position cursor to start of specific input field
  5662.     BYTE field number (1-N)
  5663.  F5h  change field table entry
  5664.     BYTE field number
  5665.     7-8 BYTEs field table entry (see opcode FFh below)
  5666.  F6h  set field type
  5667.     BYTE field number
  5668.     BYTE type
  5669.         00h inactive
  5670.         40h output field
  5671.         80h input field
  5672.         C0h deselected field
  5673.         C2h selected field
  5674.  F7h  "broadcast write"    write data to fields with program output bit set in
  5675.       the field table entry, in field number order
  5676.     N BYTEs (total length of all program output fields)
  5677.  F8h  scroll field up a line
  5678.     BYTE field number
  5679.  F9h  scroll field down a line
  5680.     BYTE field number
  5681.  FAh  scroll field left
  5682.     BYTE field number
  5683.  FBh  scroll field right
  5684.     BYTE field number
  5685.  FCh  set field table header
  5686.     6 BYTEs    field table header (see #0296)
  5687.  FDh  reset modified bit for all fields
  5688.  FEh  reset selected and modified bits for all fields
  5689.  FFh  set up input fields
  5690.     6 BYTEs    table header (see #0296)
  5691.     7/8N BYTEs the field table entries, one for each field (see #0298)
  5692.     Note:    DESQview uses and updates the actual copy of the information
  5693.           which is contained in the stream.  Thus this info must remain
  5694.           intact until after the data entry is complete.
  5695.  
  5696. (Table 0295)
  5697. Values for TopView logical attributes:
  5698.  01h    normal text
  5699.  02h    highlighted normal text
  5700.  03h    help text
  5701.  04h    highlighted help text
  5702.  05h    error message
  5703.  06h    highlighted error message
  5704.  07h    emphasized text
  5705.  08h    marked text
  5706.  9-16    reverse video versions of 1-8
  5707.  
  5708. Format of TopView field table header:
  5709. Offset    Size    Description    (Table 0296)
  5710.  00h    BYTE    number of fields (must be <= existing number of fields)
  5711.  01h    BYTE    screen behavior bits (see #0297)
  5712.  02h    BYTE    current input field (updated by DESQview)
  5713.  03h    BYTE    current select field (updated by DESQview)
  5714.  04h    BYTE    attribute for select fields when they are pointed at
  5715.  05h    BYTE    attribute for select fields which have been selected
  5716.  
  5717. Bitfields for TopView screen behavior bits:
  5718. Bit(s)    Description    (Table 0297)
  5719.  7    reserved
  5720.  6    menu items may be selected via keyboard
  5721.  5    left mouse button in "status" mode (press anywhere in window
  5722.       immediately returns control to application)
  5723.  4    right mouse button in "status" mode
  5724.  3    select fields return contents or blanks rather than 'Y' or 'N'
  5725.  2    modified bits reset on return to application
  5726.  1-0    type of data returned
  5727.     00 no data returned on read of keyboard
  5728.     01 data returned as array of characters containing all fields packed
  5729.           together, with no field numbers
  5730.     10 data returned as numbered variable-length records for all fields
  5731.     11 data returned as numbered variable-length records for the fields
  5732.           which were modified
  5733.  
  5734. Format of TopView field table entry:
  5735. Offset    Size    Description    (Table 0298)
  5736.  00h    BYTE    start row      \
  5737.  01h    BYTE    start column  \ if menu selection and start is to
  5738.  02h    BYTE    end row       / right or below end, select from kbd only
  5739.  03h    BYTE    end column   /
  5740.  04h    BYTE    field type (see #0299)
  5741.  05h    BYTE    modifier
  5742.         if type is fill-in, then bit flags to determine behavior
  5743.           bit 7     automatically enter CR when field full
  5744.           bit 6     move to next field when current field is full
  5745.           bit 5     enter text from right end (for numbers)
  5746.           bit 4     force input to uppercase
  5747.           bit 3     clear old contents on first keystroke
  5748.           bit 2     input returned when cursor moves out of
  5749.               modified field ("validate", API level 2.02+)
  5750.           bit 1     reserved
  5751.           bit 0     reserved
  5752.         if select field, first key to press to activate
  5753.           00h if have to point-&-click or is an extended-ASCII
  5754.               keystroke (only if two-key menus enabled)
  5755.  06h    BYTE    (select field only) normal color of field
  5756.  07h    BYTE    second key for select field.  This byte is present iff
  5757.           two-letter menu entries selected with opcode E5h, and in that
  5758.           case is present regardless of field type
  5759.  
  5760. Bitfields for TopView field type:
  5761. Bit(s)    Description    (Table 0299)
  5762.  7,6    field class
  5763.     00 inactive (non-entry) field
  5764.     01 echos keystrokes input to make menu selection
  5765.     10 fill-in field
  5766.     11 select field
  5767.  5    field can be filled by broadcast write (F7h opcode)
  5768.  4    reserved
  5769.  3    reserved
  5770.  2    reserved
  5771.  1    set if field selected
  5772.  0    set if field modified
  5773.  
  5774. (Table 0300)
  5775. Values for MODE 01h "QUERY STREAM" opcodes:
  5776. (valid only for those opcodes listed here)
  5777.  A0h return logical cursor row in next byte
  5778.  A1h return logical cursor column in next byte
  5779.  A2h return top row of scrolling region in next byte
  5780.  A3h return left column of scrolling region in next byte
  5781.  A4h return row of physical window origin in next byte
  5782.  A5h return column of physical window origin in next byte
  5783.  A6h return height of physcial window in next byte
  5784.  A7h return width of physical window in next byte
  5785.  A8h return row of viewport origin in next byte
  5786.  A9h return column of viewport origin in next byte
  5787.  AAh return height of virtual screen in next byte
  5788.  ABh return width of virtual screen in next byte
  5789.  AFh return current video mode in next byte
  5790.  C0h return current logical cursor position in next two bytes
  5791.  C1h return top left corner of scrolling region in next two bytes
  5792.  C2h return current window position in next two bytes
  5793.  C3h return current window size in next two bytes
  5794.  C4h return current viewport origin in next two bytes
  5795.  C5h return current virtual screen size in next two bytes
  5796.  D0h \ overwritten with D0h if frames may fall off screen edge
  5797.  D1h /               D1h if frames always displayed entirely
  5798.  D2h \ overwritten with D2h if DESQview controls color palette
  5799.  D3h /               D3h if application changes color palette
  5800.  D4h \ overwritten with D4h if window visible
  5801.  D5h /               D5h if window hidden
  5802.  D6h \ overwritten with D6h if window has frame
  5803.  D7h /               D7h if window unframed
  5804.  D8h \ overwritten with D8h if reading characters from window
  5805.  D9h /               D9h if reading attributes from window
  5806.  DAh \ overwritten with DAh if using logical attributes
  5807.  DBh /               DBh if using physical attributes
  5808.  DCh \ overwritten with DCh if TTY control char interpretation on
  5809.  DDh /               DDh if TTY control char interpretation off
  5810.  DEh \ overwritten with DEh if writing both characters and attributes
  5811.  DFh /               DFh if leaving attributes untouched
  5812.  E2h return current color in next byte
  5813.  ECh get logical attributes for window contents
  5814.     BYTE execute call if currently in specified video mode
  5815.         bit 7    monochrome
  5816.         bit 6    color text, EGA/VGA graphics
  5817.         bit 5    medium-resolution CGA graphics
  5818.         bit 4    high-resolution CGA graphics
  5819.     BYTE which attributes to get
  5820.         bit 7    unused???
  5821.         bits 4-6 first attribute to get - 1
  5822.         bits 0-3 number of consecutive attributes
  5823.     N BYTEs buffer to hold attributes
  5824.  EDh get logical attributes for window frame
  5825.     BYTE execute call if currently in video mode (see opcode ECh)
  5826.     BYTE which attributes to get
  5827.         bit 7    unused???
  5828.         bits 4-6 first attribute to get - 1
  5829.         bits 0-3 number of consecutive attributes
  5830.     N BYTEs buffer to hold attributes
  5831.  EEh get characters for window frame
  5832.     BYTE execute call if currently in video mode (see opcode ECh)
  5833.     BYTE which attributes to get
  5834.         bit 7    unused???
  5835.         bits 4-6 first char to get - 1
  5836.         bits 0-3 number of consecutive chars
  5837.     N BYTEs buffer to hold chars
  5838.  EFh return first N characters of current window name
  5839.     BYTE    max length of returned name
  5840.     N BYTEs buffer to hold window name
  5841.  F3h return contents of specified field
  5842.     BYTE field number
  5843.     N BYTEs buffer to hold field contents (size equal to field size)
  5844.  F5h get field table entry
  5845.     BYTE field number
  5846.     7-8 BYTEs buffer to hold field table entry (see #0298)
  5847.     Notes:    DV < 2.26 always returns 7 bytes
  5848.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  5849.           is using 8-byte entries and eighth byte after    F5h is E7h
  5850.           (NOP); otherwise, 7 bytes are returned
  5851.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  5852.           on the field table entry size
  5853.  F6h get type of a field
  5854.     BYTE field number
  5855.     BYTE type
  5856.  FCh get field table header
  5857.     6 BYTEs buffer to store field table header (see #0296)
  5858.  
  5859. (Table 0301)
  5860. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  5861.  00h allow window to be moved horizontally
  5862.  01h allow window to be moved vertically
  5863.  02h allow window to change width
  5864.  03h allow window to change height
  5865.  04h allow window to be scrolled horizontally
  5866.  05h allow window to be scrolled vertically
  5867.  06h allow "Close Window" menu selection for application
  5868.  07h allow "Hide Window" menu selection for application
  5869.  08h allow application to be suspended ("Rearrange/Freeze")
  5870.  0Eh allow "Scissors" menu
  5871.  10h allow DESQview main menu to be popped up
  5872.  11h allow "Switch Windows" menu
  5873.  12h allow "Open Window" menu
  5874.  13h allow "Quit" menu selection
  5875.  20h-33h opposite of 00h-13h, disallow specified action
  5876.  40h notify if horizontal position of window changes
  5877.  41h notify if vertical position of window changes
  5878.  42h notify if width of window changes
  5879.  43h notify if height of window changes
  5880.  44h notify if window scrolled horizontally
  5881.  45h notify if window scrolled vertically
  5882.  46h notify if window is closed--program has to clean up and exit itself
  5883.  47h notify if window is hidden
  5884.  48h notify if "?" on main menu selected
  5885.  49h notify if pointer message sent to window
  5886.  4Ah notify if window is placed in foreground
  5887.  4Bh notify if window is placed in background
  5888.  4Ch notify if video mode changes
  5889.  4Dh notify if "Scissors" menu "Cut" option selected
  5890.  4Eh notify if "Scissors" menu "Copy" option selected
  5891.  4Fh notify if "Scissors" menu "Paste" option selected
  5892.  50h notify if DESQview main menu about to pop up
  5893.  51h notify if DESQview main menu popped down
  5894.  60h-71h     opposite of 40h-51h: don't notify on specified event
  5895.  84h attach window to parent task's window (both move together)
  5896.  85h detach window from parent task's window (may move independently)
  5897.  86h disable background operation for application
  5898.  87h enable running in background
  5899.  88h set minimum size of physical window
  5900.     BYTE rows
  5901.     BYTE columns
  5902.  89h set maximum size of physical window
  5903.     BYTE rows
  5904.     BYTE cols
  5905.  8Ah set primary asynchronous notification routine (see #0303)
  5906.     DWORD address of routine, 0000h:0000h means none (see also below)
  5907.  8Bh set async notification parameter
  5908.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  5909.  ACh (DV2.2+) perform regular select field attribute processing
  5910.  ADh (DV2.2+) protect attributes in selected field from being lost
  5911.  AEh make window default notify window for owning app (API level 2.00+)
  5912.  AFh set selected field marker character
  5913.     BYTE character to display at left edge of selected fields
  5914.  BCh set standard field processing mode
  5915.  BDh set alternate field processing mode (enables cursor pad for menus)
  5916.  BEh disables changing reverse logical attributes with ECh opcode
  5917.  BFh enables changing reverse logical attributes with ECh opcode
  5918.  C0h make current window topmost in system
  5919.  C1h force current process into foreground
  5920.  C2h make current window topmost in process
  5921.  C3h position mouse pointer relative to origin of current field
  5922.     BYTE rows below upper left corner of field
  5923.     BYTE columns to right of upper left corner of field
  5924.  C4h position mouse pointer relative to origin of given field
  5925.     BYTE field number
  5926.     BYTE rows below upper left corner of field
  5927.     BYTE columns to right of upper left corner of field
  5928.  C5h orphan current window (also hides it)
  5929.     Note: must be last in stream; all subsequent commands ignored
  5930.  C6h show all windows for this process
  5931.  C7h hide all windows for this process
  5932.  C8h suspend process and hide all its windows
  5933.  C9h force current process into background
  5934.  CAh make current window bottom-most in process
  5935.  CBh cancel current window manager operation, remove DV menu, give control
  5936.       to topmost application
  5937.  CCh orphan window and give it to the system for use as paste data
  5938.  CEh reorder windows
  5939.     DWORD pointer to null-terminated list of words; each word is segment
  5940.           of object handle for a window
  5941.  FFh no operation
  5942.  
  5943. (Table 0302)
  5944. Values for MODES 14h to 1Fh "USER STREAMS":
  5945.     normally NOPs, but may be defined by SETESC message to invoke FAR
  5946.     routines, one for each mode number
  5947.       on entry to handler,
  5948.         DS:SI -> first byte of actual stream (not header)
  5949.         CX = number of bytes in stream
  5950.         ES:DI = window's handle
  5951.  
  5952. (Table 0303)
  5953. Values asynchronous notification routine defined by man.stream 8Ah called with:
  5954.     ES:DI = handle of window
  5955.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  5956.        mailbox contains message indicating event
  5957.           Opcode
  5958.            40h  horizontal movement
  5959.            DWORD object handle of window
  5960.            BYTE     new row
  5961.            BYTE     new col
  5962.            41h  vertical movement
  5963.            DWORD object handle of window
  5964.            BYTE     new row
  5965.            BYTE     new col
  5966.            42h  horizontal size change
  5967.            DWORD object handle of window
  5968.            BYTE     new rows
  5969.            BYTE     new cols
  5970.            43h  vertical size change
  5971.            DWORD object handle of window
  5972.            BYTE     new rows
  5973.            BYTE     new cols
  5974.            44h  scrolled horizontally
  5975.            DWORD object handle of window
  5976.            BYTE     mouse row within window
  5977.            BYTE     mouse column within window
  5978.            BYTE     field mouse is on, 0 if none
  5979.            BYTE     amount moved: >0 right, <0 left, 0 done
  5980.            45h  scrolled vertically
  5981.            DWORD object hande of window
  5982.            BYTE     mouse row within window
  5983.            BYTE     mouse column within window
  5984.            BYTE     field mouse is on, 0 if none
  5985.            BYTE     amount moved: >0 down, <0 up, 0 done
  5986.            46h  window close request
  5987.            DWORD object handle of window
  5988.            BYTE     mouse pointer row
  5989.            BYTE     mouse pointer column
  5990.            BYTE     field mouse is on, 0 if none
  5991.            47h  application's windows hidden
  5992.            48h  Help for Program selected
  5993.            DWORD object handle of window
  5994.            BYTE     mouse pointer row
  5995.            BYTE     mouse pointer column
  5996.            BYTE     field mouse is on, 0 if none
  5997.            49h  pointer message sent to window
  5998.            DWORD pointer handle which received message
  5999.            4Ah  switched to window from another ("raise")
  6000.            4Bh  switched away from the window ("lower")
  6001.            4Ch  video mode changed
  6002.            BYTE new BIOS video mode
  6003.            4Dh  Scissors/cUt selected
  6004.            DWORD object handle of window
  6005.            BYTE     row of upper left corner
  6006.            BYTE     column of upper left corner
  6007.            BYTE     field number ul corner is in, 0=none
  6008.            DWORD handle of orphaned window created with
  6009.              copy of data from specified region
  6010.            BYTE     height of region
  6011.            BYTE     width of region
  6012.            4Eh  Scissors/Copy selected
  6013.            DWORD object handle of window
  6014.            BYTE     row of upper left corner
  6015.            BYTE     column of upper left corner
  6016.            BYTE     field number ul corner is in, 0=none
  6017.            DWORD handle of orphaned window created with
  6018.              copy of data from specified region
  6019.            BYTE     height of region
  6020.            BYTE     width of region
  6021.            4Fh  Scissors/Paste selected
  6022.            DWORD object handle of window
  6023.            BYTE     row of upper left corner
  6024.            BYTE     column of upper left corner
  6025.            BYTE     field number ul corner is in, 0=none
  6026.            DWORD handle of orphaned window with data
  6027.            BYTE     height of region
  6028.            BYTE     width of region
  6029.             Note: orphaned data window should be adopted or freed
  6030.                 when done
  6031.            50h  main menu about to pop up
  6032.            51h  main menu popped down
  6033. Return: all registers unchanged
  6034. --------Q-1512--BH06-------------------------
  6035. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  6036.     AH = 12h
  6037.     BH = 06h
  6038.     BL = object
  6039.         00h object handle in DWORD on top of stack
  6040.         mailbox, keyboard, pointer, or timer
  6041.         (DV 2.50+) window
  6042.         01h (DV 2.50+) current task's window
  6043.         04h given task's keyboard (task's handle on top of stack)
  6044.         05h current task's default keyboard
  6045.     STACK: DWORD new priority of object in task's OBJECTQ
  6046.             (new priority of task if window handle)
  6047. Notes:    initially all objects have the same default value.  Should only make
  6048.       relative adjustments to this default value.
  6049.     when changing priorities, all objects already on the objectq are
  6050.       reordered
  6051.     for window handles, only the non-blocked task(s) with the highest
  6052.       priority receive CPU time under DESQview 2.50-2.52; the default
  6053.       priority is 0Ah
  6054. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  6055. --------Q-1512--BH07-------------------------
  6056. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  6057.     AH = 12h
  6058.     BH = 07h
  6059.     BL = object
  6060.         00h object handle in DWORD on top of stack
  6061.         mailbox, keyboard, pointer, or timer
  6062.         (DV 2.50+) window
  6063.         01h (DV 2.50+) current task's window
  6064.         04h given task's keyboard (task's handle on top of stack)
  6065.         05h current task's default keyboard
  6066. Return: STACK: DWORD object priority
  6067. Note:    initially all objects have the same default value.  Should only make
  6068.       relative adjustments to this default value.
  6069. SeeAlso: AH=12h/BH=06h
  6070. --------Q-1512--BH08-------------------------
  6071. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  6072.     AH = 12h
  6073.     BH = 08h
  6074.     BL = object
  6075.         00h handle in DWORD on top of stack
  6076.         window: total character positions in window
  6077.         timer: elapsed time since timer started
  6078.         pointer: number of messages queued to pointer object
  6079.         panel: number of panels in panel file
  6080.         keyboard: number of input buffers queued
  6081.         01h total chars in current task's default window
  6082.         02h number of messages in task's mailbox (task's handle on stack)
  6083.         03h number of messages in current task's mailbox
  6084.         04h number of input buffers queued in task's kbd (handle on stack)
  6085.         05h number of input buffers queued for current task's default kbd
  6086.         06h number of objects queued in OBJECTQ (task's handle on stack)
  6087.         07h number of objects queued in current task's OBJECTQ
  6088.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  6089.         0Dh (DV 2.26+) total chars in parent task's window
  6090. Return: DWORD on top of stack is result
  6091. Note:    for panel objects, a count of zero is returned if no panel file is open
  6092.       for the object
  6093. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  6094. --------Q-1512--BH09-------------------------
  6095. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  6096.     AH = 12h
  6097.     BH = 09h
  6098.     BL = object
  6099.         00h handle in DWORD on top of stack
  6100.         window: get chars/line
  6101.         timer: get 1/100 seconds remaining before timer expires
  6102.         mailbox: (DV/X) get number of bytes queued to mailbox
  6103.         01h get number of chars/line in current task's default window
  6104.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  6105.         0Dh (DV 2.26+) get chars/line in parent task's window
  6106. Return: DWORD on top of stack is length
  6107. SeeAlso: AH=12h/BH=08h
  6108. --------Q-1512--BH0A-------------------------
  6109. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  6110.     AH = 12h
  6111.     BH = 0Ah
  6112.     BL = window to write to
  6113.         00h window handle is DWORD on top of stack
  6114.         01h current task's default window
  6115.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6116.         0Dh (DV 2.26+) default window of parent of current task
  6117.     STACK:    DWORD count of attributes
  6118.         DWORD address of attribute string
  6119.         DWORD count of characters
  6120.         DWORD address of character string
  6121. Notes:    if one string is longer than the other, the shorter one will be reused
  6122.       until the longer one is exhausted
  6123.     the cursor is left just after the last character written
  6124. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  6125. --------Q-1512--BH0A-------------------------
  6126. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  6127.     AH = 12h
  6128.     BH = 0Ah
  6129.     BL = mailbox to write to
  6130.         00h handle is DWORD on top of stack
  6131.         02h default mailbox of task whose handle is on top of stack
  6132.         03h current task's default mailbox
  6133.     STACK:    DWORD    status (low byte)
  6134.         DWORD    length of message
  6135.         DWORD    address of message
  6136. Notes:    the message is copied into either system or common memory
  6137.     insufficient memory normally causes the process to be aborted; under
  6138.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  6139. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  6140. --------Q-1512--BH0A-------------------------
  6141. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  6142.     AH = 12h
  6143.     BH = 0Ah
  6144.     BL = object
  6145.         00h handle is DWORD on top of stack
  6146.         timer: start timer for specified interval
  6147.         pointer: set control flags (see #0305)
  6148.         keyboard: set control flags (see #0304)
  6149.         04h set control flags on KEYBOARD object (handle on top of stack)
  6150.         05h set control flags on task's default KEYBOARD object
  6151.     STACK: (if timer)   DWORD duration in 1/100 seconds
  6152.            (otherwise)  DWORD bits to set
  6153. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  6154.  
  6155. Bitfields for DESQview keyboard object bits:
  6156. Bit(s)    Description    (Table 0304)
  6157.  15    reserved, can't be set
  6158.  14    unused
  6159.  13    reserved, can't be set
  6160.  12-6    unused
  6161.  5    (DV 2.2+) exclusive input
  6162.  4    filter all keys (used with handler established by SETESC)
  6163.     if 0, only keys that would normally be displayed are filtered
  6164.  3    program continues executing while input in progress
  6165.  2    insert mode active for field mode
  6166.  1    hardware cursor displayed when task is hardware cursor owner
  6167.     must be set if keyboard in field mode and field table includes input
  6168.       fields
  6169.  0    keyboard is in field mode rather than keystroke mode
  6170.  
  6171. Bitfields for DESQview pointer object bits:
  6172. Bit(s)    Description    (Table 0305)
  6173.  15    reserved, can't be set
  6174.  14-8    unused
  6175.  7    mouse pointer is hidden while in window
  6176.  6    get messages even if window not topmost
  6177.  5    get messages even if window not foreground
  6178.  4    multiple clicks separated by less than 1/3 second are counted and
  6179.       returned in a single message
  6180.  3    pointer position is relative to screen origin, not window origin
  6181.  2    send message on button release as well as button press
  6182.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  6183.       pointer leaves the window
  6184.  0    send message only on button activity, not movement
  6185.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  6186. --------Q-1512--BH0B-------------------------
  6187. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  6188.     AH = 12h
  6189.     BH = 0Bh
  6190.     BL = window to write attributes to
  6191.         00h handle is DWORD on top of stack
  6192.         01h current task's default window
  6193.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6194.         0Dh (DV 2.26+) default window of parent of current task
  6195.     STACK:    DWORD number of attributes to write
  6196.         DWORD address of attributes
  6197. Note:    the attributes are written starting at the current cursor position; the
  6198.       cursor is left just after the last position written
  6199. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  6200. --------Q-1512--BH0B-------------------------
  6201. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  6202.     AH = 12h
  6203.     BH = 0Bh
  6204.     BL = mailbox to write to
  6205.         00h handle is DWORD on top of stack
  6206.         02h default mailbox of task whose handle is on top of stack
  6207.         03h current task's default mailbox
  6208.     STACK:    DWORD    status (low byte)
  6209.         DWORD    length of message
  6210.         DWORD    address of message
  6211. Notes:    only a pointer to the message is stored, but the write may still fail
  6212.       due to insufficient memory
  6213.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  6214. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  6215. --------Q-1512--BH0B-------------------------
  6216. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  6217.     AH = 12h
  6218.     BH = 0Bh
  6219.     BL = OBJECTQ from which to remove all copies of a particular object
  6220.         06h OBJECTQ of task whose handle is on top of stack
  6221.         07h task's default OBJECTQ
  6222.     STACK:    DWORD    handle of object to remove
  6223. Note:    should be sent whenever an object is erased or closed
  6224. --------Q-1512--BH0B-------------------------
  6225. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  6226.     AH = 12h
  6227.     BH = 0Bh
  6228.     BL = object
  6229.         00h handle is DWORD on top of stack
  6230.         pointer: reset control flags
  6231.         keyboard: reset control flags
  6232.         04h clear control flags on KEYBOARD object (handle on top of stack)
  6233.         05h clear control flags on task's default KEYBOARD object
  6234.     STACK:    DWORD    which bits to clear (see #0304,#0305)
  6235. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  6236. --------Q-1512--BH0C-------------------------
  6237. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  6238.     AH = 12h
  6239.     BH = 0Ch
  6240.     BL = object
  6241.         00h handle is DWORD on top of stack
  6242.         window:      fill with given character from scroll origin to end
  6243.         keyboard: attach to a window
  6244.         timer:      open
  6245.         pointer:  start taking input for window
  6246.         panel:      associate with a panel file
  6247.         01h fill task's default window with given char from scrl org to end
  6248.         02h open given task's mailbox for input (task's handle on stack)
  6249.         03h open current task's mailbox
  6250.         04h attach a KEYBOARD to a window (handle on top of stack)
  6251.         05h attach task's default KEYBOARD to a window
  6252.         06h open a task's OBJECTQ (task's handle on top of stack)
  6253.         07h open current task's OBJECTQ
  6254.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  6255.         0Dh (DV 2.26+) fill default window of parent of current task
  6256.      STACK: (if window)   DWORD character to fill with
  6257.         (if keyboard) DWORD handle of window to attach to
  6258.         (if pointer)  DWORD handle of window to attach to
  6259.         (if panel)    DWORD length of filename or resident panel
  6260.                   DWORD address of filename or resident panel
  6261.         (otherwise)   nothing
  6262. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  6263.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  6264.       the panel file
  6265.     result code of open may be retrieved with STATUS message
  6266.     logical cursor is left at scroll origin after filling window
  6267.     the task opening a mailbox becomes its owner, and the only task allowed
  6268.       to read the mailbox
  6269.     messages are only sent to a pointer object when the mouse is positioned
  6270.       in the window to which the pointer has been attached
  6271.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  6272.       messages automatically open the timer
  6273. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  6274. --------Q-1512--BH0D-------------------------
  6275. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  6276.     AH = 12h
  6277.     BH = 0Dh
  6278.     BL = object
  6279.         00h handle is DWORD on top of stack
  6280.         timer:      close
  6281.         keyboard: detach from window and discard queued input
  6282.         pointer:  stop taking input
  6283.         panel:      close
  6284.         mailbox:  close, unlock, and discard any pending messages
  6285.         02h close given task's mailbox (task's handle on top of stack)
  6286.         03h close task's default mailbox
  6287.         04h close KEYBOARD object (handle on top of stack)
  6288.         05h close task's default KEYBOARD
  6289.         06h close given task's OBJECTQ (task's handle on top of stack)
  6290.         07h close current task's OBJECTQ
  6291. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  6292.       ERASE message (AH=12h/BH=0Eh)
  6293.     when a panel object is closed, the panel file and any panels currently
  6294.       in use are freed; window and keyboard objects created by APPLY are
  6295.       not affected, but field mode input ceases
  6296.     open but idle timer objects consume a small amount of CPU time
  6297. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  6298. --------Q-1512--BH0E-------------------------
  6299. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  6300.     AH = 12h
  6301.     BH = 0Eh
  6302.     BL = object
  6303.         00h handle is DWORD on top of stack
  6304.         window:      clear from scroll origin to end of window
  6305.         keyboard: discard input
  6306.         timer:      cancel current interval
  6307.         pointer:  discard all pending messages
  6308.         mailbox:  discard all pending messages
  6309.         01h clear task's default window from scroll origin to end
  6310.         02h discard all queued messages in mailbox (handle on top of stack)
  6311.         03h discard all queued messages in current task's default mailbox
  6312.         04h discard all input queued to KEYBOARD (handle on top of stack)
  6313.         05h discard all input queued to task's default KEYBOARD
  6314.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  6315.         07h remove all objects from current task's OBJECTQ
  6316.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  6317.         0Dh (DV 2.26+) clear default window of parent of current task
  6318. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  6319. SeeAlso: AH=12h/BH=02h
  6320. --------Q-1512--BH0F-------------------------
  6321. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  6322.     AH = 12h
  6323.     BH = 0Fh
  6324.     BL = object
  6325.         00h handle is DWORD on top of stack
  6326.         timer:     is it running?
  6327.         pointer: return status of last message
  6328.         panel:     verify success of last OPEN or APPLY
  6329.         02h return status of last msg READ from mailbox (handle on stack)
  6330.         03h return status of last msg READ from task's default mailbox
  6331.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  6332.         05h get status of last msg from task's default KEYBOARD
  6333.         06h return whether OBJECTQ is open or not (handle on top of stack)
  6334.         07h return whether task's default OBJECTQ is open or not
  6335. Return: DWORD on top of stack is status
  6336. Notes:    if object is a panel object, the status indicates the error code:
  6337.       00h successful
  6338.       14h panel name not in panel directory
  6339.       15h not enough memory to apply panel
  6340.       16h invalid panel format
  6341.       17h panel file already open
  6342.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  6343.       95h not enough memory to open panel file     > that the panel was
  6344.       98h null panel file name            /  not opened
  6345.     if object is a timer, the status is:
  6346.       00000000h open but not running
  6347.       40000000h open and running
  6348.       80000000h closed
  6349.     if object is an OBJECTQ, the status is:
  6350.       00000000h open
  6351.       80000000h closed
  6352.     if object is a keyboard in keystroke mode, the status is the extended
  6353.       character code (scan code) of the last keystroke
  6354.     if object is a keyboard in field mode, the status indicates the reason
  6355.       for the last return from the field manager
  6356.       00h Enter key pressed
  6357.       01h Button 1 or keystroke selection
  6358.       02h Button 2
  6359.       03h validation
  6360.       04h auto Enter on field
  6361.       1Bh Escape pressed
  6362.       46h ^Break pressed
  6363.       other: extended code for key terminating input
  6364.     the status of mailbox messages sent by the window manager is always 80h
  6365.     the status of a pointer message is the same as the status field in the
  6366.       message
  6367. SeeAlso: AH=12h/BH=04h"READ"
  6368. --------Q-1512--BH10-------------------------
  6369. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  6370.     AH = 12h
  6371.     BH = 10h
  6372.     BL = object
  6373.         00h handle is DWORD on top of stack
  6374.         window: return TRUE if logical cursor past end of window
  6375.         mailbox: ???
  6376.         01h returns TRUE if logical cursor past end of task's def window
  6377.         02h return ??? for task's mailbox (task's handle on top of stack)
  6378.         03h return ??? for current task's mailbox
  6379.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  6380.         0Dh (DV 2.26+) check log cursor of window of parent task
  6381. Return: DWORD on top of stack is status
  6382. --------Q-1512--BH11-------------------------
  6383. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  6384.     AH = 12h
  6385.     BH = 11h
  6386.     BL = window for which to move cursor
  6387.         00h window's handle is DWORD on top of stack
  6388.         01h task's default window
  6389.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6390.         0Dh (DV 2.26+) default window of parent of current task
  6391.     STACK: DWORD column
  6392.            DWORD row
  6393. --------Q-1512--BH11-------------------------
  6394. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  6395.     AH = 12h
  6396.     BH = 11h
  6397.     BL = mailbox to name
  6398.         00h DWORD on top of stack is mailbox handle
  6399.         02h use given task's mailbox (task's handle on top of stack)
  6400.         03h use current task's default mailbox
  6401.     STACK: DWORD length of name
  6402.            DWORD address of name
  6403. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  6404. --------Q-1512--BX1100-----------------------
  6405. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  6406.     AH = 12h
  6407.     BX = 1100h
  6408.     STACK: DWORD object handle for pointer object
  6409.            DWORD number of colums to scale pointer position to
  6410.            DWORD number of rows to scale pointer position to
  6411. SeeAlso: AH=12h/BX=1200h
  6412. --------Q-1512--BH12-------------------------
  6413. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  6414.     AH = 12h
  6415.     BH = 12h
  6416.     BL = window to read from
  6417.         00h handle is DWORD on top of stack
  6418.         01h read next N chars or attributes on task's default window
  6419.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  6420.         0Dh (DV 2.26+) read default window of parent of current task
  6421.     STACK: DWORD count
  6422. Return: STACK: DWORD number of bytes actually read
  6423.            DWORD address of buffer containing data
  6424. Notes:    reading starts at the current logical cursor position; the cursor is
  6425.       updated to point at the character following the last one read
  6426.     any translucent blanks (FFh) which are visible on screen are changed
  6427.       to the character which is seen through them
  6428.     the string produced by the read is placed in an input buffer which may
  6429.       be reused by the next READ or READN of a window
  6430.     window stream opcodes D8h and D9h determine whether the read returns
  6431.       characters or attributes
  6432. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  6433. --------Q-1512--BH12-------------------------
  6434. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  6435.     AH = 12h
  6436.     BH = 12h
  6437.     BL = mailbox for which to retrieve name
  6438.         00h DWORD on top of stack is mailbox handle
  6439.         02h use given task's mailbox (task's handle on top of stack)
  6440.         03h use current task's default mailbox
  6441.     STACK: DWORD length of buffer for name
  6442.            DWORD pointer to buffer
  6443. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  6444. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  6445. Note:    the returned name is not NUL-terminated
  6446. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  6447. --------Q-1512--BX1200-----------------------
  6448. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  6449.     AH = 12h
  6450.     BX = 1200h
  6451.     STACK: DWORD object handle for pointer
  6452. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  6453.            DWORD pointer pos scaled as if window were this many rows high
  6454. SeeAlso: AH=12h/BX=1100h
  6455. --------Q-1512--BH13-------------------------
  6456. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  6457.     AH = 12h
  6458.     BH = 13h
  6459.     BL = window object
  6460.         00h DWORD on top of stack is handle for window to redraw
  6461.         01h redraw task's default window
  6462.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  6463.         0Dh (DV 2.26+) redraw default window of parent of current task
  6464. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  6465. --------Q-1512--BH13-------------------------
  6466. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  6467.     AH = 12h
  6468.     BH = 13h
  6469.     BL = mailbox from which to read
  6470.         00h DWORD on top of stack is mailbox handle
  6471.         02h use given task's mailbox (task's handle on top of stack)
  6472.         03h use current task's default mailbox
  6473.     STACK: DWORD size of buffer in bytes
  6474.            DWORD pointer to buffer
  6475. Return: STACK: DWORD number of bytes read
  6476. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  6477. Notes:    this call blocks if no input is available, but will return less than
  6478.       the requested number of bytes if some (but insufficient) data is
  6479.       available
  6480.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  6481.       4 or 5 set, as common memory may be exhausted by that call when
  6482.       attempting to read the next message
  6483. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  6484. --------Q-1512--BX1300-----------------------
  6485. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  6486.     AH = 12h
  6487.     BX = 1300h
  6488.     STACK: DWORD object handle for pointer
  6489.            DWORD character to use for pointer
  6490. Return: STACK popped
  6491. --------Q-1512--BH14-------------------------
  6492. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  6493.     AH = 12h
  6494.     BH = 14h
  6495.     BL = message modifier
  6496.         00h handle is DWORD on top of stack
  6497.         01h define user stream
  6498.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  6499.         05h intercept keystrokes from task's default KEYBOARD to a window
  6500.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  6501.                  DWORD address of FAR user stream handler
  6502.            (if keyboard) DWORD address of FAR filter function (see #0306)
  6503. Return: STACK popped
  6504.  
  6505. (Table 0306)
  6506. Values keyboard filter function is called with when keyboard is in field mode:
  6507.     AL = character
  6508.     AH = 00h or extended ASCII code if AL = 00h
  6509.     BL = field number
  6510.     CH = cursor column
  6511.     CL = cursor row
  6512.     DL = field type modifier (sixth item in field table entry)
  6513.     DH = seventh item in field table entry
  6514.     ES:SI = window's handle
  6515.     DS:DI -> field table entry for field containing the cursor
  6516. Return:    AH = action to take
  6517.         00h use keystroke
  6518.         01h ignore keystroke
  6519.         FFh beep and ignore keystroke
  6520. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  6521. --------Q-1512--BH14-------------------------
  6522. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  6523.     AH = 12h
  6524.     BH = 14h
  6525.     BL = object
  6526.         00h mailbox handle is DWORD on top of stack
  6527.         02h use given task's mailbox (task's handle on top of stack)
  6528.         03h use current task's default mailbox
  6529. Return: STACK popped if BL=00h
  6530. Note:    release exclusive access by sending CLOSE message to mailbox
  6531.     access may be requested multiple times, and requires multiple CLOSEs
  6532. SeeAlso: AH=12h/BH=0Dh
  6533. --------Q-1512--BH15-------------------------
  6534. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  6535.     AH = 12h
  6536.     BH = 15h
  6537.     BL = object
  6538.         00h DWORD on top of stack
  6539.         mailbox, keyboard, or pointer only
  6540.         02h mailbox for task whose handle is on top of stack
  6541.         03h mailbox for current task
  6542.         04h keyboard for task whose handle is on top of stack
  6543.         05h keyboard for current task
  6544.     STACK: DWORD flags (see #0307,#0308)
  6545. Return: STACK popped
  6546. Notes:    only available if the API level has been set to at least 2.20
  6547.     equivalent to performing SUBFROM and ADDTO calls on the object
  6548.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  6549.       "READ" (see AH=12h/BX=1300h"READINTO") to retrieve messages
  6550. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  6551.  
  6552. Bitfields for DESQview mailbox object flags:
  6553. Bit(s)    Description    (Table 0307)
  6554.  0    all mail messages in common memory
  6555.  1    allow write even if closed
  6556.  2    don't erase messages when mailbox closed
  6557.  4    (DV/X) append messages with like status and sender (stream-oriented 
  6558.       mail)
  6559.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  6560.  6    (DV/X) make mailbox into non-owned mailbox
  6561.  
  6562. Bitfields for DESQview keyboard object flags:
  6563. Bit(s)    Description    (Table 0308)
  6564.  5    exclusive input when keyboard in use for input
  6565. --------Q-1512--BH16-------------------------
  6566. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  6567.     AH = 12h
  6568.     BH = 16h
  6569.     BL = object
  6570.         00h DWORD on top of stack
  6571.         mailbox, keyboard, or pointer only
  6572.         02h mailbox for task whose handle is on top of stack
  6573.         03h mailbox for current task
  6574.         04h keyboard for task whose handle is on top of stack
  6575.         05h keyboard for current task
  6576. Return: STACK: DWORD current control flags (see #0307,#0308)
  6577. Notes:    only available if the API level has been set to at least 2.20
  6578.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  6579.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  6580. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  6581. --------Q-1512--BH17-------------------------
  6582. INT 15 - DESQview v2.42-2.52 - BUG
  6583.     AH = 12h
  6584.     BH = 17h
  6585.     BL = object
  6586.         00h DWORD on top of stack
  6587.         mailbox, keyboard, or pointer only
  6588.         02h mailbox for task whose handle is on top of stack
  6589.         03h mailbox for current task
  6590.         04h keyboard for task whose handle is on top of stack
  6591.         05h keyboard for current task
  6592. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  6593.       keyboards, and pointers, but causes a random branch
  6594.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  6595. --------Q-1512--BH80-------------------------
  6596. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  6597.     AH = 12h
  6598.     BH = 80h
  6599. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  6600.       not pop up a "Programming Error" window, instead returning an error
  6601.       code in AL (see #0309)
  6602. SeeAlso: AH=12h/BH=00h
  6603.  
  6604. (Table 0309)
  6605. Values for DESQview error code:
  6606.  00h    no error
  6607.  01h    invalid values
  6608.  02h    alias invalid
  6609.  03h    handle valid but wrong type
  6610.  04h    invalid handle
  6611. --------Q-1512--BH81-------------------------
  6612. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  6613.     AH = 12h
  6614.     BH = 81h
  6615. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  6616.       not pop up a "Programming Error" window, instead returning an error
  6617.       code in AL (see #0309)
  6618. SeeAlso: AH=12h/BH=01h
  6619. --------Q-1512--BH82-------------------------
  6620. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  6621.     AH = 12h
  6622.     BH = 82h
  6623. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  6624.       not pop up a "Programming Error" window, instead returning an error
  6625.       code in AL (see #0309)
  6626. SeeAlso: AH=12h/BH=02h
  6627. --------Q-1512--BH83-------------------------
  6628. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  6629.     AH = 12h
  6630.     BH = 83h
  6631. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  6632.       not pop up a "Programming Error" window, instead returning an error
  6633.       code in AL (see #0309)
  6634. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  6635. --------Q-1512--BH84-------------------------
  6636. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  6637.     AH = 12h
  6638.     BH = 84h
  6639. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  6640.       not pop up a "Programming Error" window, instead returning an error
  6641.       code in AL (see #0309)
  6642. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  6643. --------Q-1512--BH85-------------------------
  6644. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  6645.     AH = 12h
  6646.     BH = 85h
  6647. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  6648.       not pop up a "Programming Error" window, instead returning an error
  6649.       code in AL (see #0309)
  6650. SeeAlso: AH=12h/BH=05h
  6651. --------Q-1512--BH86-------------------------
  6652. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  6653.     AH = 12h
  6654.     BH = 86h
  6655. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  6656.       not pop up a "Programming Error" window, instead returning an error
  6657.       code in AL (see #0309)
  6658. SeeAlso: AH=12h/BH=06h
  6659. --------Q-1512--BH87-------------------------
  6660. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  6661.     AH = 12h
  6662.     BH = 87h
  6663. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  6664.       not pop up a "Programming Error" window, instead returning an error
  6665.       code in AL (see #0309)
  6666. SeeAlso: AH=12h/BH=07h
  6667. --------Q-1512--BH88-------------------------
  6668. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  6669.     AH = 12h
  6670.     BH = 88h
  6671. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  6672.       not pop up a "Programming Error" window, instead returning an error
  6673.       code in AL (see #0309)
  6674. SeeAlso: AH=12h/BH=08h
  6675. --------Q-1512--BH89-------------------------
  6676. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  6677.     AH = 12h
  6678.     BH = 89h
  6679. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  6680.       not pop up a "Programming Error" window, instead returning an error
  6681.       code in AL (see #0309)
  6682. SeeAlso: AH=12h/BH=09h
  6683. --------Q-1512--BH8A-------------------------
  6684. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  6685.     AH = 12h
  6686.     BH = 8Ah
  6687. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  6688.       not pop up a "Programming Error" window, instead returning an error
  6689.       code in AL (see #0309)
  6690. SeeAlso: AH=12h/BH=0Ah
  6691. --------Q-1512--BH8B-------------------------
  6692. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  6693.     AH = 12h
  6694.     BH = 8Bh
  6695. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  6696.       not pop up a "Programming Error" window, instead returning an error
  6697.       code in AL (see #0309)
  6698. SeeAlso: AH=12h/BH=0Bh
  6699. --------Q-1512--BH8C-------------------------
  6700. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  6701.     AH = 12h
  6702.     BH = 8Ch
  6703. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  6704.       not pop up a "Programming Error" window, instead returning an error
  6705.       code in AL (see #0309)
  6706. SeeAlso: AH=12h/BH=0Ch
  6707. --------Q-1512--BH8D-------------------------
  6708. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  6709.     AH = 12h
  6710.     BH = 8Dh
  6711. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  6712.       not pop up a "Programming Error" window, instead returning an error
  6713.       code in AL (see #0309)
  6714. SeeAlso: AH=12h/BH=0Dh
  6715. --------Q-1512--BH8E-------------------------
  6716. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  6717.     AH = 12h
  6718.     BH = 8Eh
  6719. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  6720.       not pop up a "Programming Error" window, instead returning an error
  6721.       code in AL (see #0309)
  6722. SeeAlso: AH=12h/BH=0Eh
  6723. --------Q-1512--BH8F-------------------------
  6724. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  6725.     AH = 12h
  6726.     BH = 8Fh
  6727. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  6728.       not pop up a "Programming Error" window, instead returning an error
  6729.       code in AL (see #0309)
  6730. SeeAlso: AH=12h/BH=0Fh
  6731. --------Q-1512--BH90-------------------------
  6732. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  6733.     AH = 12h
  6734.     BH = 90h
  6735. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  6736.       not pop up a "Programming Error" window, instead returning an error
  6737.       code in AL (see #0309)
  6738. SeeAlso: AH=12h/BH=10h
  6739. --------Q-1512--BH91-------------------------
  6740. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  6741.     AH = 12h
  6742.     BH = 91h
  6743. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  6744.       not pop up a "Programming Error" window, instead returning an error
  6745.       code in AL (see #0309)
  6746. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  6747. --------Q-1512--BH92-------------------------
  6748. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  6749.     AH = 12h
  6750.     BH = 92h
  6751. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  6752.       not pop up a "Programming Error" window, instead returning an error
  6753.       code in AL (see #0309)
  6754. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  6755. --------Q-1512--BH93-------------------------
  6756. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  6757.     AH = 12h
  6758.     BH = 93h
  6759. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  6760.       not pop up a "Programming Error" window, instead returning an error
  6761.       code in AL (see #0309)
  6762. SeeAlso: AH=12h/BH=13h
  6763. --------Q-1512--BH94-------------------------
  6764. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  6765.     AH = 12h
  6766.     BH = 94h
  6767. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  6768.       not pop up a "Programming Error" window, instead returning an error
  6769.       code in AL (see #0309)
  6770. SeeAlso: AH=12h/BH=14h
  6771. --------Q-1512--BH95-------------------------
  6772. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  6773.     AH = 12h
  6774.     BH = 95h
  6775. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  6776.       not pop up a "Programming Error" window, instead returning an error
  6777.       code in AL (see #0309)
  6778. SeeAlso: AH=12h/BH=15h
  6779. --------Q-1512--BH96-------------------------
  6780. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  6781.     AH = 12h
  6782.     BH = 96h
  6783. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  6784.       not pop up a "Programming Error" window, instead returning an error
  6785.       code in AL (see #0309)
  6786. SeeAlso: AH=12h/BH=16h
  6787. --------T-1513-------------------------------
  6788. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  6789.     AH = 13h
  6790.     STACK:    WORD    process ID
  6791. Return: AX = status (SYS_OK or SYS_ERROR)
  6792. SeeAlso: AH=12h"VMiX"
  6793. --------T-1513-------------------------------
  6794. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  6795.     AH = 13h
  6796. Return: BX:AX -> task control block (see #0310)
  6797. SeeAlso: AH=15h"MultiDOS"
  6798.  
  6799. Format of MultiDOS Plus v4.0 task control block:
  6800. Offset    Size    Description    (Table 0310)
  6801.  00h    DWORD    pointer to next TCB
  6802.  04h  8 BYTEs    ASCIZ task name
  6803.  0Ch  2 BYTEs    ???
  6804.  0Eh    WORD    task PSP segment
  6805.  10h    WORD    abort/suspend flags
  6806.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  6807.  14h    WORD    priority level (0000h-FFFEh)
  6808.  16h    WORD    time slice counter
  6809.  18h  2 BYTEs    ???
  6810.  1Ah    WORD    suspend timer value
  6811.  1Ch    WORD    stack segment
  6812.  1Eh    WORD    stack pointer
  6813.  20h    WORD    display type
  6814.  22h    WORD    display memory
  6815.  24h  2 BYTEs    ???
  6816.  26h    WORD    termination count
  6817.  28h    WORD    equipment flag for BIO10 driver
  6818.  2Ah    BYTE    background CRT mode
  6819.  2Bh    WORD    screen width in columns
  6820.  2Dh    WORD    screen size in bytes
  6821.  2Fh    WORD    segment of physical screen memory
  6822.  31h 16 BYTEs    eight cursor positions
  6823.  41h    WORD    current cursor shape
  6824.  43h    BYTE    active display page
  6825.  44h    WORD    CRT controller I/O port base
  6826.  46h  2 BYTEs    ???
  6827.  48h    WORD    foreground task flag
  6828.  4Ah  6 BYTEs    ???
  6829.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  6830.  52h    DWORD    old INT 22
  6831.  56h    DWORD    old INT 23
  6832.  5Ah    DWORD    old INT 24
  6833.  5Eh    WORD    top of memory for task
  6834.  60h  4 BYTEs    ???
  6835.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  6836.  66h    WORD    DTA offset
  6837.  68h  4 BYTEs    ???
  6838.  6Ch    BYTE    current ANSI.SYS attribute
  6839.  6Dh    BYTE    current ANSI.SYS column
  6840.  6Eh    BYTE    current ANSI.SYS row
  6841.  6Fh    BYTE    current ANSI.SYS display state
  6842.  70h    BYTE    maximum ANSI.SYS columns
  6843.  71h    BYTE    current ANSI.SYS page
  6844.  72h    WORD    saved ANSI.SYS cursor position
  6845.  74h    BYTE    ANSI.SYS parameter buffer index
  6846.  75h    BYTE    current ANSI.SYS screen mode
  6847.  76h    BYTE    ANSI.SYS wrap flag
  6848.  77h  6 BYTEs    ANSI.SYS parameter buffer
  6849.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  6850.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  6851.  85h  3 BYTEs    ???
  6852.  88h 16 BYTEs    request header for DOS driver calls
  6853.  98h 14 BYTEs    ???
  6854.  A6h    WORD    segment of EMS map if EMS task
  6855.  A8h    WORD    flag: task makes EMS calls
  6856.  AAh    WORD    EMS handle for task
  6857.  ACh    WORD    keyboard shift state
  6858.  AEh 12 BYTEs    ???
  6859.  BAh    WORD    TCB of parent if child task
  6860.  BCh    WORD    termination code
  6861.  BEh    WORD    COM port number
  6862.  C0h  4 BYTEs    ???
  6863.  C4h    WORD    current IRQ number
  6864.  C6h  2 BYTEs    ???
  6865.  C8h    WORD    miscellaneous flag word
  6866.  CAh  2 BYTEs    ???
  6867.  CCh    DWORD    old INT 10
  6868.  D0h    WORD    EMS alternate map set number
  6869.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  6870. --------T-1514-------------------------------
  6871. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  6872.     AH = 14h
  6873.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  6874.         WORD    bottom right corner of window (high = row, low = col)
  6875. Return: AX = status (SYS_OK)
  6876. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  6877. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  6878. --------T-1514-------------------------------
  6879. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  6880.     AH = 14h
  6881. Return: AX = current state
  6882.         0000h MultiDOS Plus command prompt is background task
  6883.         0001h command prompt is foreground task
  6884. SeeAlso: AH=0Bh"MultiDOS"
  6885. --------T-1515-------------------------------
  6886. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  6887.     AH = 15h
  6888.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  6889. Return: AX = status (SYS_OK)
  6890. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  6891. --------T-1515-------------------------------
  6892. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  6893.     AH = 15h
  6894. Return: BX:AX -> system block (see #0311)
  6895. SeeAlso: AH=13h"MultiDOS"
  6896.  
  6897. Format of MultiDOS Plus 4.0 system block:
  6898. Offset    Size    Description    (Table 0311)
  6899.  00h    WORD    segment of system control block
  6900.  02h    WORD    redirection flag set by /NOREDIRECT
  6901.  04h    WORD    no-INT 10 flag set by /NO10
  6902.  06h    DWORD    old INT 10
  6903.  0Ah    DWORD    new INT 10
  6904.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0310)
  6905.  12h    DWORD    pointer to WORD with idle task TCB offset
  6906.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0310)
  6907.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0310)
  6908.  1Eh    WORD    Task Control Block size
  6909.  20h    WORD    number of TCBs
  6910.  22h    WORD    flag: EMS present
  6911.  24h    WORD    EMS page frame base segment
  6912.  26h    WORD    16K pages in EMS page frame
  6913.  28h    WORD    base segment for conventional memory tasks
  6914.  2Ah    WORD    conventional memory size in paragraphs
  6915.  2Ch    DWORD    pointer to list of queue pointers
  6916. --------T-1516-------------------------------
  6917. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  6918.     AH = 16h
  6919.     STACK:    DWORD    pointer to I/O Request Packet
  6920.         WORD    top left corner of window (high byte = row, low = col)
  6921.         WORD    bottom right corner of window (high = row, low = col)
  6922. Return: AX = status (SYS_OK or SYS_ERROR)
  6923. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  6924. --------T-1516-------------------------------
  6925. INT 15 - MultiDOS Plus - INITIALIZATION
  6926.     AH = 16h
  6927. Note:    used internally during initialization; any other calls will cause
  6928.       unpredictable results
  6929. --------T-1517-------------------------------
  6930. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  6931.     AH = 17h
  6932. Return: AH = foreground color
  6933.     AL = background color
  6934. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  6935. --------T-1517-------------------------------
  6936. INT 15 - MultiDOS Plus - MAP IRQ
  6937.     AH = 17h
  6938.     AL = IRQ to map (01h-0Fh)
  6939.     BX = offset of task control block (see #0310) to associate with IRQ
  6940. Return: AX = status
  6941.         0000h successful
  6942.         other invalid IRQ
  6943. Note:    the EMS map of the specified TCB is associated with the given interrupt
  6944. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  6945. --------T-1518-------------------------------
  6946. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  6947.     AH = 18h
  6948.     STACK:    WORD    new background/foreground colors
  6949.             bits 3-0: foreground
  6950.             bits 7-4: background
  6951.             bits 15-8: unused
  6952. Return: AX = color
  6953. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  6954. --------T-1518-------------------------------
  6955. INT 15 - MultiDOS Plus - UNMAP IRQ
  6956.     AH = 18h
  6957.     AL = IRQ to unmap (01h-0Fh)
  6958. Return: AX = status
  6959.         0000h successful
  6960.         0001h invalid IRQ
  6961. Note:    results are unpredictable if the IRQ has not been mapped
  6962. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  6963. --------T-1519-------------------------------
  6964. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  6965.     AH = 19h
  6966.     STACK:    WORD    new background/foreground colors
  6967.             bits 3-0: foreground
  6968.             bits 7-4: background
  6969.             bits 15-8: unused
  6970. Return: AX = color
  6971. SeeAlso: AH=18h"VMiX"
  6972. --------T-1519-------------------------------
  6973. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  6974.     AH = 19h
  6975. Return: AX destroyed
  6976. Note:    for MultiDOS internal use only
  6977. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  6978. --------T-151A-------------------------------
  6979. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  6980.     AH = 1Ah
  6981.     STACK:    WORD    interrupt number
  6982.         DWORD    pointer to register structure
  6983. Return: AX = returned flags
  6984. --------T-151A-------------------------------
  6985. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  6986.     AH = 1Ah
  6987.     DS:SI -> 8-byte name
  6988. Return: AL = status
  6989.         00h successful
  6990.         AH = semaphore number (20h-3Fh)
  6991.         04h out of string space
  6992. Notes:    all eight bytes of the name are significant
  6993.     if the name does not already exist, it is added to the name table and
  6994.       associated with a free semaphore number
  6995.     names cannot be destroyed
  6996. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  6997. --------T-151B-------------------------------
  6998. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  6999.     AH = 1Bh
  7000.     STACK:    DWORD    source address
  7001.         DWORD    destination address
  7002.         WORD    number of words to move
  7003. Return: nothing
  7004. --------T-151B-------------------------------
  7005. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  7006.     AH = 1Bh
  7007.     DS:SI -> 8-byte name
  7008. Return: AH = status
  7009.         00h successful
  7010.         02h invalid semaphore number
  7011.         03h caller already owns semaphore
  7012.         04h out of string space
  7013. Notes:    (see AH=01h"MultiDOS")
  7014.     equivalent to AH=1Ah followed by AH=01h
  7015. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  7016. --------T-151C-------------------------------
  7017. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  7018.     AH = 1Ch
  7019.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  7020.         DWORD    pointer to object bitmap
  7021.         WORD    object width in pixels
  7022.         WORD    object height in pixels
  7023. Return: nothing
  7024. SeeAlso: AH=1Dh"VMiX"
  7025. --------T-151C-------------------------------
  7026. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  7027.     AH = 1Ch
  7028.     DS:SI -> 8-byte name
  7029. Return: AH = status
  7030.         00h successful
  7031.         01h not semaphore owner
  7032.         02h invalid semaphore number
  7033.         04h out of string space
  7034. Notes:    (see AH=02h"MultiDOS")
  7035.     equivalent to AH=1Ah followed by AH=02h
  7036. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  7037. --------T-151D-------------------------------
  7038. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  7039.     AH = 1Dh
  7040. Return: AX = current font number (00h-03h)
  7041. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  7042. --------T-151D-------------------------------
  7043. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  7044.     AH = 1Dh
  7045.     DS:SI -> 8-byte name
  7046. Return: AH = status
  7047.         00h semaphore not in use
  7048.         01h semaphore owned by another task
  7049.         02h invalid semaphore number
  7050.         03h caller owns semaphore
  7051.         04h out of string space
  7052. Notes:    (see AH=10h"MultiDOS")
  7053.     equivalent to AH=1Ah followed by AH=10h
  7054. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  7055. --------T-151E-------------------------------
  7056. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  7057.     AH = 1Eh
  7058.     STACK: WORD new font number (00h-03h)
  7059. Return: AX = current font number (00h-03h)
  7060. SeeAlso: AH=1Dh"VMiX"
  7061. --------T-151E00-----------------------------
  7062. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  7063.     AX = 1E00h
  7064.     DX = event/trigger number (00h-3Fh)
  7065. Return: AH = status
  7066.         00h successful
  7067. SeeAlso: AX=1E01h,AX=1E02h
  7068. --------T-151E01-----------------------------
  7069. INT 15 - MultiDOS Plus - TRIGGER EVENT
  7070.     AX = 1E01h
  7071.     DX = event/trigger number (00h-3Fh)
  7072. Return: AH = status
  7073.         00h successful
  7074.         01h invalid event/trigger number
  7075. Notes:    schedules any task waiting for event; if no task is waiting, the event
  7076.       counter is incremented (and will roll over if it was 65535)
  7077.     may be invoked by interrupt handler
  7078. SeeAlso: AX=1E00h,AX=1E02h
  7079. --------T-151E02-----------------------------
  7080. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  7081.     AX = 1E02h
  7082.     DX = event/trigger number (00h-3Fh)
  7083. Return: AH = status
  7084.         00h successful
  7085.         01h invalid event/trigger number
  7086. Note:    if the event counter is zero, the task is suspended until the event is
  7087.       triggered with AX=1E01h; else, the counter is decremented and the
  7088.       call returns immediately
  7089. SeeAlso: AX=1E00h,AX=1E01h
  7090. --------T-151E08-----------------------------
  7091. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  7092.     AX = 1E08h
  7093.     DX:BX -> context save handler (see #0312)
  7094.     DX:CX -> context restore handler (see #0312)
  7095. Note:    handlers may be removed by setting addresses to 0000h:0000h
  7096.  
  7097. (Table 0312)
  7098. Values MultiDOS Plus context-switch handlers are called with:
  7099.     ES:BX -> task's TCB
  7100. Return: all registers preserved
  7101. --------T-151F-------------------------------
  7102. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  7103.     AH = 1Fh
  7104.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  7105.         WORD    bottom right corner of window
  7106. Return: AX = status (SYS_OK)
  7107. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  7108. --------T-151F-------------------------------
  7109. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  7110.     AH = 1Fh
  7111. Return: BX = first segment of conventional memory
  7112.     DX = first segment of EMS swap frame into which MultiDOS will load
  7113.         programs
  7114. --------T-1520-------------------------------
  7115. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  7116.     AH = 20h
  7117. Return: AX = current state
  7118.         0000h multitasking enabled
  7119.         other TCB of task that disabled multitasking
  7120. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  7121. --------c-152000-----------------------------
  7122. INT 15 U - DOS 3+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  7123.     AX = 2000h
  7124. Desc:    stop setting user flag on entry to PRINT critical region
  7125. Note:    also supported by PC Network v1.00 RECEIVER.COM
  7126. SeeAlso: AX=2001h
  7127. --------c-152001-----------------------------
  7128. INT 15 U - DOS 3+ PRINT.COM - SET CRITICAL REGION FLAG
  7129.     AX = 2001h
  7130.     ES:BX -> byte which is to be incremented while in a DOS call
  7131. Desc:    specify a user flag which PRINT should set to let an interested
  7132.       application know it is in a critical region
  7133. Note:    also supported by PC Network v1.00 RECEIVER.COM
  7134. SeeAlso: AX=2000h
  7135. --------O-152010-----------------------------
  7136. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  7137.     AX = 2010h
  7138.     ???
  7139. Return: ???
  7140. SeeAlso: AX=2011h
  7141. --------O-152011-----------------------------
  7142. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  7143.     AX = 2011h
  7144.     ???
  7145. Return: ???
  7146. SeeAlso: AX=2010h
  7147. --------B-1521-------------------------------
  7148. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  7149.     AH = 21h
  7150.     AL = subfunction
  7151.         00h read POST log
  7152.         01h write POST log
  7153.         BH = device ID
  7154.         BL = error code
  7155. Return: CF set on error
  7156.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  7157.     if function 00h:
  7158.        BX = number of error codes stored
  7159.        ES:DI -> error log
  7160. Notes:    the log is a series of words, the first byte of which identifies the
  7161.       error code and the second the device.
  7162.     supported by AMI PCI BIOS
  7163. --------B-1522-------------------------------
  7164. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  7165.     AH = 22h
  7166. Return: CF set on error
  7167.         AH = status (86h if function not supported)
  7168.     CF clear on success
  7169.         AH = 00h
  7170.         ES:BX -> ROM BASIC
  7171. Note:    if this function is not supported, ROM BASIC is at F600h:0000h
  7172. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  7173. --------B-152300-----------------------------
  7174. INT 15 U - SYSTEM - PS/1s - GET ??? CMOS DATA
  7175.     AX = 2300h
  7176. Return: CF clear if successful
  7177.         CL = value of CMOS location 2Dh
  7178.         CH = value of CMOS location 2Eh
  7179.     CF set on error
  7180.         AH = error code (80h,86h)
  7181. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  7182. --------B-152301-----------------------------
  7183. INT 15 U - SYSTEM - PS/1s - SET ??? CMOS DATA
  7184.     AX = 2301h
  7185.     CL = new value for CMOS location 2Dh
  7186.     CH = new value for CMOS location 2Eh
  7187. Return: CF clear if successful
  7188.     CF set on error
  7189.         AH = error code (80h,86h)
  7190. Note:    sets the contents of CMOS locations 2Dh and 2Eh
  7191. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  7192. --------B-152304-----------------------------
  7193. INT 15 U - SYSTEM - PS/1s - SYSTEM SETUP
  7194.     AX = 2304h
  7195.     DX = segment of 32K buffer
  7196. Return: CF clear if successful
  7197.         AX = 0003h (left over from setting video mode 3)
  7198.         BX,CX,DX,BP,DS,ES destroyed
  7199.     CF set on error
  7200.         AH = error code (80h,86h)
  7201. SeeAlso: AX=2301h,AX=2305h
  7202. ----------152305-----------------------------
  7203. INT 15 U - SYSTEM - PS/1s - GET PROCESSOR SPEED
  7204.     AX = 2305h
  7205. Return: CF clear if successful
  7206.         AL = processor speed in MHz
  7207.     CF set on error
  7208.         AL = FFh (speed > 80 MHz)
  7209.         AL = error code (80h,86h = unsupported function)
  7210. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  7211. --------b-152400-----------------------------
  7212. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  7213.     AX = 2400h
  7214. Return: CF clear if successful
  7215.         AH = 00h
  7216.     CF set on error
  7217.         AH = status
  7218.         01h keyboard controller is in secure mode
  7219.         86h function not supported
  7220. Note:    also supported by Qualitas 386MAX v6.01+
  7221. SeeAlso: AX=2401h,AX=2402h,AX=2403h
  7222. --------b-152401-----------------------------
  7223. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  7224.     AX = 2401h
  7225. Return: CF clear if successful
  7226.         AH = 00h
  7227.     CF set on error
  7228.         AH = status
  7229.         01h keyboard controller is in secure mode
  7230.         86h function not supported
  7231. Note:    also supported by Qualitas 386MAX v6.01+
  7232. SeeAlso: AX=2400h,AX=2402h
  7233. --------b-152402-----------------------------
  7234. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  7235.     AX = 2402h
  7236. Return: CF clear if successful
  7237.         AH = 00h
  7238.         AL = current state (00h disabled, 01h enabled)
  7239.     CF set on error
  7240.         AH = status
  7241.         01h keyboard controller is in secure mode
  7242.         86h function not supported
  7243. Note:    also supported by Qualitas 386MAX v6.01+
  7244. SeeAlso: AX=2400h,AX=2401h
  7245. --------b-152403-----------------------------
  7246. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  7247.     AX = 2403h
  7248. Return: CF clear if successful
  7249.         AH = 00h
  7250.         BX = status of A20 gate support (see #0313)
  7251.     CF set on error
  7252.         AH = status
  7253.         01h keyboard controller is in secure mode
  7254.         86h function not supported
  7255. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  7256. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  7257.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  7258.       thus causing a random branch on any value of AL greater than 3.
  7259. SeeAlso: AX=2402h
  7260.  
  7261. Bitfields for A20 gate support status:
  7262. Bit(s)    Description    (Table 0313)
  7263.  0    supported on keyboard controller
  7264.  1    supported with bit 1 of I/O port 92h
  7265.  15    additional data is available (location not yet defined)
  7266. --------B-1540-------------------------------
  7267. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  7268.     AH = 40h
  7269.     AL = subfunction
  7270.         00h get system profile in CX and BX
  7271.         01h set system profile from CX and BX
  7272.         02h get internal modem profile in BX
  7273.         03h set internal modem profile from BX
  7274. Return: CF clear if successful
  7275.         AH = 00h
  7276.     CF set on error
  7277.         AH = status (80h = profile execution failed)
  7278. --------V-154000-----------------------------
  7279. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  7280.     AX = 4000h
  7281. Return: AX = 4000h
  7282.     CL = timeout in minutes, 00h if disabled
  7283. SeeAlso: AX=4001h,AX=4600h
  7284. --------V-154001-----------------------------
  7285. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  7286.     AX = 4001h
  7287.     CL = timeout in minutes, 00h to disable
  7288. Return: AL = status
  7289.         00h timeout modified
  7290.         01h timeout cannot be modified
  7291.         40h timeout cannot be modified
  7292.     CL = timeout in minutes, 00h if disabled
  7293. SeeAlso: AX=4000h,AX=4601h
  7294. --------B-1541-------------------------------
  7295. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  7296.     AH = 41h
  7297.     AL = condition type (see #0314)
  7298.     BH = condition compare or mask value
  7299.     BL = timeout value times 55 milliseconds
  7300.         00h means no timeout
  7301.     DX = I/O port address if AL bit 4 set
  7302.     ES:DI -> user byte if AL bit 4 clear
  7303. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  7304.       this function is supported
  7305. SeeAlso: AH=83h,AH=86h,AH=C0h
  7306.  
  7307. Bitfields for external event wait condition type:
  7308. Bit(s)    Description    (Table 0314)
  7309.  0-2    condition to wait for
  7310.     0 any external event
  7311.     1 compare and return if equal
  7312.     2 compare and return if not equal
  7313.     3 test and return if not zero
  7314.     4 test and return if zero
  7315.  3    reserved
  7316.  4    1=port address, 0=user byte
  7317.  5-7    reserved
  7318. --------B-1542-------------------------------
  7319. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  7320.     AH = 42h
  7321.     AL = suspend type
  7322.         00h to use system profile
  7323.         01h to force suspend regardless of system profile
  7324. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  7325.       power-up, execution will resume following the instruction calling
  7326.       this function
  7327. SeeAlso: AH=44h
  7328. --------b-154280-----------------------------
  7329. INT 15 - Compaq SLT/286 - ENTER STANDBY
  7330.     AX = 4280h
  7331. Return: AH = 42h
  7332.     CF clear if successful
  7333.     CF set if unable to enter standby
  7334. SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h
  7335. --------B-1543-------------------------------
  7336. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  7337.     AH = 43h
  7338. Return: AL = status bits (see #0315)
  7339.  
  7340. Bitfields for Convertible system status:
  7341. Bit(s)    Description    (Table 0315)
  7342.  7    power low
  7343.  6    external power in use
  7344.  5    standby power lost
  7345.  4    power activated by alarm
  7346.  3    internal modem powered on
  7347.  2    RS232/parallel adapter powered on
  7348.  1    reserved
  7349.  0    LCD detached
  7350. --------B-1544-------------------------------
  7351. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  7352.     AH = 44h
  7353.     AL = new modem power state (00h power off, 01h power on)
  7354. SeeAlso: AH=42h
  7355. --------b-1544C0-----------------------------
  7356. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  7357.     AX = 44C0h
  7358.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  7359.     ES:SI -> ??? buffer
  7360. Return: ES:DI -> old DSP procedure
  7361.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  7362.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  7363. Note:    this function is also supported by XBIOS.COM
  7364. SeeAlso: AX=44C9h
  7365. --------b-1544C1-----------------------------
  7366. INT 15 - Olivetti Quaderno - ???
  7367.     AX = 44C1h
  7368.     ???
  7369. Return: ???
  7370. Note:    this function is also supported by XBIOS.COM
  7371. SeeAlso: AX=44C9h
  7372. --------b-1544C2-----------------------------
  7373. INT 15 - Olivetti Quaderno - ???
  7374.     AX = 44C2h
  7375.     DL = byte to be written to I/O port 350h
  7376. Note:    this function is also supported by XBIOS.COM
  7377. SeeAlso: AX=44C3h,AX=44C9h
  7378. --------b-1544C3-----------------------------
  7379. INT 15 - Olivetti Quaderno - GET ???
  7380.     AX = 44C3h
  7381. Return: DH = bitfields (see #0316)
  7382.     DL = value read from I/O port 350h
  7383. Note:    this function is also supported by XBIOS.COM
  7384. SeeAlso: AX=44C2h,AX=44C9h
  7385.  
  7386. Bitfields for Olivetti Quaderno ???:
  7387. Bit(s)    Description    (Table 0316)
  7388.  5-7    5-7 read from I/O port 351h
  7389.  2-4    zero
  7390.  1-0    "tres complique"
  7391. --------b-1544C4-----------------------------
  7392. INT 15 - Olivetti Quaderno - ???
  7393.     AX = 44C4h and 44C5h
  7394.     ???
  7395. Return: ???
  7396. Note:    this function is also supported by XBIOS.COM
  7397. SeeAlso: AX=44C9h
  7398. --------b-1544C6-----------------------------
  7399. INT 15 - Olivetti Quaderno - READ LCD
  7400.     AX = 44C6h
  7401. Return: DX = FFFFh clock is displayed on LCD display
  7402.     DX = other: hex number displayed in first four positions of display
  7403.     BH = left alphanumeric character on display (see #0317)
  7404.     BL = right alphanumeric character on display (see #0317)
  7405.     CL = colon flags (see #0318)
  7406. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  7407.       is an alphanumeric character
  7408.     this function is also supported by XBIOS.COM
  7409. SeeAlso: AX=44C7h,AX=44C9h
  7410.  
  7411. (Table 0317)
  7412. Values for Olivetti Quaderno LCD alphanumeric characters:
  7413.  00h-0Fh hex digit
  7414.  2Bh    "+"
  7415.  2Dh    "-"
  7416.  30h-39h "0" to "9"
  7417.  41h-5Ah "A" to "Z"
  7418.  61h-6Ah "a" to "z"
  7419.  else    blank
  7420.  
  7421. Bitfields for Olivetti Quaderno LCD colon flags:
  7422. Bit(s)    Description    (Table 0318)
  7423.  0    right colon on
  7424.  1    left colon on
  7425.  2-7    unused    
  7426. --------b-1544C7-----------------------------
  7427. INT 15 - Olivetti Quaderno - WRITE LCD
  7428.     AX = 44C7h
  7429.     DX = hex display
  7430.         FFFFh display clock and "HI", "Md", or "Lo"
  7431.         BH,BL,CL unused
  7432.         other: display specified hex number in first four positions
  7433.         BH = left alphanumeric character on display (see #0317)
  7434.         BL = right alphanumeric character on display (see #0317)
  7435.         CL = colon flags (see #0318)
  7436. Note:    this function is also supported by XBIOS.COM
  7437. SeeAlso: AX=44C6h
  7438. --------b-1544C8-----------------------------
  7439. INT 15 - Olivetti Quaderno - ???
  7440.     AX = 44C8h
  7441.     CL = ??? (00h,02h,21h)
  7442.     CH = ???
  7443.     ???
  7444. Return: ???
  7445. Note:    this function is also supported by XBIOS.COM
  7446. SeeAlso: AX=44C9h
  7447. --------b-1544C9-----------------------------
  7448. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  7449.     AX = 44C9h
  7450. Return: AL = major version
  7451.     AH = minor version
  7452. Note:    this function is also supported by XBIOS.COM
  7453. --------b-154600-----------------------------
  7454. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  7455.     AX = 4600h
  7456. Return: AH = modem configuration information (see #0319)
  7457.     AL = power conservation status information (see #0320)
  7458.     BH = default system inactivity timeout (1-21 minutes)
  7459.     BL = current system inactivity timeout (1-21 minutes)
  7460.     CH = default video display inactivity timeout (1-63 minutes)
  7461.     CL = current video display inactivity timeout (1-63 minutes)
  7462.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  7463.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  7464. SeeAlso: AX=4280h,AX=4601h,INT 77
  7465.  
  7466. Bitfields for Compaq SLT/286 modem configuration information:
  7467. Bit(s)    Description    (Table 0319)
  7468.  0    powerup state (0 off, 1 on)
  7469.  1    modem installed
  7470.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  7471.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  7472.  4    modem state (0 not assigned, 1 assigned)
  7473.  5    modem is on
  7474.  
  7475. Bitfields for Compaq SLT/286 power conservation status:
  7476. Bit(s)    Description    (Table 0320)
  7477.  0    power source (0 internal, 1 external)
  7478.  1-2    low battery state
  7479.     00 no low battery condition
  7480.     01 low battery 1
  7481.     10 reserved
  7482.     11 low battery 2
  7483.  3-4    power conservation mode
  7484.     00 automatic, 01 on, 10 off, 11 reserved
  7485. --------b-154601-----------------------------
  7486. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  7487.     AX = 4601h
  7488.     BL = system inactivity timeout (1-21 minutes)
  7489.         FFh do not change
  7490.     CL = video display inactivity timeout (1-63 minutes)
  7491.         FFh do not change
  7492.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  7493.         FFh do not change
  7494.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  7495. Return: CF clear if successful
  7496.         AH = 00h
  7497.         BL = current system inactivity timeout (1-21 minutes)
  7498.         CL = current video display inactivity timeout (1-63 minutes)
  7499.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  7500.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  7501.     CF set on error
  7502.         AH = error code
  7503.         01h input is out of range
  7504.         02h no modem present
  7505. SeeAlso: AX=4600h,INT 77
  7506. --------b-154604-----------------------------
  7507. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  7508.     AX = 4604h
  7509. Return: CF clear if successful
  7510.         AL = byte read from I/O port 03F8h
  7511.     CF set on error (not supported)
  7512.         AH = 86h (unsupported function)
  7513. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  7514. --------b-154605-----------------------------
  7515. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  7516.     AX = 4605h
  7517. Return: CF clear if successful
  7518.     CF set on error (not supported)
  7519.         AH = 86h (unsupported function)
  7520. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  7521.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  7522.       LTE Lite 386 ROM
  7523. --------J-154900-----------------------------
  7524. INT 15 - Far East MS-DOS - GET BIOS TYPE
  7525.     AX = 4900h
  7526. Return: CF clear if successful
  7527.         AH = 00h
  7528.         BL = BIOS mode
  7529.         00h DOS/V
  7530.         01h standard DBCS DOS (hardware DBCS support)
  7531.     CF set on error
  7532.         AH = 86h (function not supported)
  7533. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  7534. SeeAlso: AH=50h,INT 21/AH=30h
  7535. --------b-154DD4-----------------------------
  7536. INT 15 - HP 95LX - INSTALLATION CHECK
  7537.     AX = 4DD4h
  7538. Return: BX = 4850h ("HP") if HP 95LX
  7539.         CX = ??? (0101h)
  7540.         DL = ??? (00h)
  7541. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  7542. SeeAlso: INT 61"HP 95LX"
  7543. --------b-154E-------------------------------
  7544. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  7545.     AH = 4Eh
  7546.     AL = light sleep
  7547.         00h disabled
  7548.         01h enabled
  7549. Note:    when light sleep is disabled, the system will continue running at full
  7550.       speed; when enabled, it may automatically slow to conserve batteries
  7551. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  7552. --------B-154F-------------------------------
  7553. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  7554.     AH = 4Fh
  7555.     AL = hardware scan code
  7556.     CF set
  7557. Return: CF set
  7558.        AL = hardware scan code
  7559.     CF clear
  7560.        scan code should be ignored
  7561. Note:    called by INT 09 handler to translate scan codes; the INT 09 code does
  7562.       not examine the scan code it reads from the keyboard until after
  7563.       this function returns.  This permits software to rearrange the
  7564.       keyboard; for example, swapping the CapsLock and Control keys, or
  7565.       turning the right Shift key into Enter.
  7566. SeeAlso: INT 09,INT 15/AH=C0h
  7567. --------J-1550-------------------------------
  7568. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  7569.     AH = 50h
  7570.     AL = which function address to retrieve
  7571.         00h "read font" function
  7572.         01h "write font" function
  7573.     BL = 00h
  7574.     BH = character size (00h single-byte, 01h double-byte)
  7575.     DH = width of character cell
  7576.     DL = height of character cell
  7577.     BP = code page (see #0321)
  7578. Return: CF clear if successful
  7579.         AH = 00h
  7580.         ES:BX -> requested function's address
  7581.     CF set on error
  7582.         AH = error code (see #0322)
  7583. SeeAlso: AH=49h
  7584.  
  7585. (Table 0321)
  7586. Values for DOS/V code page:
  7587.  0    default
  7588.  437    US English
  7589.  932    Japanese
  7590.  934    Korea
  7591.  936    China
  7592.  938    Taiwan
  7593.  
  7594. (Table 0322)
  7595. Values for DOS/V error code:
  7596.  01h    invalid font type in BH
  7597.  02h    BL not zero
  7598.  03h    invalid font size
  7599.  04h    invalid code page
  7600.  80h    unsupported function (PC)
  7601.  86h    unsupported function (XT)
  7602. --------T-1550-------------------------------
  7603. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  7604.     AH = 50h
  7605.     BX = segment of page directory table
  7606.     CX = page number of page table
  7607. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  7608. --------T-1551-------------------------------
  7609. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  7610.     AH = 51h
  7611.     STACK:    DWORD    selector:offset of function
  7612. Return: registers as returned by function
  7613. Note:    executes function with privilege level 0 (highest privilege)
  7614. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  7615. --------B-155101-----------------------------
  7616. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  7617.     AX = 5101h
  7618. Return: CF set if successful
  7619.         AH = 00h
  7620.         AL = current configuration number
  7621.         00h system unit only
  7622.         FFh configuration not recognized
  7623.         BX = status flag
  7624.         bits 0-14: reserved
  7625.         bit 15: additional data is available (location TBD)
  7626.     CF clear on error
  7627.         AH = status
  7628.         01h expansion unit is not present
  7629.         86h function not supported
  7630. Note:    CF convention is the reverse of the standard convention for this
  7631.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  7632. --------T-1552-------------------------------
  7633. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  7634.     AH = 52h
  7635. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  7636. --------p-155300-----------------------------
  7637. INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
  7638.     AX = 5300h
  7639.     BX = device ID of system BIOS (0000h)
  7640. Return: CF clear if successful
  7641.         AH = major version (BCD)
  7642.         AL = minor version (BCD)
  7643.         BX = 504Dh ("PM")
  7644.         CX = flags (see #0323)
  7645.     CF set on error
  7646.         AH = error code (06h,86h) (see #0324)
  7647.  
  7648. Bitfields for APM flags:
  7649. Bit(s)    Description    (Table 0323)
  7650.  0    16-bit protected mode interface supported
  7651.  1    32-bit protected mode interface supported
  7652.  2    CPU idle call reduces processor speed
  7653.  3    BIOS power management disabled
  7654.  4    BIOS power management disengaged (APM v1.1)
  7655.  5-7    reserved
  7656.  
  7657. (Table 0324)
  7658. Values for APM error code:
  7659.  01h    power management functionality disabled
  7660.  02h    interface connection already in effect
  7661.  03h    interface not connected
  7662.  04h    real-mode interface not connected
  7663.  05h    16-bit protected-mode interface already connected
  7664.  06h    16-bit protected-mode interface not supported
  7665.  07h    32-bit protected-mode interface already connected
  7666.  08h    32-bit protected-mode interface not supported
  7667.  09h    unrecognized device ID
  7668.  0Ah    invalid parameter value in CX
  7669.  0Bh-1Fh reserved for other interface and general errors
  7670.  20h-3Fh reserved for CPU errors
  7671.  40h-5Fh reserved for device errors
  7672.  60h    can't enter requested state
  7673.  61h-7Fh reserved for other system errors
  7674.  80h    no power management events pending
  7675.  81h-85h reserved for other power management event errors
  7676.  86h    APM not present
  7677.  87h-9Fh reserved for other power management event errors
  7678. --------p-155301-----------------------------
  7679. INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
  7680.     AX = 5301h
  7681.     BX = device ID of system BIOS (0000h)
  7682. Return: CF clear if successful
  7683.     CF set on error
  7684.         AH = error code (02h,05h,07h,09h) (see #0324)
  7685. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  7686. --------p-155302-----------------------------
  7687. INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
  7688.     AX = 5302h
  7689.     BX = device ID of system BIOS (0000h)
  7690. Return: CF clear if successful
  7691.         AX = real-mode segment base address of protected-mode 16-bit code
  7692.         segment
  7693.         BX = offset of entry point
  7694.         CX = real-mode segment base address of protected-mode 16-bit data
  7695.         segment
  7696.         ---APM v1.1---
  7697.         SI = APM BIOS code segment length
  7698.         DI = APM BIOS data segment length
  7699.     CF set on error
  7700.         AH = error code (02h,05h,06h,07h,09h) (see #0324)
  7701. Notes:    the caller must initialize two consecutive descriptors with the
  7702.       returned segment base addresses; these descriptors must be valid
  7703.       whenever the protected-mode interface is called, and will have
  7704.       their limits arbitrarily set to 64K.
  7705.     the protected mode interface is invoked by making a far call with the
  7706.       same register values as for INT 15; it must be invoked while CPL=0,
  7707.       the code segment descriptor must have a DPL of 0, the stack must be
  7708.       in a 16-bit segment and have enough room for BIOS use and possible
  7709.       interrupts, and the current I/O permission bit map must allow access
  7710.       to the I/O ports used for power management.
  7711.     functions 00h-03h are not available from protected mode
  7712. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  7713. --------p-155303-----------------------------
  7714. INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
  7715.     AX = 5303h
  7716.     BX = device ID of system BIOS (0000h)
  7717. Return: CF clear if successful
  7718.         AX = real-mode segment base address of protected-mode 32-bit code
  7719.         segment
  7720.         EBX = offset of entry point
  7721.         CX = real-mode segment base address of protected-mode 16-bit code
  7722.         segment
  7723.         DX = real-mode segment base address of protected-mode 16-bit data
  7724.         segment
  7725.         ---APM v1.1---
  7726.         SI = APM BIOS code segment length
  7727.         DI = APM BIOS data segment length
  7728.     CF set on error
  7729.         AH = error code (02h,05h,07h,08h,09h) (see #0324)
  7730. Notes:    the caller must initialize three consecutive descriptors with the
  7731.       returned segment base addresses for 32-bit code, 16-bit code, and
  7732.       16-bit data, respectively; these descriptors must be valid whenever
  7733.       the protected-mode interface is called, and will have their limits
  7734.       arbitrarily set to 64K.
  7735.     the protected mode interface is invoked by making a far call to the
  7736.       32-bit code segment with the same register values as for INT 15; it
  7737.       must be invoked while CPL=0, the code segment descriptor must have a
  7738.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  7739.       for BIOS use and possible interrupts, and the current I/O permission
  7740.       bit map must allow access to the I/O ports used for power management.
  7741.     functions 00h-03h are not available from protected mode
  7742. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  7743. --------p-155304-----------------------------
  7744. INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
  7745.     AX = 5304h
  7746.     BX = device ID of system BIOS (0000h)
  7747. Return: CF clear if successful
  7748.     CF set on error
  7749.         AH = error code (03h,09h) (see #0324)
  7750. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  7751. --------p-155305-----------------------------
  7752. INT 15 - Advanced Power Management Specification - CPU IDLE
  7753.     AX = 5305h
  7754. Return: CF clear if successful (after system leaves idle state)
  7755.     CF set on error
  7756.         AH = error code (03h,0Bh) (see #0324)
  7757. Notes:    call when the system is idle and should be suspended until the next
  7758.       system event or interrupt
  7759.     should not be called from within a hardware interrupt handler to avoid
  7760.       reentrance problems
  7761.     if an interrupt causes the system to resume normal processing, the
  7762.       interrupt may or may not have been handled when the BIOS returns
  7763.       from this call; thus, the caller should allow interrupts on return
  7764.     interrupt handlers may not retain control if the BIOS allows
  7765.       interrupts while in idle mode even if they are able to determine
  7766.       that they were called from idle mode
  7767.     the caller should issue this call continuously in a loop until it needs
  7768.       to perform some processing of its own
  7769. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  7770. --------p-155306-----------------------------
  7771. INT 15 - Advanced Power Management Specification - CPU BUSY
  7772.     AX = 5306h
  7773. Return: CF clear if successful
  7774.     CF set on error
  7775.         AH = error code (03h,0Bh) (see #0324)
  7776. Notes:    called to ensure that the system runs at full speed even on systems
  7777.       where the BIOS is unable to recognize increased activity (especially
  7778.       if interrupts are hooked by other programs and not chained to the
  7779.       BIOS)
  7780.     this call may be made even when the system is already running at full
  7781.       speed, but it will create unnecessary overhead
  7782.     should not be called from within a hardware interrupt handler to avoid
  7783.       reentrance problems
  7784. SeeAlso: AX=5305h
  7785. --------p-155307-----------------------------
  7786. INT 15 - Advanced Power Management Specification - SET POWER STATE
  7787.     AX = 5307h
  7788.     BX = device ID (see #0325)
  7789.     CX = system state ID (see #0326)
  7790. Return: CF clear if successful
  7791.     CF set on error
  7792.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0324)
  7793. Note:    should not be called from within a hardware interrupt handler to avoid
  7794.       reentrance problems
  7795. SeeAlso: AX=530Ch
  7796.  
  7797. (Table 0325)
  7798. Values for APM device IDs:
  7799.  0000h    system BIOS
  7800.  0001h    all devices for which the system BIOS manages power
  7801.  01xxh    display (01FFh for all attached display devices)
  7802.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  7803.  03xxh    parallel ports (03FFh for all attached parallel ports)
  7804.  04xxh    serial ports (04FFh for all attached serial ports)
  7805. ---APM v1.1---
  7806.  05xxh    network adapters (05FFh for all attached network adapters)
  7807.  06xxh    PCMCIA sockets (06FFh for all)
  7808.  0700h-DFFFh reserved
  7809.  Exxxh    OEM-defined power device IDs
  7810.  F000h-FFFFh reserved
  7811.  
  7812. (Table 0326)
  7813. Values for system state ID:
  7814.  0000h    ready (not supported for device ID 0001h)
  7815.  0001h    stand-by
  7816.  0002h    suspend
  7817.  0003h    off (not supported for device ID 0001h)
  7818. ---APM v1.1---
  7819.  0004h    last request processing notification (only for device ID 0001h)
  7820.  0005h    last request rejected (only for device ID 0001h)
  7821.  0006h-001Fh reserved system states
  7822.  0020h-003Fh OEM-defined system states
  7823.  0040h-007Fh OEM-defined device states
  7824.  0080h-FFFFh reserved device states
  7825. --------p-155307CX0001-----------------------
  7826. INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
  7827.     AX = 5307h
  7828.     CX = 0001h
  7829.     BX = 0001h (device ID for all power-managed devices)
  7830. Return: CF clear
  7831. Notes:    puts the entire system into stand-by mode; normally called in response
  7832.       to a System Stand-by Request notification after any necessary
  7833.       processing, but may also be invoked at the caller's discretion
  7834.     should not be called from within a hardware interrupt handler to avoid
  7835.       reentrance problems
  7836.     the stand-by state is typically exited on an interrupt
  7837. SeeAlso: AX=4280h,AX=5307h/BX=0001h/CX=0002h,AX=530Bh
  7838. --------p-155307CX0002-----------------------
  7839. INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
  7840.     AX = 5307h
  7841.     CX = 0002h
  7842.     BX = 0001h (device ID for all power-managed devices)
  7843. Return: after system is resumed
  7844.     CF clear
  7845. Notes:    puts the entire system into a low-power suspended state; normally
  7846.       called in response to a Suspend System Request notification after
  7847.       any necessary processing, but may also be invoked at the caller's
  7848.       discretion
  7849.     should not be called from within a hardware interrupt handler to avoid
  7850.       reentrance problems
  7851.     the caller may need to update its date and time values because the
  7852.       system could have been suspended for a long period of time
  7853. SeeAlso: AX=5307h/BX=0001h/CX=0001h,AX=530Bh
  7854. --------p-155308-----------------------------
  7855. INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
  7856.     AX = 5308h
  7857.     BX = device ID for all devices power-managed by APM
  7858.         0001h (APM v1.1)
  7859.         FFFFh (APM v1.0)
  7860.     CX = new state
  7861.         0000h disabled
  7862.         0001h enabled
  7863. Return: CF clear if successful
  7864.     CF set on error
  7865.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0324)
  7866. Notes:    when power management is disabled, the system BIOS will not
  7867.       automatically power down devices, enter stand-by or suspended mode,
  7868.       or perform any power-saving actions in response to AX=5305h calls
  7869.     should not be called from within a hardware interrupt handler to avoid
  7870.       reentrance problems
  7871. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  7872. --------p-155309-----------------------------
  7873. INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
  7874.     AX = 5309h
  7875.     BX = device ID for all devices power-managed by APM
  7876.         0001h (APM v1.1)
  7877.         FFFFh (APM v1.0)
  7878. Return: CF clear if successful
  7879.     CF set on error
  7880.         AH = error code (09h) (see #0324)
  7881. Note:    should not be called from within a hardware interrupt handler to avoid
  7882.       reentrance problems
  7883. SeeAlso: AX=5308h
  7884. --------p-15530ABX0001-----------------------
  7885. INT 15 - Advanced Power Management Specification - GET POWER STATUS
  7886.     AX = 530Ah
  7887.     BX = 0001h (device ID for all devices power-managed by APM)
  7888. Return: CF clear if successful
  7889.         BH = AC line status
  7890.         00h off-line
  7891.         01h on-line
  7892.         02h on backup power (APM v1.1)
  7893.         FFh unknown
  7894.         other reserved
  7895.         BL = battery status (see #0327)
  7896.         CH = battery flag (APM v1.1) (see #0328)
  7897.         CL = remaining battery life, percentage
  7898.         00h-64h (0-100) percentage of full charge
  7899.         FFh unknown
  7900.         DX = remaining battery life, time (APM v1.1) (see #0329)
  7901.     CF set on error
  7902.         AH = error code (09h) (see #0324)
  7903. Note:    should not be called from within a hardware interrupt handler to avoid
  7904.       reentrance problems
  7905.  
  7906. (Table 0327)
  7907. Values for APM v1.0+ battery status:
  7908.  00h    high
  7909.  01h    low
  7910.  02h    critical
  7911.  03h    charging
  7912.  FFh    unknown
  7913.  other    reserved
  7914.  
  7915. Bitfields for APM v1.1 battery flag:
  7916. Bit(s)    Description    (Table 0328)
  7917.  0    high
  7918.  1    low
  7919.  2    critical
  7920.  3    charging
  7921.  4-6    reserved
  7922.  7    no system battery
  7923. Note:    all bits set (FFh) if unknown
  7924.  
  7925. Bitfields for APM v1.1 remaining battery life:
  7926. Bit(s)    Description    (Table 0329)
  7927.  15    time units: 0=seconds, 1=minutes
  7928.  14-0    battery life in minutes or seconds
  7929. Note:    all bits set (FFFFh) if unknown
  7930. --------p-15530B-----------------------------
  7931. INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
  7932.     AX = 530Bh
  7933. Return: CF clear if successful
  7934.         BX = event code (see #0330)
  7935.     CF set on error
  7936.         AH = error code (03h,0Bh,80h) (see #0324)
  7937. Notes:    although power management events are often asynchronous, notification
  7938.       will not be made until polled via this call to permit software to
  7939.       only receive event notification when it is prepared to process
  7940.       power management events; since these events are not very time-
  7941.       critical, it should be sufficient to poll once or twice per second
  7942.     the critical resume notification is made after the system resumes
  7943.       from an emergency suspension; normally, the system BIOS only notifies
  7944.       its partner that it wishes to suspend and relies on the partner to
  7945.       actually request the suspension, but no notification is made on an
  7946.       emergency suspension
  7947.     should not be called from within a hardware interrupt handler to avoid
  7948.       reentrance problems
  7949. SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h
  7950.  
  7951. (Table 0330)
  7952. Values for APM event code:
  7953.  0001h    system stand-by request
  7954.  0002h    system suspend request
  7955.  0003h    normal resume system notification
  7956.  0004h    critical resume system notification
  7957.  0005h    battery low notification
  7958. ---APM v1.1---
  7959.  0006h    power status change notification
  7960.  0007h    update time notification
  7961.  0008h    critical system suspend notification
  7962.  0009h    user system standby request notification
  7963.  000Ah    user system suspend request notification
  7964.  000Bh    system standby resume notification
  7965.  000Ch-00FFh reserved system events
  7966.  01xxh    reserved device events
  7967.  02xxh    OEM-defined APM events
  7968.  0300h-FFFFh reserved
  7969. --------p-15530C-----------------------------
  7970. INT 15 - Advanced Power Management v1.1 - GET POWER STATE
  7971.     AX = 530Ch
  7972.     BX = device ID (see #0325)
  7973. Return: CF clear if successful
  7974.         BX = system state ID (see #0326)
  7975.     CF set on error
  7976.         AH = error code (01h,09h) (see #0324)
  7977. SeeAlso: AX=5307h
  7978. --------p-15530D-----------------------------
  7979. INT 15 - Advanced Power Management v1.1 - EN/DISABLE DEVICE POWER MANAGEMENT
  7980.     AX = 530Dh
  7981.     BX = device ID (see #0325)
  7982.     CX = function
  7983.         0000h disable power management
  7984.         0001h enable power management
  7985. Return: CF clear if successful
  7986.     CF set on error
  7987.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0324)
  7988. SeeAlso: AX=5308h,AX=530Fh
  7989. --------p-15530E-----------------------------
  7990. INT 15 - Advanced Power Management v1.1 - DRIVER VERSION
  7991.     AX = 530Eh
  7992.     BX = device ID of system BIOS (0000h)
  7993.     CH = APM driver major version (BCD)
  7994.     CL = APM driver minor version (BCD)
  7995. Return: CF clear if successful
  7996.         AH = APM connection major version (BCD)
  7997.         AL = APM connection minor version (BCD)
  7998.     CF set on error
  7999.         AH = error code (03h,09h,0Bh) (see #0324)
  8000. SeeAlso: AX=5300h
  8001. --------p-15530F-----------------------------
  8002. INT 15 - Advanced Power Management v1.1 - ENGAGE/DISENGAGE POWER MANAGEMENT
  8003.     AX = 530Fh
  8004.     BX = device ID (see #0325)
  8005.     CX = function
  8006.         0000h disengage power management
  8007.         0001h engage power management
  8008. Return: CF clear if successful
  8009.     CF set on error
  8010.         AH = error code (01h,09h) (see #0324)
  8011. Note:    unlike AX=5308h, this call does not affect the functioning of the APM
  8012.       BIOS
  8013. SeeAlso: AX=5308h,AX=530Dh
  8014. --------p-155380BH7F-------------------------
  8015. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  8016.     AX = 5380h
  8017.     BH = 7Fh
  8018. Return: CF clear if successful
  8019.         BX = OEM identifier
  8020.         all other registers OEM-defined
  8021.     CF set on error
  8022.         AH = error code (03h) (see #0324)
  8023. --------p-155380-----------------------------
  8024. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  8025.     AX = 5380h
  8026.     BH <> 7Fh
  8027.     all other registers OEM-defined
  8028. Return: OEM-defined
  8029. SeeAlso: AX=5380h/BH=7Fh
  8030. --------T-155400-----------------------------
  8031. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  8032.     AX = 5400h
  8033.     ES:BX -> device information tables
  8034.     DI:DX -> dispatcher entry point
  8035. Note:    called by OmniView to notify programs loaded before OmniView of state
  8036.       changes inside OmniView
  8037. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  8038. --------T-155401-----------------------------
  8039. INT 15 C - Omniview Multitasker - PROCESS CREATION
  8040.     AX = 5401h
  8041.     ES:BX = process handle
  8042. Note:    called by OmniView to notify programs loaded before OmniView of state
  8043.       changes inside OmniView
  8044. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  8045. --------T-155402-----------------------------
  8046. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  8047.     AX = 5402h
  8048.     ES:DX = process handle
  8049. Note:    called by OmniView to notify programs loaded before OmniView of state
  8050.       changes inside OmniView
  8051. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  8052. --------T-155403-----------------------------
  8053. INT 15 C - Omniview Multitasker - SAVE
  8054.     AX = 5403h
  8055.     ES:DX = process swapping out
  8056. Note:    called by OmniView to notify programs loaded before OmniView of state
  8057.       changes inside OmniView
  8058. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  8059. --------T-155404-----------------------------
  8060. INT 15 C - Omniview Multitasker - RESTORE
  8061.     AX = 5404h
  8062.     ES:DX = process swapping in
  8063. Note:    called by OmniView to notify programs loaded before OmniView of state
  8064.       changes inside OmniView
  8065. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  8066. --------T-155405-----------------------------
  8067. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  8068.     AX = 5405h
  8069.     ES:DX = process swapping in
  8070. Note:    called by OmniView to notify programs loaded before OmniView of state
  8071.       changes inside OmniView
  8072. SeeAlso: AX=5406h
  8073. --------T-155406-----------------------------
  8074. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  8075.     AX = 5406h
  8076.     ES:DX = process swapping in
  8077. Note:    called by OmniView to notify programs loaded before OmniView of state
  8078.       changes inside OmniView
  8079. SeeAlso: AX=5405h
  8080. --------T-155407-----------------------------
  8081. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  8082.     AX = 5407h
  8083. Note:    called by OmniView to notify programs loaded before OmniView of state
  8084.       changes inside OmniView
  8085. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  8086. --------b-1560------------------------------------
  8087. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  8088.     AH = 60h
  8089.     AL = new speed
  8090.         00h normal (8 MHz)
  8091.         01h Slow Mode 1 (4 MHz)
  8092.         02h Slow Mode 2 (2 MHz)
  8093. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  8094.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  8095. SeeAlso: AX=6301h
  8096. --------b-1561------------------------------------
  8097. INT 15 - HUNTER 16 - GET POWER LEVEL
  8098.     AH = 61h
  8099. Return: AH = percentage of full power left (0..100)
  8100. Desc:    determine how much battery power is left
  8101. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  8102. --------b-1562------------------------------------
  8103. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  8104.     AH = 62h
  8105.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  8106.     BX = interval between power low warnings in seconds (1..600)
  8107. Return: AH = Status
  8108. Desc:    set the level (relative to full power) when power-low warnings begin
  8109.       and the interval between the warnings
  8110. SeeAlso: AH=61h,AH=65h,AH=66h
  8111. --------b-156300----------------------------------
  8112. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  8113.     AX = 6300h
  8114. Return: AH = status
  8115.     BX = timeout in seconds (0-3600)
  8116. Desc:    get the idle timeout value, the interval without keyboard or
  8117.        communications activity before the system shuts down
  8118. SeeAlso: AX=6301h
  8119. --------b-156301----------------------------------
  8120. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  8121.     AX = 6301h
  8122.     BX = timeout in seconds (0-3600)
  8123. Desc:    sets the idle timeout value, the interval without keyboard or
  8124.       communications activity before the system shuts down
  8125. SeeAlso: AX=6300h
  8126. --------b-1564------------------------------------
  8127. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  8128.     AH = 64h
  8129.     AL = new state
  8130.         00h disable Resume mode
  8131.         01h enable Resume mode
  8132. Return: AH = status
  8133. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  8134.       the application that was running when it shut down as if nothing 
  8135.       had happened.
  8136. SeeAlso: AH=67h,AH=68h,AH=69h
  8137. --------b-1565------------------------------------
  8138. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  8139.     AH = 65h
  8140.     AL = charging level
  8141.         01h charging not allowed
  8142.         02h charging allowed until power down
  8143.         03h charging allowed until batteries changed or fail.
  8144.         Ask user if charging is still allowed on next poweron
  8145.         04h charging allowed indefinitely
  8146.     BX = 0203h
  8147.     CX = 0405h
  8148.     DX = 0607h
  8149. Return: AH = status
  8150. SeeAlso: AH=66h,AH=68h
  8151. --------b-1566------------------------------------
  8152. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  8153.     AH = 66h
  8154.     AL = level in percent of maximum (0..100)
  8155. Return: AH = status
  8156. SeeAlso: AH=61h,AH=65h
  8157. --------b-1567------------------------------------
  8158. INT 15 - HUNTER 16 - CONTROL STOP MODE
  8159.     AH = 67h
  8160.     AL = mode when waiting for input
  8161.         00h use STOP mode (allows communication)
  8162.         01h use HALT mode (disallows communication)
  8163. Return: AH = status
  8164. Desc:    select the power save mode to use when waiting for input
  8165. SeeAlso: AH=69h
  8166. --------b-1568------------------------------------
  8167. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  8168.     AH = 68h
  8169. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  8170. SeeAlso: AH=69h
  8171. --------b-1569------------------------------------
  8172. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  8173.     AH = 69h
  8174.     AL = mode
  8175.         00h inhibit power down
  8176.         01h allow power down
  8177. Return: AH = status
  8178. SeeAlso: AH=67h,AH=68h,AH=6Ah
  8179. --------b-156A------------------------------------
  8180. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  8181.     AH = 6Ah
  8182.     AL = mode
  8183.         00h inhibit Slow mode
  8184.         01h allow Slow mode
  8185. Return: AH = status
  8186. SeeAlso: AH=69h
  8187. --------b-156B------------------------------------
  8188. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  8189.     AH = 6Bh
  8190. Return: BH = version number (ASCII)
  8191.     BL = release number (ASCII)
  8192.     CH = minor release number (ASCII)
  8193.     CL = minor release number (ASCII)
  8194. SeeAlso: AH=6Ch
  8195. --------b-156C------------------------------------
  8196. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  8197.     AH = 6Ch
  8198. Return: BL:CX = BCD serial number
  8199. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  8200.       different number can be stored (see AH=72h)
  8201. SeeAlso: AH=6Bh,AH=72h
  8202. --------b-156D------------------------------------
  8203. INT 15 - HUNTER 16 - GET EVENT DETAIL
  8204.     AH = 6Dh
  8205. Return: AH = 00h if successful
  8206.     CX:BX = event flags bit 0..31 (see #0331)
  8207. Note:    this function allows testing for events
  8208. SeeAlso: AH=6Eh,AH=6Fh
  8209.  
  8210. Bitfields for HUNTER 16 events:
  8211. Bit(s)    Description    (Table 0331)
  8212.  6    RI received
  8213.  5    RTC Alarm
  8214.  4    data received on COM2
  8215.  3    data received on COM1
  8216.  2    error on COM2
  8217.  1    error on COM1
  8218.  0    PWR button pressed
  8219. --------b-156E------------------------------------
  8220. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  8221.     AH = 6Eh
  8222.     AL = Software Interrupt
  8223.           00h  do not trap event
  8224.           else trap as software interrupt number AL
  8225.     BH = event number (see AH=6Dh)
  8226.     BL = enable mask
  8227.         00h disable event
  8228.         01h enable event
  8229. Return: AH = 00h if successful
  8230. SeeAlso: AH=6Dh,AH=6Fh
  8231. --------b-156F------------------------------------
  8232. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  8233.     AH = 6Fh
  8234.     AL = event number (see AH=6Dh)
  8235. Return: AH = 00h if successful
  8236. Desc:    Acknowledges the event, so the next similar event can be detected 
  8237. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  8238. ----------157000-----------------------------
  8239. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  8240.     AX = 7000h
  8241.     BL = number of word to read (00h-3Fh)
  8242. Return: CF clear if function supported
  8243.         DX = contents of EEPROM word
  8244. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  8245.       the clock chip to store system configuration information
  8246. SeeAlso: AX=7001h
  8247. ----------157001-----------------------------
  8248. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  8249.     AX = 7001h
  8250.     BL = number of word to read (00h-3Fh)
  8251.     DX = new value for EEPROM word
  8252. Return: CF clear if function supported
  8253. Note:    the EEPROMs are normally written only by the system setup program;
  8254.       changing the values can badly mess up a Tandy
  8255. SeeAlso: AX=7000h
  8256. --------b-1570------------------------------------
  8257. INT 15 - HUNTER 16 - CONTROL SOUND
  8258.     AH = 70h
  8259.     AL = new state
  8260.         00h disable sound
  8261.         else enable sound
  8262. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  8263.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  8264. --------b-1571------------------------------------
  8265. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  8266.     AH = 71h
  8267.     BL = column
  8268.     BH = row
  8269.     AL = column switch (00h disable, 01h enable)
  8270.     CL = row switch (00h disable, 01h enable)
  8271. Return: AH = status
  8272. SeeAlso: AH=7Bh,AH=88h
  8273. --------b-157200----------------------------------
  8274. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  8275.     AX = 7200h
  8276. Return: AH = 00h if successful
  8277. Desc:    reset the serial number to the default serial number present when the
  8278.       Hunter 16 was shipped
  8279. SeeAlso: AH=6Ch,AH=72h
  8280. --------b-1572------------------------------------
  8281. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  8282.     AH = 72h
  8283.     AL nonzero
  8284.     DS:BX -> new serial number (6 ASCII digits)
  8285. Return: AH = 00h if successful
  8286. Desc:    install a new serial number
  8287. SeeAlso: AH=6Ch,AX=7200h
  8288. --------b-1573------------------------------------
  8289. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  8290.     AH = 73h
  8291.     AL = drive (0: A:, 1: B:)
  8292. Return: AH = status
  8293.         00h successful
  8294.         FFh Oracle GT drive not connected
  8295.     AL = power level in percent of maximum (0..100)
  8296. Desc:    get the power remaining in the Oracle GT batteries
  8297. SeeAlso: AH=61h
  8298. --------b-1574------------------------------------
  8299. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  8300.     AH = 74h
  8301.     AL = new level
  8302.         01h off
  8303.         02h unchanged
  8304.         03h change level
  8305.         BL = desired level (00h-7Fh)
  8306. Return: AH = status
  8307. Desc:    select the backlight level to use when the Hunter is next turned on
  8308. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  8309. --------b-1575------------------------------------
  8310. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  8311.     AH = 75h
  8312.     AL = new level
  8313.         01h off
  8314.         02h unchanged
  8315.         03h change level
  8316.         BL = desired level (00h-7Fh)
  8317. Return: AH = status
  8318. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  8319. SeeAlso: AH=63h,AH=74h
  8320. --------b-1576------------------------------------
  8321. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  8322.     AH = 76h
  8323.     BX = power save control (see #0332)
  8324. SeeAlso: AH=74h
  8325.  
  8326. Bitfields for HUNTER 16 power save control:
  8327. Bit(s)    Description    (Table 0332)
  8328.  0    power save enabled
  8329.  1    inhibit power save when waiting for COM1 data
  8330.  2    inhibit power save when waiting for COM2 data
  8331.  3    inhibit power save when waiting for data from barcode wand
  8332.  4    inhibit power up on timer tick
  8333. --------b-1579------------------------------------
  8334. INT 15 - HUNTER 16 - REDIRECT LPT1
  8335.     AH = 79h
  8336.     AL = port to which to redirect (00h COM1, 01h COM2)
  8337. --------b-157A------------------------------------
  8338. INT 15 - HUNTER 16 - INVOKE HOT KEY
  8339.     AH = 7Ah
  8340. Desc:    this function has the same effect as pressing the HOT key
  8341. SeeAlso: AH=7Bh
  8342. --------b-157B------------------------------------
  8343. INT 15 - HUNTER 16 - CONTROL HOT KEY
  8344.     AH = 7Bh
  8345.     AL = 00h prevent HOT key
  8346.         else allow HOT key
  8347. Desc:    Allow or prevent the HOT key function which is used to examine and
  8348.       change the Hunter setup
  8349. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  8350. --------b-157C------------------------------------
  8351. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  8352.     AH = 7Ch
  8353.     AL = 00h prevent HOT key power option
  8354.         else allow HOT key power option
  8355. Desc:    allow or prevent changing the power options
  8356. SeeAlso: AH=7Bh,AH=7Dh
  8357. --------b-157D------------------------------------
  8358. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  8359.     AH = 7Dh
  8360.     AL = 00h turn off after 10 warnings
  8361.         else never turn off
  8362. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  8363. SeeAlso: AH=7Ch
  8364. --------b-157E------------------------------------
  8365. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  8366.     AH = 7Eh
  8367.     AL = 00h do not prompt
  8368.         else prompt
  8369. Desc:    select whether the user is prompted for the battery state if the
  8370.       battery cap has been off when the system is turned on
  8371. SeeAlso: AH=7Fh
  8372. --------b-157F------------------------------------
  8373. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  8374.     AH = 7Fh
  8375.     AL = battery type
  8376.         00h     non-rechargeable
  8377.         else rechargeable
  8378. SeeAlso: AH=7Eh
  8379. --------!---Section--------------------------
  8380.