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

  1. Interrupt List, part 2 of 11
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------S-14---------------------------------
  4. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  5. Note:    the installation check for this driver is to determine whether the
  6.       "~DOSXAM~" character device exists
  7. Index:    installation check;Digiboard DigiCHANNEL
  8. --------S-1400-------------------------------
  9. INT 14 - SERIAL - INITIALIZE PORT
  10.     AH = 00h
  11.     AL = port parameters (see #0151)
  12.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  13. Return: AH = line status (see #0155)
  14.         FFh if error on Digiboard XAPCM232.SYS
  15.     AL = modem status (see #0156)
  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 0151)
  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 #0152)
  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 0152)
  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 #0153)
  63.     DX = port number
  64. Return: AH = line status (see #0155)
  65.     AL = modem status (see #0156)
  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 0153)
  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 #0154)
  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 0154)
  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 #0155)
  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 #0154)
  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 #0155)
  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 #0154)
  150.     BH = line status (see #0155)
  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 #0155)
  164.     AL = modem status (see #0156)
  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 0155)
  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 0156)
  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 #0154)
  198.     BH = line status (see #0157)
  199.     BL = modem status (see #0156) (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 0157)
  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 #0158)
  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 #0159)
  226.     CL = bps rate (see #0160)
  227.     DX = port number
  228. Return: AX = port status code (see #0155,#0156)
  229. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  230.  
  231. (Table 0158)
  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 0159)
  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 0160)
  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 #0293 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 #0161)
  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 0161)
  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 #0162)
  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 0162)
  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 #0164)
  336.         allowable subvector types are 01h-04h,17h,18h for command code
  337.           EF01h; 03h,04h for command code EF06h
  338.  
  339. (Table 0163)
  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 0164)
  364.  00h    BYTE    length of subvector
  365.  01h    BYTE    type code (see #0163)
  366.  02h N-2 BYTEs    data, which may include subvectors
  367. SeeAlso: #0165,#0166,#0167,#0168,#0169,#0170,#0171,#0172,#0173,#0174,#0175
  368. SeeAlso: #0176,#0177,#0179,#0180,#0181,#0182,#0183,#0184
  369.  
  370. Format of Connection ID subvector:
  371. Offset    Size    Description    (Table 0165)
  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 0166)
  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 0167)
  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 0168)
  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 0169)
  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 0170)
  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 0171)
  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 0172)
  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 0173)
  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 0174)
  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 0175)
  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 0176)
  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 0177)
  447.  00h    BYTE    03h (length)
  448.  01h    BYTE    11h (subvector "Parity")
  449.  02h    BYTE    parity type (see #0178)
  450.  
  451. Bitfields for Connection Manager parity type:
  452. Bit(s)    Description    (Table 0178)
  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 0179)
  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 0180)
  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 0181)
  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 0182)
  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 0183)
  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 0184)
  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 #0185)
  553.               AH = status
  554.         01h write modem control register
  555.           BL = modem control register (see #0185)
  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 0185)
  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 #0186)
  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 0186)
  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 #0187)
  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 0187)
  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 #0154)
  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 #0156)
  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 #0154)
  755.     BH = line status (see #0157)
  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 #0155)
  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 #0155 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 #0155)
  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 #0162)
  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 #0188)
  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 0188)
  842.  0    transmit buffering enabled
  843.  2    hardware handshaking enabled
  844.  5    high-speed option enabled (see AH=00h"MBBIOS",#0153)
  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 #0154 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 #0189)
  878. Return: AX = status (see #0155,#0156)
  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 0189)
  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 #0162)
  902. Return: AH = return code (00h-03h,06h) (see #0154)
  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 #0155) formed by ORing all statuses
  923.           on receive interrupts; bit 0 set if additional characters
  924.           available
  925.     AL = composite modem status (see #0156) 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 #0154 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 #0154 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 #0190)
  989. SeeAlso: AH=0Ah"Digiboard"
  990.  
  991. (Table 0190)
  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 #0154 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 #0191)
  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 0191)
  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 #0162)
  1104. Return: AH = return code (00h-02h,06h) (see #0154 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 #0192)
  1140. Return: AH = return code (00h,01h,03h,06h) (see also #0154 at AH=00h/DX=FFFFh)
  1141.         01h no (more) matching names
  1142.         03h invalid request
  1143.     ES:DI buffer filled with reply buffer (see #0192) 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 0192)
  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 #0155)
  1207.     AH = flow control configuration (see #0187 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 #0193) (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 0193)
  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 #0194)
  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 0194)
  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 #0195)
  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 #0196)
  1588.     CL = bps rate (see #0197)
  1589.     DX = port number
  1590. Return: AX = port status code (see #0155,#0156)
  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 0195)
  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 0196)
  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 0197)
  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 #0198)
  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 0198)
  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 #0199)
  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 0199)
  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 #0200)
  1664.               AH = status
  1665.     AL = 01h write modem control register
  1666.           BL = modem control register (see #0200)
  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 0200)
  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 #0151 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 #0198)
  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 #0201)
  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 0201)
  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 #0155 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 #0202)
  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 0202)
  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 #0155 at AH=03h)
  1843.     AL = modem status (see #0156 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 #0203)
  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 0203)
  1870.  00h    BYTE    baud rate (see #0204)
  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 0204)
  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 #0205)
  2110.     BX = number of characters in output buffer
  2111.     CX = nubmer of characters in input buffer
  2112.     DX = state flag (see #0206)
  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 0205)
  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 0206)
  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 #0208)
  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 #0215)
  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 #0207)
  2190. Return: AX = error code, if error (see #0208)
  2191. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  2192.  
  2193. Format of ARTICOM redirector status:
  2194. Offset    Size    Description    (Table 0207)
  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 #0215) (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 #0208)
  2213. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  2214. SeeAlso: AX=8000h
  2215.  
  2216. (Table 0208)
  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 #0209)
  2251. Return: AX = error code, if error (see #0208)
  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 0209)
  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 #0208)
  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 #0210)
  2279.     DS:SI -> 16 byte server name. See note.
  2280. Return: AX = error code, if error (see #0208)
  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 0210)
  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 #0211)
  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 #0208)
  2307. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  2308.  
  2309. Format of ARTICOM port information structure:
  2310. Offset    Size    Description    (Table 0211)
  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 #0212)
  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 0212)
  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 #0213)
  2353. Return: AX = error code, if error (see #0208)
  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 0213)
  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 #0208)
  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 #0214) 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 0214)
  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 #0215)
  2416.     DX = port number
  2417. Return: AH = line status register (see #0155)
  2418.         error if bit 7 set
  2419.     AL = modem status register (see #0156)
  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. SeeAlso: AH=00h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  2424. !!!
  2425. Format of COMM-DRV port control block:
  2426. Offset    Type    Description    (Table 0215)
  2427.  00h    WORD    port IO address
  2428.  02h    WORD    port IRQ
  2429.  04h    WORD    baud rate
  2430.  06h    WORD    parity
  2431.  08h    WORD    data bits
  2432.  0Ah    WORD    stop bits
  2433.  0Ch    WORD    break status (0000h off)
  2434.  0Eh    WORD    flow control protocol
  2435.  10h    BYTE    input block
  2436.  11h    BYTE    output block
  2437.  12h    WORD    low threshold
  2438.  14h    WORD    high threshold
  2439.  16h    WORD    segment of buffer
  2440.  18h    WORD    offset of buffer
  2441.  1Ah    WORD    input buffer length
  2442.  1Ch    WORD    output buffer length
  2443.  1Eh    BYTE    auxiliary address
  2444.  1Fh    BYTE    spare
  2445.  20h  4 WORDs    spares
  2446. --------V-148100-----------------------------
  2447. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  2448.     AX = 8100h
  2449.     ES:DI -> buffer for VFOSSIL information (see #0216)
  2450. Return: AX = 1954h if installed
  2451. SeeAlso: AH=7Eh,AX=8101h
  2452.  
  2453. Format of VFOSSIL information:
  2454. Offset    Size    Description    (Table 0216)
  2455.  00h    WORD    size of information in bytes, including this field
  2456.  02h    WORD    VFOSSIL major version
  2457.  04h    WORD    VFOSSIL revision level
  2458.  06h    WORD    highest VFOSSIL application function supported
  2459. --------V-148101-----------------------------
  2460. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  2461.     AX = 8101h
  2462.     ES:DI -> buffer for application function table (see #0217)
  2463.     CX = length of buffer in bytes
  2464. Return: AX = 1954h if installed
  2465.         BH = highest VFOSSIL application function supported
  2466. Note:    the number of initialized pointers in the application function table
  2467.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  2468.       will be initialized
  2469. SeeAlso: AX=8102h
  2470.  
  2471. Format of VFOSSIL application function table:
  2472. Offset    Size    Description    (Table 0217)
  2473.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0222)
  2474.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0223)
  2475.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0224)
  2476.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0225)
  2477.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0226)
  2478.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0227)
  2479.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  2480.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0229)
  2481.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0230)
  2482.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0231)
  2483.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0232)
  2484.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0233)
  2485.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  2486.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  2487.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  2488.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  2489.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  2490.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  2491.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  2492.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  2493.  
  2494. Format of VFOSSIL video mode data structure:
  2495. Offset    Size    Description    (Table 0218)
  2496.  00h    WORD    length of structure including this field
  2497.  02h    BYTE    mode characteristics
  2498.         bit 0: clear if MDA, set otherwise
  2499.         bit 1: graphics mode
  2500.         bit 2: color disabled (black-and-white)
  2501.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  2502.  04h    WORD    number of text columns
  2503.  06h    WORD    number of text rows
  2504.  08h    WORD    reserved
  2505.  0Ah    WORD    reserved
  2506.  0Ch    DWORD    reserved
  2507.  
  2508. Format of VFOSSIL video configuration data:
  2509. Offset    Size    Description    (Table 0219)
  2510.  00h    WORD    structure length including this field
  2511.  02h    WORD    adapter type
  2512.         00h monochrome/printer
  2513.         01h CGA
  2514.         02h EGA
  2515.         03h VGA
  2516.         07h 8514/A
  2517.  04h    WORD    display type
  2518.         00h monochrome
  2519.         01h color
  2520.         02h enhanced color
  2521.         09h 8514
  2522.  06h    DWORD    adapter memory size
  2523.  
  2524. Format of VFOSSIL cursor type record:
  2525. Offset    Size    Description    (Table 0220)
  2526.  00h    WORD    cursor start line
  2527.  02h    WORD    cursor end line
  2528.  04h    WORD    cursor width (always 01h)
  2529.  06h    WORD    cursor attribute (FFFFh = hidden)
  2530.  
  2531. (Table 0221)
  2532. Values for VFOSSIL error code:
  2533.  0000h    successful
  2534.  0074h    internal VIO failure
  2535.  0163h    unsupported mode
  2536.  0166h    invalid row value
  2537.  0167h    invalid column value
  2538.  017Eh    buffer too small
  2539.  01A5h    invalid VIO parameter
  2540.  01B4h    invalid VIO handle
  2541.  
  2542. (Table 0222)
  2543. Call VioGetMode with:
  2544.     STACK:    WORD    VIO handle (must be 00h)
  2545.         DWORD    pointer to video mode data structure (see #0218)
  2546. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0221)
  2547. SeeAlso: #0223
  2548.  
  2549. (Table 0223)
  2550. Call VioSetMode with:
  2551.     STACK:    WORD    VIO handle (must be 00h)
  2552.         DWORD    pointer to video mode data structure (see #0218)
  2553. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0221)
  2554. SeeAlso: #0222
  2555.  
  2556. (Table 0224)
  2557. Call VioGetConfig with:
  2558.     STACK:    WORD    VIO handle (must be 00h)
  2559.         DWORD    pointer to video configuration data buffer (see #0219)
  2560. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0221)
  2561.  
  2562. (Table 0225)
  2563. Call VioWrtTTY with:
  2564.     STACK:    WORD    VIO handle (must be 00h)
  2565.         WORD    length of string
  2566.         DWORD    pointer to character string to be written to screen
  2567. Return: AX = error code (00h, 74h, 1B4h) (see #0221)
  2568. Notes:    write wraps at end of line and terminates if it reaches end of screen
  2569.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  2570.       not required to be reentrant; in non-ANSI mode, the function is
  2571.       reentrant and may be called from within an MS-DOS function call
  2572.  
  2573. (Table 0226)
  2574. Call VioGetANSI with:
  2575.     STACK:    WORD    VIO handle (must be 00h)
  2576.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  2577.             or 01h if ANSI is on
  2578. Return: AX = error code (00h, 74h, 1B4h) (see #0221)
  2579. SeeAlso: #0227
  2580.  
  2581. (Table 0227)
  2582. Call VioSetANSI with:
  2583.     STACK:    WORD    VIO handle (must be 00h)
  2584.         DWORD    pointer to WORD indicating new state of ANSI
  2585.             00h off, 01h on
  2586. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0221)
  2587. SeeAlso: #0226
  2588.  
  2589. (Table 0228)
  2590. Call VioGetCurPos with:
  2591.     STACK:    WORD    VIO handle (must be 00h)
  2592.         DWORD    pointer to WORD to hold current cursor column (0-based)
  2593.         DWORD    pointer to WORD to hold current cursor row (0-based)
  2594. Return: AX = error code (00h, 74h, 1B4h) (see #0221)
  2595. SeeAlso: #0229
  2596.  
  2597. (Table 0229)
  2598. Call VioSetCurPos with:
  2599.     STACK:    WORD    VIO handle (must be 00h)
  2600.         WORD    cursor column
  2601.         WORD    cursor row
  2602. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2603. Note:    if either coordinate is invalid, the cursor is not moved
  2604. SeeAlso: #0228
  2605.  
  2606. (Table 0230)
  2607. Call VioGetCurType with:
  2608.     STACK:    WORD    VIO handle (must be 00h)
  2609.         DWORD    pointer to cursor type record (see #0220)
  2610. Return: AX = error code (00h, 74h, 1B4h) (see #0221)
  2611. SeeAlso: #0231
  2612.  
  2613. (Table 0231)
  2614. Call VioSetCurType with:
  2615.     STACK:    WORD    VIO handle (must be 00h)
  2616.         DWORD    pointer to cursor type record (see #0220)
  2617. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0221)
  2618. SeeAlso: #0232
  2619.  
  2620. (Table 0232)
  2621. Call VioScrollUp with:
  2622.     STACK:    WORD    VIO handle (must be 00h)
  2623.         DWORD    pointer to char/attr cell for filling emptied rows
  2624.         WORD    number or rows to scroll (FFFFh = clear area)
  2625.         WORD    right column of scroll area
  2626.         WORD    bottom row of scroll area
  2627.         WORD    left column of scroll area
  2628.         WORD    top row of scroll area
  2629. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2630. SeeAlso: #0233,INT 10/AH=06h
  2631.  
  2632. (Table 0233)
  2633. Call VioScrollDn with:
  2634.     STACK:    WORD    VIO handle (must be 00h)
  2635.         DWORD    pointer to char/attr cell for filling emptied rows
  2636.         WORD    number or rows to scroll (FFFFh = clear area)
  2637.         WORD    right column of scroll area
  2638.         WORD    bottom row of scroll area
  2639.         WORD    left column of scroll area
  2640.         WORD    top row of scroll area
  2641. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2642. SeeAlso: #0232,INT 10/AH=07h
  2643.  
  2644. (Table 0234)
  2645. Call VioReadCellStr with:
  2646.     STACK:    WORD    VIO handle (must be 00h)
  2647.         WORD    column at which to start reading
  2648.         WORD    row at which to start reading
  2649.         DWORD    pointer to WORD containing length of buffer in bytes
  2650.             on return, WORD contains number of bytes actually read
  2651.         DWORD    pointer to buffer for cell string
  2652. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0221)
  2653.  
  2654. (Table 0235)
  2655. Call VioReadCharStr with:
  2656.     STACK:    WORD    VIO handle (must be 00h)
  2657.         WORD    column at which to start reading
  2658.         WORD    row at which to start reading
  2659.         DWORD    pointer to WORD containing length of buffer in bytes
  2660.             on return, WORD contains number of bytes actually read
  2661.         DWORD    pointer to buffer for character string
  2662. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0221)
  2663.  
  2664. (Table 0236)
  2665. Call VioWrtCellStr with:
  2666.     STACK:    WORD    VIO handle (must be 00h)
  2667.         WORD    column at which to start writing
  2668.         WORD    row at which to start writing
  2669.         WORD    length of cell string in bytes
  2670.         DWORD    pointer to cell string to write
  2671. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2672. Note:    write wraps at end of line and terminates if it reaches end of screen
  2673.  
  2674. (Table 0237)
  2675. Call VioWrtCharStr with:
  2676.     STACK:    WORD    VIO handle (must be 00h)
  2677.         WORD    column at which to start writing
  2678.         WORD    row at which to start writing
  2679.         WORD    length of character string
  2680.         DWORD    pointer to character string to write
  2681. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2682. Note:    write wraps at end of line and terminates if it reaches end of screen
  2683.  
  2684. (Table 0238)
  2685. Call VioWrtCharStrAttr with:
  2686.     STACK:    WORD    VIO handle (must be 00h)
  2687.         DWORD    pointer to attribute to be applied to each character
  2688.         WORD    column at which to start writing
  2689.         WORD    row at which to start writing
  2690.         WORD    length of character string
  2691.         DWORD    pointer to character string to write
  2692. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2693. Note:    write wraps at end of line and terminates if it reaches end of screen
  2694.  
  2695. (Table 0239)
  2696. Call VioWrtNAttr with:
  2697.     STACK:    WORD    VIO handle (must be 00h)
  2698.         WORD    column at which to start writing
  2699.         WORD    row at which to start writing
  2700.         WORD    number of times to write attribute
  2701.         DWORD    pointer to display attribute to replicate
  2702. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2703. Note:    write wraps at end of line and terminates if it reaches end of screen
  2704.  
  2705. (Table 0240)
  2706. Call VioWrtNCell with:
  2707.     STACK:    WORD    VIO handle (must be 00h)
  2708.         WORD    column at which to start writing
  2709.         WORD    row at which to start writing
  2710.         WORD    number of times to write cell
  2711.         DWORD    pointer to cell to replicate
  2712. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2713. Note:    write wraps at end of line and terminates if it reaches end of screen
  2714.  
  2715. (Table 0241)
  2716. Call VioWrtNChar with:
  2717.     STACK:    WORD    VIO handle (must be 00h)
  2718.         WORD    column at which to start writing
  2719.         WORD    row at which to start writing
  2720.         WORD    number of times to write character
  2721.         DWORD    pointer to character to replicate
  2722. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0221)
  2723. Note:    write wraps at end of line and terminates if it reaches end of screen
  2724. --------V-148102-----------------------------
  2725. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  2726.     AX = 8102h
  2727. Return: AX = 1954h
  2728. Note:    terminates all operations; after this call, the video FOSSIL may either
  2729.       be removed from memory or reinitialized
  2730. SeeAlso: AX=8101h,AX=8103h
  2731. --------V-148103-----------------------------
  2732. INT 14 - VIDEO FOSSIL - UNINSTALL
  2733.     AX = 8103h
  2734. Return: AX = 1954h
  2735. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  2736. --------K-1482-------------------------------
  2737. INT 14 - KEYBOARD FOSSIL
  2738.     AH = 82h
  2739. SeeAlso: AH=7Eh
  2740. --------S-1482-------------------------------
  2741. INT 14 - COURIERS.COM - CONFIGURE PORT
  2742.     AH = 82h
  2743.     AL = port number (1-4)
  2744.     BX = speed (bps)
  2745.     CX = bit flags
  2746.         bit 0: enable input flow control
  2747.         bit 1: enable output flow control
  2748.         bit 2: use X.PC protocol (not yet implemented)
  2749. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  2750. --------S-1482-------------------------------
  2751. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  2752.     AH = 82h
  2753.     DX = port number
  2754. Return: AH bit 7 set on error
  2755.     AH bit 7 clear if successful
  2756. Desc:    reset the port to its state before the AH=81h initialization and unhook
  2757.       any interrupts used by the port
  2758. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  2759. ----------1483-------------------------------
  2760. INT 14 - SYSTEM FOSSIL
  2761.     AH = 83h
  2762. SeeAlso: AH=7Eh
  2763. --------S-1483-------------------------------
  2764. INT 14 - COURIERS.COM - START INPUT
  2765.     AH = 83h
  2766.     ES:BX -> circular input buffer
  2767.     CX = length of buffer
  2768.         (should be at least 128 bytes if input flow control enabled)
  2769. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  2770. --------S-1483-------------------------------
  2771. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  2772.     AH = 83h
  2773.     DX = port number
  2774.     AL = subfunction
  2775.         00h flush input buffer
  2776.         01h flush output buffer
  2777.         02h flush both buffers
  2778. Return: AH bit 7 set on error
  2779.     AH bit 7 clear if successful
  2780. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  2781. --------S-1484-------------------------------
  2782. INT 14 - COURIERS.COM - READ CHARACTER
  2783.     AH = 84h
  2784. Return: ZF set if no characters available
  2785.     ZF clear
  2786.        AL = character
  2787.        AH = modem status bits
  2788.         bit 7: set on input buffer overflow
  2789. SeeAlso: AH=02h,AH=86h,AH=89h
  2790. --------S-1484-------------------------------
  2791. INT 14 - COMM-DRV v14.0 - SEND PACKET
  2792.     AH = 84h
  2793.     CX = packet length in bytes
  2794.     DX = port number
  2795.     ES:DI -> packet to be sent
  2796. Return: AH = line status (see #0155)
  2797.         bit 7 set on error
  2798.     AL destroyed
  2799. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  2800. --------S-1485-------------------------------
  2801. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  2802.     AH = 85h
  2803. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  2804. --------S-1485-------------------------------
  2805. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  2806.     AH = 85h
  2807.     CX = length of packet in bytes
  2808.     DX = port number
  2809.     ES:DI -> buffer for packet
  2810. Return: AH = line status (see #0155)
  2811.         bit 7 set on error
  2812.     AL destroyed
  2813. Note:    this call requires that at least the requested number of bytes are
  2814.       already present in the input buffer, and will fail if there are
  2815.       fewer bytes available
  2816. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  2817. --------S-1486-------------------------------
  2818. INT 14 - COURIERS.COM - START OUTPUT
  2819.     AH = 86h
  2820.     ES:BX -> output buffer
  2821.     CX = length of output buffer
  2822. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  2823. --------S-1486-------------------------------
  2824. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  2825.     AH = 86h
  2826.     BL = maximum clock ticks to wait before signalling error on input func
  2827.     BH = maximum clock ticks to wait before signalling error on output
  2828.     DX = port number
  2829.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  2830.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  2831. Return: AH bit 7 set on error
  2832.     AH bit 7 clear if successful
  2833. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  2834. --------S-1487-------------------------------
  2835. INT 14 - COURIERS.COM - OUTPUT STATUS
  2836.     AH = 87h
  2837. Return: AX = number of unsent characters
  2838. SeeAlso: AX=88h"COURIERS"
  2839. --------S-1487-------------------------------
  2840. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  2841.     AH = 87h
  2842.     DX = port number
  2843. Return: AH bit 7 set on error
  2844.     AH bit 7 clear if successful
  2845. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  2846. --------S-1488-------------------------------
  2847. INT 14 - COURIERS.COM - ABORT OUTPUT
  2848.     AH = 88h
  2849. SeeAlso: AH=09h,AH=85h"COURIERS"
  2850. --------S-1488-------------------------------
  2851. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  2852.     AH = 88h
  2853.     DX = port number
  2854. Return: AH bit 7 set on error
  2855.     AH bit 7 clear if successful
  2856. Program: COMM-DRV is a universal serial communications driver by Willies'
  2857.       Computer Software Company, which supports standard INT 14 and
  2858.       FOSSIL calls as well as its own interfaces
  2859. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  2860. --------S-1489-------------------------------
  2861. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  2862.     AH = 89h
  2863.     CL = character to send
  2864. SeeAlso: AH=01h,AH=84h"COURIERS"
  2865. --------S-1489-------------------------------
  2866. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  2867.     AH = 89h
  2868.     DX = port number
  2869. Return: AH bit 7 set on error
  2870.     AH bit 7 clear if successful
  2871. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  2872. --------S-148A-------------------------------
  2873. INT 14 - COURIERS.COM - SEND BREAK
  2874.     AH = 8Ah
  2875. SeeAlso: AH=89h"COURIERS",AH=FAh
  2876. --------S-148A-------------------------------
  2877. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  2878.     AH = 8Ah
  2879.     DX = port number
  2880. Return: AH bit 7 set on error
  2881.     AH bit 7 clear if successful
  2882. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  2883. --------S-148C-------------------------------
  2884. INT 14 - COURIERS.COM - SET SPEED
  2885.     AH = 8Ch
  2886.     BX = speed in bps
  2887. SeeAlso: AH=00h,AH=82h"COURIERS"
  2888. --------S-148C-------------------------------
  2889. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  2890.     AH = 8Ch
  2891.     AL = register offset
  2892.     DX = port number
  2893. Return: AH bit 7 set on error
  2894.     AH bit 7 clear if successful
  2895.         AL = contents of UART register
  2896. SeeAlso: AH=8Dh"COMM-DRV"
  2897. --------S-148D-------------------------------
  2898. INT 14 - COURIERS.COM - DECONFIGURE PORT
  2899.     AH = 8Dh
  2900. SeeAlso: AH=82h"COURIERS"
  2901. --------S-148D-------------------------------
  2902. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  2903.     AH = 8Dh
  2904.     AL = register offset
  2905.     BL = new value for UART register
  2906.     DX = port number
  2907. Return: AH bit 7 set on error
  2908.     AH bit 7 clear if successful
  2909. SeeAlso: AH=8Ch"COMM-DRV"
  2910. --------S-148E-------------------------------
  2911. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  2912.     AH = 8Eh
  2913.     CX = length of packet in bytes
  2914.     DX = port number
  2915.     ES:DI -> buffer for packet
  2916. Return: AH = line status (see #0155)
  2917.         bit 7 set on error (see AX=8000h"COMM-DRV")
  2918.     AL destroyed
  2919. Program: COMM-DRV is a universal serial communications driver by Willies'
  2920.       Computer Software Company, which supports standard INT 14 and
  2921.       FOSSIL calls as well as its own interfaces
  2922. Desc:    retrieve a packet from the input buffer without removing it from the
  2923.       buffer
  2924. Note:    this call requires that at least the requested number of bytes are
  2925.       already present in the input buffer, and will fail if there are
  2926.       fewer bytes available
  2927. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  2928. --------S-14A0-------------------------------
  2929. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  2930.     AH = A0h
  2931.     ES:BX -> ASCIZ internet host name
  2932.     CX = length of name
  2933. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0242)
  2934.     CL = session ID
  2935. Program: the Bridge Application Program Interface is a set of functions which
  2936.       makes many of the details of LAN communications transparent
  2937. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  2938. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  2939.  
  2940. (Table 0242)
  2941. Values for 3com BAPI return code:
  2942.  00h    successful
  2943.  01h    no characters written
  2944.  02h    no characters read
  2945.  03h    no such session
  2946.  04h    clearinghouse name not found
  2947.  05h    no response from host
  2948.  06h    no more sessions available
  2949.  07h    session aborted
  2950.  08h    invalid clearinghouse name
  2951.  09h    not supported
  2952.  0Ah    internal (general) network error
  2953.  0Bh    out of memory
  2954.  0Ch    invalid IP address
  2955. --------S-14A0--CXFFFF-----------------------
  2956. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  2957.     AH = A0h
  2958.     CX = FFFFh
  2959. Return: CF clear if successful
  2960.         AX = 5445h ('TE')
  2961.         CX <> FFFFh
  2962.         DX = port number
  2963.     CF set on error
  2964. Program: TES is a network serial port emulation program
  2965. SeeAlso: AH=A1h"TES"
  2966. --------S-14A1-------------------------------
  2967. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  2968.     AH = A1h
  2969.     DH = session ID (00h for external session managment)
  2970. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0242)
  2971.     AL destroyed (Novell TELAPI.EXE)
  2972. SeeAlso: AH=A0h"BAPI"
  2973. --------S-14A1-------------------------------
  2974. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  2975.     AH = A1h
  2976. Return: CX = number of active sessions
  2977.     ES:SI -> status array (see #0243)
  2978. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  2979.  
  2980. Format of Interconnections TES status array entry:
  2981. Offset    Size    Description    (Table 0243)
  2982.  00h    BYTE    status
  2983.  01h    WORD    offset of name
  2984. --------S-14A2-------------------------------
  2985. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  2986.     AH = A2h
  2987.     AL = character
  2988.     DH = session ID (00h for external session managment)
  2989. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0242)
  2990. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  2991. --------S-14A2-------------------------------
  2992. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  2993.     AH = A2h
  2994. Return: CX = number of servers
  2995.     ES:SI -> array of offsets from ES for server names
  2996. SeeAlso: AH=A1h"TES"
  2997. --------S-14A3-------------------------------
  2998. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  2999.     AH = A3h
  3000.     DH = session ID (00h for external session managment)
  3001. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0242)
  3002.     AL = character read or 00h if none available
  3003. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  3004. --------S-14A3-------------------------------
  3005. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  3006.     AH = A3h
  3007.     ES:SI -> ???
  3008. Return: CF clear if successful
  3009.         AX = 5445h ('TE')
  3010.         CX <> FFFFh
  3011.         DX = port number
  3012.     CF set on error
  3013. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  3014. --------S-14A4-------------------------------
  3015. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  3016.     AH = A4h
  3017.     CX = length of buffer in bytes
  3018.     DH = session ID (00h for external session managment)
  3019.     ES:BX -> buffer containing data
  3020. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0242)
  3021.     CX = number of bytes actually sent
  3022. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  3023. --------S-14A4-------------------------------
  3024. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  3025.     AH = A4h
  3026.     ???
  3027. Return: ???
  3028. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  3029. --------S-14A5-------------------------------
  3030. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  3031.     AH = A5h
  3032.     CX = length of buffer
  3033.     DH = session ID (00h for external session managment)
  3034.     ES:BX -> buffer for data
  3035. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0242)
  3036.     CX = number of bytes actually read
  3037. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  3038. SeeAlso: AH=A7h"BAPI",AX=FF02h
  3039. --------S-14A5-------------------------------
  3040. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  3041.     AH = A5h
  3042.     AL = session number
  3043. Return: ???
  3044. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  3045. --------S-14A6-------------------------------
  3046. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  3047.     AH = A6h
  3048.     DH = session ID (00h for external session managment)
  3049. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0242)
  3050. Desc:    generate a short break signal; if data delivery was turned off by the
  3051.       break, wait for the host to turn it on again
  3052. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  3053. --------S-14A6-------------------------------
  3054. INT 14 - Interconnections Inc. TES - DROP A SESSION
  3055.     AH = A6h
  3056.     AL = session number
  3057. Return: AH = status
  3058.         00h successful
  3059.         else error
  3060. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  3061. --------S-14A7-------------------------------
  3062. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  3063.     AH = A7h
  3064.     DH = session ID (00h for external session managment)
  3065. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0242)
  3066.     CX = number of bytes available for reading
  3067. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  3068. SeeAlso: AH=A5h"BAPI"
  3069. --------S-14A7-------------------------------
  3070. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  3071.     AH = A7h
  3072.     ???
  3073. Return: ???
  3074. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  3075. --------S-14A8-------------------------------
  3076. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  3077.     AH = A8h
  3078.     AL = 00h no visible response
  3079.     ES:SI -> ASCIZ command
  3080. Return: ???
  3081. --------N-14A8-------------------------------
  3082. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  3083.     AH = A8h
  3084.     DH = session ID???
  3085.     CH = subfunction
  3086.         02h ???
  3087.         0Dh ???
  3088.         0Fh ???
  3089.         10h ???
  3090.         11h ???
  3091.         28h ???
  3092.         else
  3093.         Return: AH = 09h (not supported)
  3094. Return: AH = return code (see #0242)
  3095.         00h successful
  3096.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  3097.         CL = ??? (7Fh/FFh) (subfunction 28h)
  3098.         CX = ??? (subfunction 11h)
  3099. SeeAlso: AH=A9h"TelAPI"
  3100. --------N-14A9-------------------------------
  3101. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  3102.     AH = A9h
  3103.     DH = session ID???
  3104.     CH = subfunction
  3105.         02h ???
  3106.         0Dh ???
  3107.         0Fh ???
  3108.         10h ???
  3109.         11h ???
  3110.         28h ???
  3111.         else
  3112.         Return: AH = 09h (not supported)
  3113.     ???
  3114. Return: AH = return code (see #0242)
  3115.     ???
  3116. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  3117. --------V-14AA01-----------------------------
  3118. INT 14 - DimVGA v2.0 - INSTALLATION CHECK
  3119.     AX = AA01h
  3120. Return: AX = FFFFh if installed, unchanged
  3121.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  3122. Program: DimVGA is a public domain screen saver by Menno Pieters
  3123. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0255h/BX=6900h,INT 12"KEYBUI"
  3124. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  3125. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  3126. SeeAlso: INT 2F/AX=E300h
  3127. Index:    screen saver;DimVGA
  3128. --------V-14AA02-----------------------------
  3129. INT 14 - DimVGA v2.0 - SET TIME-OUT (BLANKING) PERIOD
  3130.     AX = AA02h
  3131.     BX = number of clock ticks
  3132. Return: AX = FFFFh
  3133. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  3134. Index:    screen saver;DimVGA
  3135. --------V-14AA03-----------------------------
  3136. INT 14 - DimVGA v2.0 - SET DIMMING FACTOR
  3137.     AX = AA03h
  3138.     BX = percentage remaining visible (0-100)
  3139. Return: AX = FFFFh
  3140. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  3141. Index:    screen saver;DimVGA
  3142. --------V-14AA04-----------------------------
  3143. INT 14 - DimVGA v2.0 - GET TIME-OUT PERIOD
  3144.     AX = AA04h
  3145. Return: AX = FFFFh
  3146.     BX = current time-out in clock ticks
  3147. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  3148. Index:    screen saver;DimVGA
  3149. --------V-14AA05-----------------------------
  3150. INT 14 - DimVGA v2.0 - GET DIMMING FACTOR
  3151.     AX = AA05h
  3152. Return: AX = FFFFh
  3153.     BX = current dimming factor
  3154. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  3155. Index:    screen saver;DimVGA
  3156. --------V-14AA06-----------------------------
  3157. INT 14 - DimVGA v2.0 - DISABLE
  3158.     AX = AA06h
  3159. Return: AX = FFFFh
  3160. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  3161. Index:    screen saver;DimVGA
  3162. --------V-14AA07-----------------------------
  3163. INT 14 - DimVGA v2.0 - ENABLE
  3164.     AX = AA07h
  3165. Return: AX = FFFFh
  3166. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  3167. Index:    screen saver;DimVGA
  3168. --------V-14AA08-----------------------------
  3169. INT 14 - DimVGA v2.0 - DIM SCREEN 'MANUALLY'
  3170.     AX = AA08h
  3171. Return: AX = FFFFh
  3172. Note:    this function will dim the screen immediately, even if DimVGA is
  3173.       currently disabled
  3174. SeeAlso: AX=AA01h,AX=AA09h
  3175. Index:    screen saver;DimVGA
  3176. --------V-14AA09-----------------------------
  3177. INT 14 - DimVGA v2.0 - UNDIM SCREEN 'MANUALLY'
  3178.     AX = AA09h
  3179. Return: AX = FFFFh
  3180. Note:    this function will undim the screen immediately, even if DimVGA is
  3181.       currently disabled
  3182. SeeAlso: AX=AA01h,AX=AA08h
  3183. Index:    screen saver;DimVGA
  3184. --------V-14AA0A-----------------------------
  3185. INT 14 - DimVGA v2.0 - CHECK WHETHER ENABLED
  3186.     AX = AA0Ah
  3187. Return: AX = FFFFh
  3188.     BX = current state (0000h disabled, 0001h enabled)
  3189. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  3190. Index:    screen saver;DimVGA
  3191. --------S-14AF00BXAAAA-----------------------
  3192. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  3193.     AX = AF00h
  3194.     BX = AAAAh
  3195. Return: AX = AF01h if installed
  3196.         BH = protocol type (if BX=AAAAh on entry)
  3197.         01h NetManage TCP/IP
  3198.         BL = version for protocol type (if BX=AAAAh on entry)
  3199. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  3200.       behavior is used to determine whether the newer functions (AH=B0h,
  3201.       AH=B1h,etc) are available
  3202. SeeAlso: AH=A0h"BAPI"
  3203. --------S-14B0-------------------------------
  3204. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  3205.     AH = B0h
  3206.     AL = new state (00h disabled, 01h enabled)
  3207. Return: AH = return code (00h,07h,0Ah) (see #0242)
  3208. Note:    disabling the ECM character allows applications to send data which
  3209.       includes the ECM character
  3210. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  3211. --------S-14B1-------------------------------
  3212. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  3213.     AH = B1h
  3214. Return: AH = return code (00h,07h,0Ah) (see #0242)
  3215. Desc:    provide a means for the application or terminal emulator to perform
  3216.       the same action normally caused by the ECM character
  3217. SeeAlso: AH=B0h,AH=B2h
  3218. --------S-14B2-------------------------------
  3219. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  3220.     AH = B2h
  3221. Return: AH = return code (00h,07h,0Ah) (see #0242)
  3222.     AL = watch flag (00h disabled, 01h enabled)
  3223. Desc:    determine whether the ECM character is enabled
  3224. SeeAlso: AH=B0h,AH=B1h
  3225. --------S-14B3-------------------------------
  3226. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  3227.     AH = B3h
  3228.     AL = direction (00h get, 01h set)
  3229.     DH = session ID (00h for external session managment)
  3230.     DL = configuration item (00h = end-of-line mapping)
  3231.     CX = new configuration item value (if AL=01h)
  3232.         ---if DL=00h---
  3233.         CH = application EOL type (app to Telnet client)
  3234.         01h application will send lone CR
  3235.         02h application will send CR-? pair
  3236.         CL = driver EOL type (Telnet client to Telnet server)
  3237.         01h driver should send CR-NUL pair
  3238.         02h driver should send CR-LF pair
  3239. Return: AH = return code (00h,03h,09h-0Bh) (see #0242)
  3240.     ---if AL=00h---
  3241.     CX = configuration item value (see above)
  3242. SeeAlso: AH=B2h
  3243. --------N-14E0-------------------------------
  3244. INT 14 - TelAPI - ???
  3245.     AH = E0h
  3246.     BX = ???
  3247.     CX:DX = ???
  3248.     DS:DI -> ???
  3249.     ES:SI -> ???
  3250. Return: AX = status (0000h,FF37h,etc.)
  3251.     ES:SI -> ??? if ???
  3252.     ???
  3253. SeeAlso: AH=ECh,AX=FF00h
  3254. --------S-14E000-----------------------------
  3255. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  3256.     AX = E000h
  3257.     DX = port number (0-3)
  3258. Return: ES:BX -> status block (see #0244)
  3259. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  3260.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  3261.       the .DRV extension)
  3262. SeeAlso: AX=E006h
  3263.  
  3264. Format of MX5 Extended FOSSIL status block:
  3265. Offset    Size    Description    (Table 0244)
  3266.  00h    BYTE    flag: active (00h no, 01h yes)
  3267.  01h    BYTE    MNP level (2,4,5)
  3268.  02h    BYTE    series ID from remote MNP
  3269.  03h    DWORD    total packets transmitted
  3270.  07h    DWORD    duplicate packets transmitted
  3271.  0Bh    DWORD    maximum speed
  3272.  0Fh    DWORD    total packets received
  3273.  13h    DWORD    duplicate packets received
  3274.  17h    DWORD    maximum speed
  3275. --------S-14E001-----------------------------
  3276. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  3277.     AX = E001h
  3278.     BH = function
  3279.         00h get MNP level
  3280.         01h set MNP level
  3281.         BL = new level (00h none, 02h/04h/05h MNP level N)
  3282.     DX = port number (0-3)
  3283. Return: BL = MNP level
  3284. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  3285. --------S-14E002-----------------------------
  3286. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  3287.     AX = E002h
  3288.     BH = function
  3289.         00h get answer/originate mode
  3290.         01h set mode
  3291.         BL = new mode (00h originate [default], 01h answer)
  3292.     DX = port number (0-3)
  3293. Return: BL = answer/originate mode
  3294. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  3295. --------S-14E003-----------------------------
  3296. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  3297.     AX = E003h
  3298.     BH = function
  3299.         00h get wait ticks
  3300.         01h set wait ticks
  3301.         BL = MNP wait ticks (default 0Eh)
  3302.     DX = port number (0-3)
  3303. Return: BL = wait ticks
  3304. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  3305. --------S-14E004-----------------------------
  3306. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  3307.     AX = E004h
  3308.     BH = function
  3309.         00h get sound level
  3310.         01h set sound level
  3311.         BL = new sound level (00h off, 01h on [default])
  3312.     DX = port number
  3313. Return: BL = sound state
  3314. Desc:    specify whether MX5 should generate beeps after an MNP connection
  3315.       (three high beeps if successful, high then low on connection failure)
  3316. SeeAlso: AX=E002h,AX=E006h
  3317. --------S-14E005-----------------------------
  3318. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  3319.     AX = E005h
  3320. Return: BX = segment of MX5's memory block or 0000h on failure
  3321. Note:    caller must free the returned memory block to complete the uninstall
  3322. SeeAlso: AX=E006h
  3323. --------S-14E006BX0000-----------------------
  3324. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  3325.     AX = E006h
  3326.     BX = 0000h
  3327. Return: BX = 4D58h ('MX') if installed
  3328.         AH = major version
  3329.         AL = minor version
  3330. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  3331. --------S-14E007-----------------------------
  3332. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  3333.     AX = E007h
  3334.     CX = number of ticks to wait
  3335. Return: nothing
  3336. SeeAlso: AX=E006h
  3337. --------N-14E1-------------------------------
  3338. INT 14 - TelAPI - ???
  3339.     AH = E1h
  3340.     BX = connection ID
  3341.     ???
  3342. Return: AX = status (0000h,FFF7h,maybe others)
  3343.     ???
  3344. SeeAlso: AH=E6h,AX=FF00h
  3345. --------N-14E2-------------------------------
  3346. INT 14 - TelAPI - BUFFERED READ
  3347.     AH = E2h
  3348.     BX = connection ID
  3349.     CX = length of buffer in bytes
  3350.     ES:SI -> buffer for data
  3351. Return: AX = number of characters actually read??? (negative on error)
  3352. SeeAlso: AH=E6h,AX=FF00h,INT 6B/AH=01h
  3353. --------N-14E3-------------------------------
  3354. INT 14 - TelAPI - BUFFERED WRITE
  3355.     AH = E3h
  3356.     BX = connection ID
  3357.     CX = length of buffer in bytes
  3358.     ES:SI -> buffer containing data
  3359. Return: AX = number of characters actually written??? (negative on error)
  3360. SeeAlso: AH=07h"TelAPI",AH=E6h,AX=FF00h,INT 6B/AH=00h
  3361. --------N-14E4-------------------------------
  3362. INT 14 - TelAPI - CONNECTION CONTROL???
  3363.     AH = E4h
  3364.     BX = connection ID
  3365.     CX = ???
  3366.     ES:SI -> 10-byte buffer containing ???
  3367. Return: ???
  3368. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  3369. --------N-14E5-------------------------------
  3370. INT 14 - TelAPI - ???
  3371.     AH = E5h
  3372. Return: AX = status???
  3373. SeeAlso: AH=E6h,AX=FF00h
  3374. --------N-14E6-------------------------------
  3375. INT 14 - TelAPI - ???
  3376.     AH = E6h
  3377. Return: AX = status???
  3378. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  3379.     this function invokes AH=E5h internally
  3380. SeeAlso: AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  3381. --------N-14E7-------------------------------
  3382. INT 14 - TelAPI - GET ???
  3383.     AH = E7h
  3384.     ES:SI -> 20-byte buffer for ???
  3385. Return: AX = 0000h (successful)
  3386.     ES:SI buffer filled
  3387. SeeAlso: AX=FF00h
  3388. --------N-14E8-------------------------------
  3389. INT 14 - TelAPI - SET ???
  3390.     AH = E8h
  3391.     BX = connection ID
  3392.     CL = new value for ???
  3393.     DX = ??? (ignored by Novell TELAPI v4.01)
  3394. Return: AX = status (0000h,FFFFh)
  3395. SeeAlso: AX=FF00h
  3396. --------N-14E9-------------------------------
  3397. INT 14 - TelAPI - ???
  3398.     AH = E9h
  3399.     DX = ???
  3400. Return: ???
  3401. SeeAlso: AX=FF00h
  3402. --------N-14EA-------------------------------
  3403. INT 14 - TelAPI - GET CONNECTION INFO???
  3404.     AH = EAh
  3405.     BX = connection ID
  3406.     ES:SI -> buffer for info???
  3407. Return: AX = status (0000h,FFFFh,etc.)
  3408. SeeAlso: AX=FF00h
  3409. --------N-14EB-------------------------------
  3410. INT 14 - TelAPI - GET ???
  3411.     AH = EBh
  3412.     ES:SI -> buffer for ???
  3413. Return: ES:SI buffer filled
  3414. SeeAlso: AX=FF00h
  3415. --------N-14EC-------------------------------
  3416. INT 14 - TelAPI - ???
  3417.     AH = ECh
  3418.     BX = ???
  3419.     CX:DX = ???
  3420.     DS:DI -> ???
  3421.     ES:SI -> ???
  3422. Return: AX = status (0000h,FF37h,etc.)
  3423.     ES:SI -> ??? if ???
  3424.     ???
  3425. Note:    this function is not supported by the Microdyne TelAPI v3.7
  3426. SeeAlso: AH=E0h"TelAPI",AX=FF00h
  3427. --------N-14ED-------------------------------
  3428. INT 14 - TelAPI - ???
  3429.     AH = EDh
  3430.     BX = connection ID
  3431. Return: AX = status (0000h,FFFFh,etc.)
  3432. Note:    this function is not supported by the Microdyne TelAPI v3.7
  3433. SeeAlso: AX=FF00h
  3434. --------a-14F0F0-----------------------------
  3435. INT 14 - ASAP v1.0 - ???
  3436.     AX = F0F0h
  3437.     DX = ???
  3438.     ???
  3439. Return: ???
  3440. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  3441.       MicroTalk
  3442. SeeAlso: AX=F0F1h
  3443. --------a-14F0F1DX0000-----------------------
  3444. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  3445.     AX = F0F1h
  3446.     DX = 0000h
  3447. Return: DX = segment of resident code
  3448.         0000h if not installed
  3449. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  3450.       MicroTalk
  3451. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  3452. --------S-14F4FF-----------------------------
  3453. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  3454.     AX = F4FFh
  3455.     DX = port (00h-03h)
  3456. Return: CF clear if present
  3457.         AX = 0000h
  3458.     CF set if not present
  3459.         AX <> 0000h
  3460. --------S-14F9-------------------------------
  3461. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  3462.     AH = F9h
  3463.     DX = port (00h-03h)
  3464. --------S-14FA-------------------------------
  3465. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  3466.     AH = FAh
  3467.     DX = port (00h-03h)
  3468. SeeAlso: AH=1Ah,AH=8Ah
  3469. --------S-14FB-------------------------------
  3470. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  3471.     AH = FBh
  3472.     AL = modem control register (see #0185 at AH=05h)
  3473.     DX = port (00h-03h)
  3474. SeeAlso: AH=05h"SERIAL"
  3475. --------S-14FC-------------------------------
  3476. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  3477.     AH = FCh
  3478.     DX = port (00h-03h)
  3479. Return: AH = RS232 status bits (see #0155 at AH=03h)
  3480.     AL = character
  3481. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  3482. --------S-14FD02-----------------------------
  3483. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  3484.     AX = FD02h
  3485. Return: CX = number of characters available
  3486. --------N-14FF00-----------------------------
  3487. INT 14 - TelAPI - INSTALLATION CHECK
  3488.     AX = FF00h
  3489. Return: AL = FFh if installed
  3490.     AH = 00h for Novell TELAPI.EXE
  3491. SeeAlso: AH=E6h
  3492. --------S-14FF01-----------------------------
  3493. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  3494.     AX = FF01h
  3495.     CX = length of buffer (0000h to cancel buffer assignment)
  3496.     DX = port (00h-03h)
  3497.     ES:BX -> send buffer
  3498. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  3499. --------S-14FF02-----------------------------
  3500. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  3501.     AX = FF02h
  3502.     CX = length of buffer (0000h to cancel buffer assignment)
  3503.     DX = port (00h-03h)
  3504.     ES:BX -> receive buffer
  3505. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF03h
  3506. --------S-14FFF8-----------------------------
  3507. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  3508.     AX = FFF8h
  3509.     BX = card type (sub-device number)
  3510.     CX = new baudrate divisor
  3511.     DX = index to baud rate
  3512. Return: AH bit 7 set on error
  3513.     AH bit 7 clear if successful
  3514. Program: COMM-DRV is a universal serial communications driver by Willies'
  3515.       Computer Software Company, which supports standard INT 14 and
  3516.       FOSSIL calls as well as its own interfaces
  3517. SeeAlso: AX=8000h"COMM-DRV"
  3518. --------S-14FFFB-----------------------------
  3519. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  3520.     AX = FFFBh
  3521.     DX = port number
  3522. Return: AH bit 7 set on error
  3523.     AH bit 7 clear if successful
  3524.         BX = highest port number
  3525. --------S-14FFFC-----------------------------
  3526. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  3527.     AX = FFFCh
  3528.     DX = port number
  3529. Return: AH bit 7 set on error
  3530.     AH bit 7 clear if successful
  3531.         BX = flags (see #0245)
  3532. SeeAlso: AX=FFFDh
  3533.  
  3534. Bitfields for INT 14h flags:
  3535. Bit(s)    Description    (Table 0245)
  3536.  0    port active for INT 14h
  3537.  1    interface behaving like a FOSSIL driver
  3538. --------S-14FFFD-----------------------------
  3539. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  3540.     AX = FFFDh
  3541.     BX = flags (see #0245)
  3542.     DX = port number
  3543. Return: AH bit 7 set on error
  3544.     AH bit 7 clear if successful
  3545. SeeAlso: AX=FFFCh
  3546. --------S-14FFFE-----------------------------
  3547. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  3548.     AX = FFFEh
  3549. Return: AH bit 7 set on error
  3550.     AH bit 7 clear if successful
  3551. --------S-14FFFF-----------------------------
  3552. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  3553.     AX = FFFFh
  3554.     BX:SI -> DWORD buffer for address of information area (see #0246)
  3555.           (initialized to zeros)
  3556. Return: BX:SI buffer filled with nonzero value if installed
  3557. Program: COMM-DRV is a universal serial communications driver by Willies'
  3558.       Computer Software Company, which supports standard INT 14 and
  3559.       FOSSIL calls as well as its own interfaces
  3560. Index:    installation check;COMM-DRV
  3561.  
  3562. Format of COMM-DRV information area:
  3563. Offset    Size    Description    (Table 0246)
  3564.  00h  8 BYTEs    signature "COMM-DRV"
  3565.  08h  2 BYTEs    00h,00h
  3566.  0Ah    DWORD    -> direct address mapping table
  3567.  0Eh    DWORD    previous INT 14 vector
  3568. --------t-15---------------------------------
  3569. INT 15 - Microsoft TSR Specification
  3570.     No additional information available at this time.
  3571. --------B-1500-------------------------------
  3572. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  3573.     AH = 00h
  3574. Return: CF set on error
  3575.         AH = 86h no cassette present
  3576.     CF clear if successful
  3577. SeeAlso: AH=01h"CASSETTE"
  3578. --------M-1500-------------------------------
  3579. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  3580.     AH = 00h
  3581. Return: CX = signed X count
  3582.     DX = signed Y count
  3583. --------O-1500-------------------------------
  3584. INT 15 - VMiX v2+ - INSTALLATION CHECK
  3585.     AH = 00h
  3586. Return: DX = 0798h if installed
  3587.         AX = version (AH = major, AL = minor)
  3588. --------T-1500-------------------------------
  3589. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  3590.     AH = 00h
  3591. Note:    if issued by the highest-priority task while MultiDOS is using
  3592.       priority-based rather than round-robin scheduling, control will be
  3593.       returned to the caller immediately
  3594. SeeAlso: AH=03h"MultiDOS",AX=1000h
  3595. --------B-1501-------------------------------
  3596. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  3597.     AH = 01h
  3598. Return: CF set on error
  3599.         AH = 86h no cassette present
  3600.     CF clear if successful
  3601. SeeAlso: AH=00h"CASSETTE"
  3602. --------b-1501-------------------------------
  3603. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  3604.     AH = 01h
  3605.     AL = NVRAM location (00h to 3Fh) (see #0247)
  3606.     BL = NVRAM data value
  3607. Return: AH = return code
  3608.         00h OK
  3609.         01h address bad
  3610.         02h write error
  3611. SeeAlso: AH=02h"Amstrad"
  3612.  
  3613. Format of Amstrad NVRAM:
  3614. Offset    Size    Description    (Table 0247)
  3615.  00h    BYTE    time of day: seconds
  3616.  01h    BYTE    alarm time: seconds
  3617.  02h    BYTE    time of day: minutes
  3618.  03h    BYTE    alarm time: minutes
  3619.  04h    BYTE    time of day: hours
  3620.  05h    BYTE    alarm time: hours
  3621.  06h    BYTE    day of week, 1 = Sunday
  3622.  07h    BYTE    day of month
  3623.  08h    BYTE    month
  3624.  09h    BYTE    year mod 100
  3625.  0Ah    BYTE    RTC status register A (see #0248)
  3626.  0Bh    BYTE    RTC status register B (see #0249)
  3627.  0Ch    BYTE    RTC status register C (read-only) (see #0250)
  3628.  0Dh    BYTE    RTC status register D
  3629.         bit 7: battery good
  3630.  0Eh  6 BYTEs    time and date machine last used
  3631.  14h    BYTE    user RAM checksum
  3632.  15h    WORD    Enter key scancode/ASCII code
  3633.  17h    WORD    Forward delete key scancode/ASCII code
  3634.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  3635.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  3636.  1Dh    WORD    mouse button 1 scancode/ASCII code
  3637.  1Fh    WORD    mouse button 2 scancode/ASCII code
  3638.  21h    BYTE    mouse X scaling factor
  3639.  22h    BYTE    mouse Y scaling factor
  3640.  23h    BYTE    initial VDU mode and drive count
  3641.  24h    BYTE    initial VDU character attribute
  3642.  25h    BYTE    size of RAM disk in 2K blocks
  3643.  26h    BYTE    initial system UART setup byte
  3644.  27h    BYTE    initial external UART setup byte
  3645.  28h 24 BYTEs    available for user application
  3646. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  3647.       the clock chip
  3648.  
  3649. Bitfields for RTC status register A:
  3650. Bit(s)    Description    (Table 0248)
  3651.  7    set if date/time being updated
  3652.  6-4    time base speed, default 010 = 32768 Hz
  3653.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  3654.  
  3655. Bitfields for RTC status register B:
  3656. Bit(s)    Description    (Table 0249)
  3657.  7    clear if normal update, set if abort update
  3658.  6    periodic interrupt enable
  3659.  5    alarm interrupt enable
  3660.  4    update end interrupt enable
  3661.  3    square wave enable
  3662.  2    date mode (clear = BCD, set = binary)
  3663.  1    24-hour format
  3664.  0    daylight saving time enable
  3665.  
  3666. Bitfields for RTC status register C:
  3667. Bit(s)    Description    (Table 0250)
  3668.  7    IRQF flag
  3669.  6    PF flag
  3670.  5    AF flag
  3671.  4    UF flag
  3672. --------O-1501-------------------------------
  3673. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  3674.     AH = 01h
  3675.     STACK:    WORD    object ID of requestor
  3676.         DWORD    pointer to ASCIZ name of requested method
  3677.             "assign" assign channel to object
  3678.             "deassign" deassign channel
  3679.             "cursor" set cursor on/off
  3680.             "init" initialize comm port
  3681.             "open" open I/O channel
  3682.             "position" set cursor position
  3683.             "receive" get buffered packet from comm port
  3684.             "send" send buffered packet to comm port
  3685.             "vio" set current virtual I/O to specified channel
  3686.             "window" make window at cursor position
  3687.         ---if "assign"---
  3688.          WORD    object UID
  3689.          WORD    caller UID/PID
  3690.          DWORD    CSL with port
  3691.         ---if "deassign"---
  3692.          WORD    channel ID
  3693.         ---if "cursor"---
  3694.          WORD    channel ID (must be a SRCSINK)
  3695.          WORD    new state (0000h off, 0001h on)
  3696.         ---if "init"---
  3697.          WORD    channel ID (must be a SRCSINK)
  3698.          WORD    comm port number (00h-03h)
  3699.          WORD    UART init code
  3700.         ---if "open"---
  3701.          WORD    channel ID
  3702.         ---if "position"---
  3703.          WORD    channel ID (must be a SRCSINK)
  3704.          WORD    position (high byte = row, low byte = column)
  3705.         ---if "receive"---
  3706.          DWORD    pointer to buffer
  3707.         ---if "send"---
  3708.          WORD    length of buffer
  3709.          DWORD    pointer to buffer
  3710.         ---if "vio"---
  3711.          WORD    channel ID (must be a SRCSINK)
  3712.         ---if "window"---
  3713.          WORD    top left (high byte = row, low byte = column)
  3714.          WORD    bottom right (high byte = row, low byte = column)
  3715. Return: DX:AX -> IRP structure or 0000h:0000h
  3716. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  3717. --------T-1501-------------------------------
  3718. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  3719.     AH = 01h
  3720.     AL = semaphore number (00h-3Fh)
  3721. Return: AH = status
  3722.         00h successful
  3723.         02h invalid semaphore number
  3724. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  3725.       task and the call returns immediately
  3726.     if the semaphore is already owned by another task, the calling task
  3727.       is placed on a queue for the semaphore and suspended until it can
  3728.       become owner of the semaphore
  3729.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  3730. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  3731. --------B-1502-------------------------------
  3732. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  3733.     AH = 02h
  3734.     CX = number of bytes to read
  3735.     ES:BX -> buffer
  3736. Return: CF clear if successful
  3737.         DX = number of bytes read
  3738.         ES:BX -> byte following last byte read
  3739.     CF set on error
  3740.     AH = status (see #0251)
  3741. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  3742.  
  3743. (Table 0251)
  3744. Values for Cassette status:
  3745.  00h    successful
  3746.  01h    CRC error
  3747.  02h    bad tape signals
  3748.  04h    no data
  3749.  80h    invalid command
  3750.  86h    no cassette present
  3751. --------b-1502-------------------------------
  3752. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  3753.     AH = 02h
  3754.     AL = NVRAM location (00h to 3Fh)
  3755. Return: AH = return code
  3756.         00h OK
  3757.         01h address bad
  3758.         02h checksum error
  3759.     AL = NVRAM data value
  3760. SeeAlso: AH=01h"Amstrad"
  3761. --------O-1502-------------------------------
  3762. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  3763.     AH = 02h
  3764.     STACK:    WORD    object ID of requestor
  3765.         DWORD    pointer to ASCIZ name of requested method
  3766.             "assign" allocate low memory block
  3767.             "assign extended" allocate extended memory pages
  3768.             "assign gdt" allocate GDT selector
  3769.             "paged" allocate low paged memory
  3770.             "paged extended" alllocate extended memory pages
  3771.             "deassign" free memory block
  3772.             "deassign gdt" free GDT selector
  3773.             "getvpage" get physical address for virtual page
  3774.             "setvpage" set physical address for virtual page
  3775.             "info" get VMiX memory usage info block
  3776.             "move" move contents of 32-bit memory
  3777.             "newmcb" make new DOS memory control block
  3778.             "owner" get process ID of MCB or PSP owner
  3779.             "umb" allocate upper memory block
  3780.             "video" toggle system use of vidoe memory and get stat
  3781.         ---if "assign"---
  3782.          WORD    number of objects
  3783.          WORD    size in bytes (multiple of 512 bytes)
  3784.         ---if "assign extended"---
  3785.          WORD    number of objects
  3786.          WORD    size in bytes (multiple of 4K)
  3787.         ---if "assign gdt"---
  3788.          WORD    access type (low byte)
  3789.          WORD    segment size in paragraphs
  3790.          DWORD    pointer to start of physical segment
  3791.         ---if "paged"---
  3792.          WORD    number of 512-byte pages
  3793.         ---if "paged extended"
  3794.          WORD    number of 4K pages
  3795.         ---if "deassign"---
  3796.          DWORD    pointer returned by previous allocation call
  3797.         ---if "deassign gdt"---
  3798.          WORD    GDT selector
  3799.         ---if "getvpage"---
  3800.          WORD    owner's process ID
  3801.          DWORD    pointer to buffer for page structure (struct VPGE)
  3802.         ---if "setvpage"---
  3803.          WORD    owner's process ID
  3804.          DWORD    pointer to new page structure (struct VPGE)
  3805.         ---if "info"---
  3806.          no additional arguments
  3807.         ---if "move"
  3808.          DWORD    32-bit source address
  3809.          DWORD    32-bit destination address
  3810.          WORD    number of words to move
  3811.         ---if "newmcb"---
  3812.          DWORD    pointer to new MCB's location
  3813.          WORD    size of memory block
  3814.          DWORD    pointer to ASCIZ name string (max 8 chars)
  3815.         ---if "owner"---
  3816.          WORD    MCB or PSP segment
  3817.         ---if "umb"---
  3818.          WORD    size in paragraphs
  3819.         ---if "video"---
  3820.          no additional arguments
  3821. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  3822. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  3823. --------T-1502-------------------------------
  3824. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  3825.     AH = 02h
  3826.     AL = semaphore number (00h-3Fh)
  3827. Return: AH = status
  3828.         00h successful
  3829.         01h not semaphore owner
  3830.         02h invalid semaphore number
  3831. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  3832.       queue will become the new owner and be reawakened
  3833.     do not use within an interrupt handler
  3834. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  3835. --------B-1503-------------------------------
  3836. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  3837.     AH = 03h
  3838.     CX = number of bytes to write
  3839.     ES:BX -> data buffer
  3840. Return: CF clear if successful
  3841.         ES:BX -> byte following last byte written
  3842.     CF set on error
  3843.     AH = status (see #0251)
  3844.     CX = 0000h
  3845. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  3846. --------V-1503-------------------------------
  3847. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  3848.     AH = 03h
  3849.     AL = value (I,R,G,B bits)
  3850. SeeAlso: AH=04h"Amstrad"
  3851. --------O-1503-------------------------------
  3852. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  3853.     AH = 03h
  3854.     STACK:    DWORD    pointer to ASCII prompt
  3855.         WORD    field outline character
  3856.         WORD    length of input field (max 7Fh)
  3857.         DWORD    address of pointer to input buffer
  3858. Return: AX = length of input (input buffer is padded with blanks)
  3859. SeeAlso: AH=04h"VMiX"
  3860. --------T-1503-------------------------------
  3861. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  3862.     AH = 03h
  3863.     DX = number of time slices to remain suspended
  3864. Return: after specified interval has elapsed
  3865. Note:    when priority-based scheduling is in use, high-priority tasks should
  3866.       use this function to yield the processor
  3867. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  3868. --------B-1504-------------------------------
  3869. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  3870.     AH = 04h
  3871.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0252)
  3872.     DS = segment containing ABIOS RAM extensions (zero if none)
  3873. Return: CF clear if successful
  3874.         AH = 00h success
  3875.         ES:DI buffer filled
  3876.         AL destroyed
  3877.     CF set on failure
  3878.         AX destroyed
  3879.         AH = 80h/86h if not supported
  3880. SeeAlso: AH=05h"ABIOS",AH=C1h
  3881.  
  3882. Format of ABIOS System Parameter Table:
  3883. Offset    Size    Description    (Table 0252)
  3884.  00h    DWORD    FAR address of ABIOS Common Start Routine
  3885.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  3886.  08h    DWORD    FAR address of ABIOS Time-out Routine
  3887.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  3888.  0Eh 16 BYTEs    reserved
  3889.  1Eh    WORD    number of entries in initialization table
  3890. --------V-1504-------------------------------
  3891. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  3892.     AH = 04h
  3893.     AL = value (RDSEL1 and RDSEL0)
  3894. SeeAlso: AH=03h"Amstrad",05h"Amstrad"
  3895. --------O-1504-------------------------------
  3896. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  3897.     AH = 04h
  3898.     STACK:    DWORD    control string
  3899.         DWORD    array of arguments
  3900. SeeAlso: AH=03h"VMiX"
  3901. --------T-1504-------------------------------
  3902. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  3903.     AH = 04h
  3904.     AL = mailbox number (00h-3Fh)
  3905.     CX = message length in bytes
  3906.     DS:SI -> message
  3907. Return: AH = status
  3908.         00h successful
  3909.         01h out of message memory
  3910.         02h invalid mailbox number
  3911. Note:    the message is copied into a system buffer; the caller may immediately
  3912.       reuse its buffer
  3913. SeeAlso: AH=05h"MultiDOS"
  3914. --------B-1505-------------------------------
  3915. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  3916.     AH = 05h
  3917.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0253)
  3918.     DS = segment containing ABIOS RAM extensions (zero if none)
  3919. Return: CF clear if successful
  3920.         AH = 00h success
  3921.         ES:DI buffer filled
  3922.         AL destroyed
  3923.     CF set on failure
  3924.         AX destroyed
  3925.         AH = 80h/86h if not supported
  3926. SeeAlso: AH=04h"ABIOS",AH=C1h
  3927.  
  3928. Format of one entry of ABIOS Initialization Table:
  3929. Offset    Size    Description    (Table 0253)
  3930.  00h    WORD    device ID (see #2176)
  3931.  02h    WORD    number of Logical IDs
  3932.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  3933.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  3934.  0Ah    WORD    request block length
  3935.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  3936.  0Eh    WORD    Data Pointers length (in Common Data Area)
  3937.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  3938.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  3939.  12h  6 BYTEs    reserved
  3940.  
  3941. (Table 2176)
  3942. Values for ABIOS device ID:
  3943.  00h    ABIOS internal calls
  3944.  01h    floppy disk
  3945.  02h    hard disk
  3946.  03h    video
  3947.  04h    keyboard
  3948.  05h    parallel port
  3949.  06h    serial port
  3950.  07h    system timer
  3951.  08h    real-time clock
  3952.  09h    system services
  3953.  0Ah    NMI
  3954.  0Bh    mouse
  3955.  0Eh    CMOS RAM
  3956.  0Fh    DMA
  3957.  10h    Programmable Option Select (POS)
  3958.  16h    keyboard password
  3959. --------V-1505-------------------------------
  3960. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  3961.     AH = 05h
  3962.     AL = value (I,R,G,B bits)
  3963. SeeAlso: AH=04h"Amstrad"
  3964. --------O-1505-------------------------------
  3965. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  3966.     AH = 05h
  3967. Return: AX = process ID
  3968. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  3969. --------T-1505-------------------------------
  3970. INT 15 - MultiDOS Plus - CHECK MAILBOX
  3971.     AH = 05h
  3972.     AL = mailbox number (00h-3Fh)
  3973. Return: AH = status
  3974.         00h successful
  3975.         DX = length of first message in queue, 0000h if no message
  3976.         02h invalid mailbox number
  3977. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  3978. --------b-1506-------------------------------
  3979. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  3980.     AH = 06h
  3981. Return: BX = version number
  3982. --------O-1506-------------------------------
  3983. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  3984.     AH = 06h
  3985.     STACK:    WORD    process ID
  3986. Return: DX:AX -> process control block
  3987. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  3988. --------T-1506-------------------------------
  3989. INT 15 - MultiDOS Plus - READ MAILBOX
  3990.     AH = 06h
  3991.     AL = mailbox number (00h-3Fh)
  3992.     CX = size of buffer in bytes
  3993.     ES:DI -> buffer for message
  3994. Return: AH = status
  3995.         00h successful
  3996.         CX = number of bytes copied
  3997.         DX = actual length of message
  3998.         02h invalid mailbox number
  3999. Note:    if the caller's buffer is not large enough, the message is truncated
  4000.       and the remainder is lost
  4001. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  4002. --------O-1507-------------------------------
  4003. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  4004.     AH = 07h
  4005.     STACK:    WORD    object type
  4006. Return: DX:AX -> object control block
  4007. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  4008. --------T-1507-------------------------------
  4009. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  4010.     AH = 07h
  4011.     BX:CX = entry point of new task
  4012.     DX = stack size in paragraphs
  4013. Return: AH = status
  4014.         00h successful
  4015.         01h no free task control blocks
  4016.         02h no free memory for task's stack
  4017. Note:    execution returns immediately to calling task
  4018. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  4019. --------O-1508-------------------------------
  4020. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  4021.     AH = 08h
  4022.     STACK:    WORD    channel ID
  4023. Return: DX:AX -> channel control block
  4024. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  4025. --------T-1508-------------------------------
  4026. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  4027.     AH = 08h
  4028. Return: calling task terminated, so execution never returns to caller
  4029. Notes:    an internal task must be terminated with this function rather than a
  4030.       DOS termination function
  4031.     task's stack space is returned to parent task's memory pool
  4032. SeeAlso: AH=07h"MultiDOS"
  4033. --------O-1509-------------------------------
  4034. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  4035.     AH = 09h
  4036.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  4037.         WORD    subqueue ID
  4038. Return: AX = queue ID
  4039. SeeAlso: AH=0Ah"VMiX"
  4040. --------T-1509-------------------------------
  4041. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  4042.     AH = 09h
  4043.     AL = new priority
  4044. Note:    the priority has different meanings depending on whether priority-
  4045.       based or round-robin scheduling is used
  4046. SeeAlso: AH=07h"MultiDOS"
  4047. --------O-150A-------------------------------
  4048. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  4049.     AH = 0Ah
  4050.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  4051.         WORD    ID of current element in queue chain
  4052. Return: AX = ID of next element
  4053. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  4054. --------T-150A-------------------------------
  4055. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  4056.     AH = 0Ah
  4057.     AL = new interval
  4058.         00h = 55.0 ms (default)
  4059.         80h = 27.5 ms
  4060.         40h = 13.75 ms
  4061.         20h = 6.88 ms
  4062.         10h = 3.44 ms
  4063.         08h = 1.72 ms
  4064. SeeAlso: AH=03h"MultiDOS"
  4065. --------O-150B-------------------------------
  4066. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  4067.     AH = 0Bh
  4068.     STACK:    WORD    caller's UID
  4069.         DWORD    pointer to ASCIZ name of requested method
  4070.             "abort" abort current send/receive on comm port
  4071.             "block" start/end critical section
  4072.             "close" terminate interrupt-drive comm I/O
  4073.             "open" prepare comm port for interrupt-driven I/O
  4074.             "delay" set delay timer and wait
  4075.             "hibernate" put process to sleep
  4076.             "ints" enable/disable interrupt-driven INT 14h
  4077.             "length" get current send/receive buffer offsets
  4078.             "kswitch" switch stacks
  4079.             "numproc" get number of active processes
  4080.             "protocol" set protocol function for comm interrupts
  4081.             "relocate" set/reset VMiX flag for relocating to himem
  4082.             "status" get current open comm port status
  4083.             "wake" awaken a process
  4084.             "xport" get comm port polled for logins
  4085.         ---if "abort"---
  4086.          no additional arguments
  4087.         ---if "block"---
  4088.          WORD    0000h end, 0001h start
  4089.         ---if "close"---
  4090.          no additional arguments
  4091.         ---if "open"---
  4092.          WORD    comm port (00h-03h)
  4093.          WORD    BIOS parameter byte (see #0151 at INT 14/AH=00h),
  4094.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  4095.         ---if "delay"---
  4096.          WORD    time in seconds
  4097.         ---if "hibernate"---
  4098.          WORD    process ID
  4099.         ---if "ints"---
  4100.          WORD    0000h if no, 0001h if yes
  4101.         ---if "length","numproc","relocate","status","xport"---
  4102.          no additional arguments
  4103.         ---if "kswitch"---
  4104.          DWORD    pointer to new stack
  4105.         ---if "protocol"---
  4106.          DWORD    pointer to function (must be in low "assign"ed memory
  4107.             when in 386 mode)
  4108.         ---if "wake"---
  4109.          WORD    process ID
  4110. Return: DX:AX -> result or 0000h:0000h
  4111.         ---if "length"---
  4112.          BYTE    receive offset
  4113.          BYTE    send offset
  4114.         ---if "kswitch"---
  4115.          DWORD    old stack pointer
  4116.         ---if "numproc"---
  4117.          WORD    number of active processes
  4118.         ---if "status"---
  4119.          current open comm port status
  4120.         ---if "xport"---
  4121.          current comm port being polled for logins
  4122. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  4123. --------T-150B-------------------------------
  4124. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  4125.     AH = 0Bh
  4126. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  4127.       may be restored with AH=0Ch
  4128.     caller's video mode must be same as foreground task's video mode
  4129.     any text written while in the background will be saved to the
  4130.       foreground task's virtual screen when it switches to the background
  4131.     useful if a background task wants to display a message on the
  4132.       foreground screen
  4133. SeeAlso: AH=0Ch"MultiDOS"
  4134. --------O-150C-------------------------------
  4135. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  4136.     AH = 0Ch
  4137.     STACK:    WORD    process ID
  4138. Return: DX:AX -> TSS stack store
  4139. SeeAlso: AH=00"VMiX"
  4140. --------T-150C-------------------------------
  4141. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  4142.     AH = 0Ch
  4143. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  4144.       unless AH=0Bh has been called first
  4145. SeeAlso: AH=0Bh"MultiDOS"
  4146. --------O-150D-------------------------------
  4147. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  4148.     AH = 0Dh
  4149.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  4150.             followed by standard VMiX shell command string
  4151. Return: AX = process ID or error code "SYS_ERROR"
  4152. Note:    the maximum string length is 7Fh characters
  4153. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  4154. --------T-150D-------------------------------
  4155. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  4156.     AH = 0Dh
  4157. Note:    calling task receives all time slices until AH=0Eh is called; this
  4158.       allows time-critical events or nonreentrant code to be processed
  4159. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  4160. --------O-150E-------------------------------
  4161. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  4162.     AH = 0Eh
  4163.     STACK:    WORD    process ID
  4164. Return: AX = status (SYS_OK or SYS_ERROR)
  4165. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  4166. --------T-150E-------------------------------
  4167. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  4168.     AH = 0Eh
  4169. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  4170. --------d-150F-------------------------------
  4171. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  4172.     AH = 0Fh
  4173.     AL = phase code
  4174.         00h reserved
  4175.         01h surface analysis
  4176.         02h formatting
  4177. Return: CF clear if formatting should continue
  4178.     CF set if formatting should terminate
  4179. Note:    called during ESDI drive formatting after each cylinder is completed
  4180. SeeAlso: INT 13/AH=1Ah
  4181. --------O-150F-------------------------------
  4182. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  4183.     AH = 0Fh
  4184.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  4185.         WORD    ID of element in queue chain
  4186. Return: AX = key
  4187. SeeAlso: AH=0Ah"VMiX"
  4188. --------T-150F-------------------------------
  4189. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  4190.     AH = 0Fh
  4191.     DS:BX -> ASCIZ command
  4192. Return: after command has been processed
  4193. Notes:    specified string is executed as if it had been typed at the MultiDOS
  4194.       command prompt
  4195.     the task is placed on a queue which MultiDOS examines periodically and
  4196.       is suspended until MultiDOS has processed the command
  4197.     all lowercase characters up to the first blank are converted to upper
  4198.       case within the given buffer
  4199. --------O-1510-------------------------------
  4200. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  4201.     AH = 10h
  4202.     STACK:    DWORD    pointer to function
  4203.           N WORDs    function args
  4204. Return: AX = function's return value??? (not specified in documentation)
  4205. Note:    while the function is executing, the following global descriptors are
  4206.       available:
  4207.         20h stack segment
  4208.         38h code segment of function
  4209.         40h data alias for function's code segment
  4210.       additional GDT descriptors can be allocated using AH=02h with
  4211.       function "assign gdt"
  4212. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  4213. --------T-1510-------------------------------
  4214. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  4215.     AH = 10h
  4216.     AL = semaphore number (00h-3Fh)
  4217. Return: AH = status
  4218.         00h semaphore not in use
  4219.         01h semaphore owned by another task
  4220.         02h invalid semaphore number
  4221.         03h semaphore owned by caller
  4222. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  4223. --------Q-151000-----------------------------
  4224. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  4225.     AX = 1000h
  4226. Return: after other processes run
  4227. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  4228.       the current time-slice is set to expire at the next clock tick rather
  4229.       than immediately
  4230. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  4231. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 7A/BX=000Ah
  4232. SeeAlso: INT 7F/AH=E8h
  4233. --------Q-151001-----------------------------
  4234. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  4235.     AX = 1001h
  4236.     BX = number of bytes to allocate
  4237. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  4238.     AX = status (DV v2.42)
  4239.         0000h successful
  4240.         0001h failed
  4241. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  4242.       common memory.  Under DV v2.42, this call never generates a user
  4243.       prompt regardless of the SETERROR value; instead, it always returns
  4244.       AX=0001h and ES:DI=0000h:0000h if out of memory
  4245. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  4246. --------Q-151002-----------------------------
  4247. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  4248.     AX = 1002h
  4249.     ES:DI -> previously allocated block
  4250. Return: block freed
  4251. SeeAlso: AX=1001h,AX=DE0Dh
  4252. --------Q-151003-----------------------------
  4253. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  4254.     AX = 1003h
  4255.     BH = attribute
  4256.     BL = character
  4257.     DX = segment of object handle for window
  4258. Note:    BX=0 does not display anything, it only positions the hardware cursor
  4259. --------Q-1510-------------------------------
  4260. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  4261.     AH = 10h
  4262.     AL = 04h thru 12h
  4263. Return: pops up "Programming error" window in DV 2.x
  4264. --------Q-151013-----------------------------
  4265. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  4266.     AX = 1013h
  4267.     ES:DI -> FAR service routine
  4268. Return: BX = bit mask indicating which bit was allocated
  4269.          0000h if no more bits available
  4270. SeeAlso: AX=1014h,AX=1015h
  4271. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  4272.       interrupt; if other calls need to be made, the interrupt handler
  4273.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  4274. --------Q-151014-----------------------------
  4275. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  4276.     AX = 1014h
  4277.     BX = bit mask from INT 15/AX=1013h
  4278. SeeAlso: AX=1013h,AX=1015h
  4279. --------Q-151015-----------------------------
  4280. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  4281.     AX = 1015h
  4282.     BX = bit mask for interrupts to post
  4283. Return: indicated routines will be called: (DV 2.0x) at next task switch
  4284.                        (DV 2.2x) immediately on return from
  4285.                              hardware interrupt
  4286. SeeAlso: AX=1013h,AX=1014h
  4287. Notes:    this is one of the few TopView calls which are allowed from a hardware
  4288.       interrupt handler
  4289.     the handler will be called with ES containing the segment of the handle
  4290.       of the next task to be executed; on return, ES must be the segment of
  4291.       a task handle
  4292. --------Q-151016-----------------------------
  4293. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  4294.     AX = 1016h
  4295.     ES:DI = possible object handle
  4296. Return: BX = status
  4297.         FFFFh if ES:DI is a valid object handle (see #0255)
  4298.         0000h if ES:DI is not
  4299. Note:    under DESQview versions prior to 2.50, an object handle is always a
  4300.       pointer to the object; for versions 2.50 and up, only task handles
  4301.       are always pointers (other handles may consist of a unique object
  4302.       number and offset into DESQview's common memory)
  4303. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  4304.  
  4305. (Table 0254)
  4306. Values for DESQview object type:
  4307.  00h    window/task
  4308.  01h    mailbox
  4309.  02h    keyboard
  4310.  03h    timer
  4311.  04h    pointer
  4312.  05h    panel
  4313.  06h    objectq
  4314.  
  4315. Format of DESQview object:
  4316. Offset    Size    Description    (Table 0255)
  4317.  00h    WORD    offset in common memory of previous object of same type
  4318.  02h    WORD    offset in common memory of next object of same type
  4319.  04h    WORD    signature FEDCh (DV 2.42-)
  4320.         signature FEDCh or object number (DV 2.50+)
  4321.  06h    WORD    object type (see #0254)
  4322.  08h    DWORD    object handle to return to caller
  4323.  0Ch    DWORD    canonicalized object address (segment = common memory)
  4324.  10h    WORD    offset in common memory of owning task
  4325.         (0000h for unowned OBJECTQs)
  4326.  12h    WORD    mapping context
  4327.         offset in common memory of mapping context record (see #0257)
  4328.     remainder varies by object type and DESQview version
  4329. ---v2.42 keyboard object---
  4330.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  4331.         bit 15: keyboard opened
  4332.  16h  4 BYTEs    ???
  4333.  1Ah    WORD    priority in OBJECTQ???
  4334.  1Ch    ...
  4335.  25h    WORD    offset in common memory of ??? task
  4336.  27h  4 BYTEs    ???
  4337. ---v2.42 objectq object---
  4338.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  4339.         bit 15: OBJECTQ opened
  4340.  16h  2 BYTEs    ???
  4341.  18h    WORD    offset in common memory of ??? task
  4342.  1Ah  6 BYTEs    ???
  4343. ---v2.42 mailbox object---
  4344.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  4345.         bit 15: mailbox opened
  4346.  1Ah    WORD    priority in OBJECTQ???
  4347.  1Ch  6 BYTEs    ???
  4348.  22h    WORD    offset in common memory of mailbox name (counted string)
  4349.         0000h if no name
  4350.      <= 5 BYTEs ???
  4351. ---v2.22-2.42,2.52,2.60 window/task object---
  4352.  14h    BYTE    00h window, 01h task
  4353.  15h    BYTE    internal (not Switch menu) window number???
  4354.  16h    BYTE    internal (not Switch menu) window number???
  4355.  17h    WORD    segment of internal window record (see #0258)
  4356.  19h  2 BYTEs    ???
  4357.  1Bh    BYTE    cursor row
  4358.  1Ch    BYTE    cursor column
  4359.  1Dh    BYTE    visible window origin, row
  4360.  1Eh    BYTE    visible window origin, column
  4361.  1Fh    BYTE    window height (logical)
  4362.  20h    BYTE    window width (logical)
  4363.  21h    BYTE    window position, row
  4364.  22h    BYTE    window position, column
  4365.  23h    BYTE    window height (visible)
  4366.  24h    BYTE    window width (visible)
  4367.  25h    BYTE    row of top of frame (or window if unframed)
  4368.  26h    BYTE    column of left of frame (or window if unframed)
  4369.  27h    BYTE    window height (physical, including frame)
  4370.  28h    BYTE    window width (physical, including frame)
  4371.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  4372.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  4373.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  4374.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  4375.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  4376.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  4377.         unzoomed parameters above are updated when window is zoomed
  4378.           to full screen
  4379.  2Fh    BYTE    ??? initially logical window height
  4380.  30h    BYTE    ??? initially logical window width
  4381.  31h  2 BYTEs    ???
  4382.  33h    BYTE    minimum height of window
  4383.  34h    BYTE    minimum width of window
  4384.  35h    BYTE    maximum height of window
  4385.  36h    BYTE    maximum width of window
  4386.  37h  3 BYTEs    ???
  4387.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  4388.  42h 24 BYTEs    attributes???
  4389.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  4390.  62h  3 BYTEs    ???
  4391.  65h    BYTE    ??? bitflags
  4392.  66h    BYTE    bit 0: window is zoomed
  4393.  67h    BYTE    ???
  4394.  68h    WORD    offset in common memory of window name or 0000h if untitled
  4395.  6Ah    WORD    length of window name
  4396.  6Ch  2 BYTEs    ???
  4397.  6Eh    WORD    offset of logical cursor in window (in character cells)
  4398.  70h    DWORD    pointer to field table for window
  4399.  74h    BYTE    ???
  4400.  75h  2 BYTEs    ???
  4401.  77h    BYTE    number of last-visited field
  4402.  78h    DWORD    pointer to field table entry for last-visited field
  4403.  7Ch  3 BYTEs    ???
  4404.  7Fh    BYTE    select field marker character
  4405.  80h    BYTE    ??? bit flags
  4406.         bit 0: allow ECh window stream opcode to change reverse logattr
  4407.         bit 1: alternate field processing mode selected
  4408.  81h    BYTE    ???
  4409.  82h    DWORD    notification function (manager stream opcode 8Ah)
  4410.         no notification if segment = 0000h
  4411.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  4412.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  4413.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  4414.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  4415.  90h    BYTE    ??? bitflags
  4416.  91h    BYTE    ???
  4417.  ---task object only
  4418.  92h    BYTE    bit flags (bits 0-4)
  4419.  93h    BYTE    character for ??? (default 20h)
  4420.  94h    BYTE    ??? flag
  4421.  95h    WORD    offset in common memory of ???
  4422.  97h  2 BYTEs    ???
  4423.  99h    WORD    ???
  4424.  9Bh    BYTE    ??? bit flags
  4425.         bit 3: ???
  4426.         bit 6: perform protected-attribute processing on select fields
  4427.  9Ch    BYTE    ???
  4428.  9Dh    WORD    offset in common memory of current register save record
  4429.           (see #0256).  No register save record in use if < 01C0h
  4430.  9Fh    WORD    offset in common memory of task's keyboard object
  4431.  A1h    WORD    offset in common memory of task's OBJECTQ object
  4432.  A3h    WORD    offset in common memory of task's mailbox object
  4433.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  4434.  A7h    DWORD    user's SS:SP
  4435.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  4436.  ADh  6 BYTEs    ???
  4437.  B3h    BYTE    ??? bit flags
  4438.         bit 0: run in foreground only
  4439.  B4h    BYTE    ???
  4440.  B5h    BYTE    ??? bitflags
  4441.  B6h    BYTE    task status (see #0356 at AX=DE2Ch)
  4442.  B7h  9 BYTEs    ???
  4443.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  4444.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  4445.  C4h  2 BYTEs    ??? (0000h)
  4446.  C6h    WORD    segment of keyboard buffer for task
  4447.  C8h    WORD    offset in common memory of ??? keyboard object
  4448.  CAh    BYTE    ???
  4449. ---v2.22-2.42
  4450.  CBh    WORD    offset in common memory of ??? object
  4451.  CEh    BYTE    ??? flag
  4452.  CFh    WORD    offset in common memory of default notify window for task
  4453.           or 0000h if none
  4454.  D1h  4 BYTEs    ???
  4455.  D5h    BYTE    window number on Switch Window menu
  4456.  D6h  5 BYTEs    ???
  4457.  DBh    WORD    offset in common memory of ??? object
  4458.  DDh  2 BYTEs    ???
  4459.  DFh    WORD    API level for task
  4460.  E1h    WORD    offset in common memory of object task is waiting on if task
  4461.           status is 'waiting', else 0000h
  4462.  E7h    WORD    segment of ???
  4463.  E9h 4    BYTEs    ???
  4464.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  4465.  F1h 12 BYTEs    ???
  4466.  FBh    WORD    ???
  4467.  FDh    BYTE    ???
  4468.  FFh 12 BYTEs    ???
  4469. 10Bh    DWORD    pointer to process record (see #0259,#0260)
  4470. 10Dh 10 BYTEs    ???
  4471. 119h    DWORD    SS:SP for ???
  4472. 11Dh  4 BYTEs    ???
  4473. 121h    DWORD    pointer to ???
  4474. 125h 25 BYTEs    ???
  4475. 13Eh    DWORD    pointer to ??? in system memory
  4476. ---v2.22
  4477. 142h  3 BYTEs    ???
  4478. 145h        task's default keyboard object
  4479. ---v2.42
  4480. 142h    DWORD    pointer to first task instance data record in system memory
  4481. 148h    DWORD    pointer to last task instance data record in system memory
  4482.         (see #0261)
  4483. 14Ah    BYTE    ???
  4484. 14Dh 42 BYTEs    task's default keyboard object
  4485. 177h 32 BYTEs    task's ObjectQ object
  4486. 197h 41 BYTEs    task's default mailbox object
  4487. 1C0h 24 BYTEs    first register save record
  4488. 450h    --    default top of private stack
  4489. ---v2.52 (probably all DV/X)
  4490. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  4491.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  4492.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  4493.   0000h even when waiting.
  4494. ---v2.60
  4495.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  4496.  CDh    WORD    offset in common memory of ??? object
  4497.  D0h    BYTE    ??? flag
  4498.  D1h    WORD    offset in common memory of default notify window for task
  4499.           or 0000h if none
  4500.  D3h  4 BYTEs    ???
  4501.  D7h    BYTE    window number on Switch Window menu
  4502.  D8h  5 BYTEs    ???
  4503.  DDh    WORD    offset in common memory of ??? object
  4504.  DFh  2 BYTEs    ???
  4505.  E1h    WORD    API level for task
  4506.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  4507.           that task is waiting on, else 0000h. (Task with CPU also
  4508.           has 0000h here)
  4509.  E9h    WORD    segment of ???
  4510.  EBh 4    BYTEs    ???
  4511.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  4512.  F3h 12 BYTEs    ???
  4513.  FDh    WORD    ???
  4514.  FFh    BYTE    ???
  4515. 101h  8 BYTEs    ???
  4516. 109h    DWORD    pointer to process record in system memory
  4517. 10Dh 14 BYTEs  ???
  4518. 11Bh    DWORD    SS:SP for ???
  4519. 11Fh  4 BYTEs    ???
  4520. 123h    DWORD    pointer to ???
  4521. 127h 25 BYTEs    ???
  4522. 140h    DWORD    pointer to ??? in system memory
  4523. 144h    DWORD    pointer to first task instance data record in system memory
  4524. 148h    DWORD    pointer to last task instance data record in system memory
  4525.         (from INT 15/AX=DE27h, see below)
  4526. 14Ch    BYTE    ???
  4527. 14Eh 42 BYTEs    task's default keyboard object
  4528. 179h 32 BYTEs    task's ObjectQ object
  4529. 199h 41 BYTEs    task's default mailbox object
  4530. 1C2h 24 BYTEs    first register save record
  4531. 452h    --    default top of private stack
  4532.  
  4533. Format of DESQview Register Save Record:
  4534. Offset    Size    Description    (Table 0256)
  4535.  00h    WORD    AX
  4536.  02h    WORD    BX
  4537.  04h    WORD    CX
  4538.  06h    WORD    DX
  4539.  08h    WORD    DI
  4540.  0Ah    WORD    SI
  4541.  0Eh    WORD    DS
  4542.  10h    WORD    ES
  4543.  12h    DWORD    return address
  4544.  16h    WORD    original flags
  4545.  
  4546. Format of DESQview mapping context record:
  4547. Offset    Size    Description    (Table 0257)
  4548.  00h    WORD    lowest segment in process's memory
  4549.         (often start of system memory chain)
  4550.  02h    WORD    size of process's memory in paragraphs
  4551.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  4552.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  4553.  06h  2 BYTEs    ???
  4554.  08h    WORD    EMS handle if in EMS, else 0
  4555.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  4556.  0Ch    WORD    segment of system memory block that contains process record,
  4557.           referenced from segment of start of system memory chain
  4558.  0Eh    BYTE    ???
  4559.  0Fh    WORD    size of system memory block that contains process record
  4560.           and DOS memory in paragraphs
  4561.  11h    BYTE    bit flags
  4562.         Bit 0: Swapped out???
  4563.         Bit 1: ???
  4564.         Bit 2: Swapped out???
  4565.  12h    BYTE    ???
  4566.  13h    BYTE    reference count
  4567.  ---v2.31
  4568.  14h 10 BYTEs    ???
  4569.  1Eh    WORD    segment of process record
  4570.  20h  2 BYTEs    ???
  4571.  22h    WORD    segment of ???    (in first free system memory block???)
  4572.  24h    WORD    segment of end of system memory chain
  4573.  26h    WORD    segment of start of system memory chain
  4574.  28h  8 BYTEs    ???
  4575.  2Ah    DWORD    pointer to ??? (process record???)
  4576.  2Dh 10 BYTEs    ???
  4577.  37h    BYTE    lowest interrupt vector to save on context switch
  4578.  38h    BYTE    highest interrupt vector to save on context switch
  4579.  39h    WORD    offset in common memory of main task with this context
  4580.  3Ah 12 BYTEs    ???
  4581.  46h    BYTE    internal mapping context number
  4582.  47h 12 BYTEs    ???
  4583.  ---v2.5x-2.60
  4584.  14h  6 BYTEs    ???
  4585.  1Ah    WORD    segment of process record
  4586.  1Ch  2 BYTEs    ???
  4587.  1Eh    WORD    segment of first free system memory block
  4588.  20h    WORD    segment of start of system memory chain
  4589.  22h    WORD    segment of end of system memory chain
  4590.  24h 8    BYTEs    ???
  4591.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  4592.  30h 3    BYTEs    ???
  4593.  33h    WORD    Offset in common memory of main task with this context
  4594.  35h 7    BYTEs    ???
  4595.  3Ch    BYTE    internal mapping context number
  4596.  3Dh 14 BYTEs    ???
  4597.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  4598.  4Dh    BYTE    ??? (flag???)
  4599.  ---v2.53 (2.5x???)
  4600.  4Eh 12 BYTEs    ???
  4601.  ---v2.60
  4602.  4Eh    WORD    segment of script buffer (see #0262)
  4603.  50h  6 BYTEs    ???
  4604.  
  4605. Format of DESQview Internal Window Record (v2.31-2.60):
  4606. Offset    Size    Description    (Table 0258)
  4607.  00h    BYTE    internal window number???
  4608.  01h    BYTE    display page???
  4609.  02h    BYTE    video mode
  4610.  03h  3 BYTEs    ???
  4611.  06h    BYTE    logical window height
  4612.  07h    BYTE    logical window width
  4613.  08h    DWORD    pointer to text video buffer
  4614.  0Ch 116 BYTEs    ???
  4615.  
  4616. Format of DESQview process record (v2.31):
  4617. Offset    Size    Description    (Table 0259)
  4618. -470h 13 BYTEs    filename of ??? Script
  4619. -463h 1117 BYTEs ??? (script buffer???)
  4620.  -6h  6 BYTEs    ???
  4621.  00h    WORD    segment of parent PSP in process
  4622.  02h  5 BYTEs    ???
  4623.  07h    WORD    segment of current PSP in process
  4624.  09h    WORD    segment of first MCB in process
  4625.  0Bh 13 BYTEs    ???
  4626.  18h 1024 BYTEs process's interrupt vector table
  4627. 418h 376 BYTEs    ???
  4628. 590h        first MCB in process
  4629.  
  4630. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  4631. Offset    Size    Description    (Table 0260)
  4632.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  4633.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  4634. 11Ch    WORD    segment of parent PSP in process
  4635. 11Eh  4 BYTEs    ???
  4636. 122h    WORD    segment of current PSP
  4637. 124h    WORD    segment of current PSP
  4638. 126h    WORD    segment of first MCB in process
  4639. 128h  4 BYTEs    ???
  4640. 12Ch    DWORD    pointer to first process instance data record in system memory
  4641. 130h    DWORD    pointer to last process instance data record in system memory
  4642.         (from INT 15/AX=DE27h, see below)
  4643. 134h  8 BYTEs    ???
  4644. 13Ch    WORD    size of current environment
  4645. 13Eh    WORD    segment of current environment
  4646. 140h    WORD    segment of current PSP
  4647. 142h    DWORD    entry point of current program
  4648. 146h 10 BYTEs    ???
  4649. ---v2.52 (v2.5x???)
  4650. 150h    BYTE    ???
  4651. 151h    WORD    segment of parent PSP in process
  4652. 153h    WORD    ???
  4653. 155h    WORD    ???
  4654. 157h    WORD    ???
  4655. 159h  4 BYTEs    ???
  4656. 15Dh    WORD    segment of current environment
  4657. 15Fh    WORD    segment of current PSP
  4658. 161h    WORD    segment of ???
  4659. 162h    WORD    ???
  4660. 164h  3 BYTEs    ???
  4661. 168h 1024 BYTEs process's interrupt vector table
  4662. 568h 120 BYTEs    ???
  4663. 5E0h        first MCB in process
  4664. ---v2.60
  4665. 150h    WORD    segment of parent PSP in process
  4666. 152h    WORD    ???
  4667. 154h    WORD    ???
  4668. 156h    WORD    ???
  4669. 158h  4 BYTEs    ???
  4670. 15Ch    WORD    segment of current environment
  4671. 15Eh    WORD    segment of current PSP
  4672. 160h    WORD    segment of ???
  4673. 162h    WORD    ???
  4674. 164h 1024 BYTEs process's interrupt vector table
  4675. 564h 108 BYTEs    ???
  4676. 5D0h        first MCB in process
  4677.  
  4678. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  4679. Offset    Size    Description    (Table 0261)
  4680.  00h    DWORD    pointer to next record of same type or 00000000
  4681.  04h    DWORD    pointer to previous record of same type or 00000000
  4682.  08h    DWORD    pointer to source area of memory during restore state
  4683.  0Ch    WORD    number of bytes to save/restore
  4684.  0Eh    DWORD    pointer to destination area of memory during restore state
  4685.  12h    WORD    ??? (0)
  4686.  14h  N BYTEs    source memory buffer during restore state
  4687.  
  4688. Format of DESQview script buffer (v2.60):
  4689. Offset    Size    Description    (Table 0262)
  4690.  00h 13 BYTEs    ASCIZ Script filename
  4691.  0Dh 80 BYTEs    ???
  4692.  5Eh  N BYTEs    script records (see #0263)
  4693.  
  4694. Format of one DESQview script record (v2.60):
  4695. Offset    Size    Description    (Table 0263)
  4696.  00h    BYTE    signature 12h
  4697.  01h 18 BYTEs    blank-padded script name
  4698.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  4699.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  4700.  15h    BYTE    ???
  4701.  16h    WORD    size of script in bytes
  4702.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  4703.           scan code of non-ASCII key)
  4704.  
  4705. Format of DESQview Common Memory Header (v2.31-2.60):
  4706. Offset    Size    Description    (Table 0264)
  4707.  00h    WORD    offset of lowest used block
  4708.  02h    WORD    bytes of commom memory, including header
  4709.  04h    WORD    offset of first free block
  4710.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  4711. Note:    the above is located at the beginning of the commom memory segment
  4712. SeeAlso: #0265,#0266,#0271
  4713.  
  4714. Format of DESQview Free block header:
  4715. Offset    Size    Description    (Table 0265)
  4716.  00h    WORD    size of block in bytes including header
  4717.  02h    WORD    offset of next free block
  4718.  04h  N BYTEs    free block
  4719. SeeAlso: #0264,#0266
  4720.  
  4721. Format of DESQview Used block header:
  4722. Offset    Size    Description    (Table 0266)
  4723.  00h    WORD    size of block in bytes including header
  4724.  02h  N BYTEs    used block
  4725. SeeAlso: #0264,#0265
  4726. --------Q-151017-----------------------------
  4727. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  4728.     AX = 1017h
  4729. Return: pops up "Programming error" window in DV 2.x
  4730. --------Q-151018-----------------------------
  4731. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  4732.     AX = 1018h
  4733.     BH = column
  4734.     BL = row
  4735.     ES = segment of object handle for window below which to search
  4736.          0000h = start search with topmost window
  4737. Return: ES = segment of object handle for window which is visible at the
  4738.            indicated position, or covered by indicated window
  4739.         0000h if no window
  4740. SeeAlso: AX=1023h,AX=1024h
  4741. --------Q-151019-----------------------------
  4742. INT 15 - TopView - "SOUND" - MAKE TONE
  4743.     AX = 1019h
  4744.     BX = frequency in Hertz (0000h = silence)
  4745.     CX = duration in clock ticks (18.2 ticks/sec)
  4746. Return: immediately, tone continues to completion
  4747. Notes:    if another tone is already playing, the new tone does not start until
  4748.       completion of the previous one.  Up to 32 tones may be queued before
  4749.       the process is blocked until a note completes.
  4750.     in DV 2.00, the lowest tone allowed is 20 Hz
  4751.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  4752.       notes are also cancelled
  4753. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  4754. --------Q-15101A-----------------------------
  4755. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  4756.     AX = 101Ah
  4757. Return: stack switched
  4758. Notes:    this call may not be nested; a second call must be preceded by a call
  4759.       to "USTACK" (AX=1025h)
  4760.     while TopView requires many API calls to be executed while on the
  4761.       task's internal stack, DESQview allows those calls to be executed
  4762.       regardless of the current stack
  4763. SeeAlso: AX=1025h
  4764. --------Q-15101B-----------------------------
  4765. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  4766.     AX = 101Bh
  4767. Return: task-switching temporarily disabled
  4768. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  4769.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  4770.       will again be disabled)
  4771.     suspends the caller until DOS is free
  4772. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  4773. SeeAlso: INT 60/DI=0602h
  4774. --------Q-15101C-----------------------------
  4775. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  4776.     AX = 101Ch
  4777. Return: task-switching enabled
  4778. Note:    this API call may be made from within a hardware interrupt handler
  4779. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  4780. --------Q-15101D-----------------------------
  4781. INT 15 - TopView - "STOP" - STOP TASK
  4782.     AX = 101Dh
  4783.     ES = segment of object handle for task to be stopped
  4784.          (== handle of main window for that task)
  4785. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  4786. Note:    once a task has been stopped, additional "STOP"s are ignored
  4787. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  4788.       current task
  4789. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  4790. --------Q-15101E-----------------------------
  4791. INT 15 - TopView - "START" - START TASK
  4792.     AX = 101Eh
  4793.     ES = segment of object handle for task to be started
  4794.          (== handle of main window for that task)
  4795. Return: indicated task is started up again
  4796. Note:    once a task has been started, additional "START"s are ignored
  4797. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  4798. --------Q-15101F-----------------------------
  4799. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  4800.     AX = 101Fh
  4801.     BX = bit fields
  4802.          bits 0-12: number of characters to display
  4803.          bits 13,14: which mouse button may be pressed to remove window
  4804.              00 = either
  4805.              01 = left
  4806.              10 = right
  4807.              11 = either
  4808.          bit 15: beep if 1
  4809.     ES:DI -> text of message
  4810.     CH = width of error window (0 = default)
  4811.     CL = height of error window (0 = default)
  4812.     DX = segment of object handle
  4813. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  4814. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  4815. --------Q-151020-----------------------------
  4816. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  4817.     AX = 1020h
  4818. Return: pops up "Programming error" window in DV v2.00+
  4819. --------Q-151021-----------------------------
  4820. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  4821.     AX = 1021h
  4822.     BX = segment of object handle for task to interrupt (not self)
  4823.     DX:CX -> FAR routine to jump to next time task is run
  4824. Return: nothing
  4825. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  4826.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  4827.       needs to be preserved
  4828.     multiple PGMINTs to a single task are processed last-in first-out
  4829.     if the other task is in a DOS or DV API call, the interruption will
  4830.       occur on return from that call
  4831. --------Q-151022BX0000-----------------------
  4832. INT 15 - TopView - "GETVER" - GET VERSION
  4833.     AX = 1022h
  4834.     BX = 0000h
  4835. Return: BX nonzero, TopView or compatible loaded
  4836.     (BL = major version, BH = minor version)
  4837. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  4838. --------Q-151023-----------------------------
  4839. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  4840.     AX = 1023h
  4841.     BX = segment of object handle for parent window within which to
  4842.            position the window (0 = full screen)
  4843.     ES = segment of object handle for window to be positioned
  4844.     DL = general window position (see #0267)
  4845.     CH = number of columns to offset from position specified by DL
  4846.     CL = number of rows to offset from position specified by DL
  4847. Return: nothing
  4848.  
  4849. Bitfields for TopView general window position:
  4850. Bit(s)    Description    (Table 0267)
  4851.  0,1    horizontal position
  4852.     00 = current, 01 = center, 10 = left, 11 = right
  4853.  2,3    vertical position
  4854.     00 = current, 01 = center, 10 = top, 11 = bottom
  4855.  4    don't redraw screen if set
  4856.  5-7    not used
  4857. --------Q-151024-----------------------------
  4858. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  4859.     AX = 1024h
  4860.     BX = segment of object handle for window
  4861.           (0 = use default)
  4862. Return: ES:DI -> virtual screen
  4863.     CX = size of virtual screen in bytes
  4864.     DL = 00h text screen
  4865.          01h graphics screen
  4866. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  4867. --------Q-151025-----------------------------
  4868. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  4869.     AX = 1025h
  4870. Return: stack switched back
  4871. Notes:    call only after having switched to internal stack with AX=101Ah
  4872.     while TopView requires many API calls to be executed while on the
  4873.       task's private stack, DESQview allows those calls to be executed
  4874.       regardless of the current stack
  4875. SeeAlso: AX=101Ah
  4876. --------Q-1510-------------------------------
  4877. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  4878.     AH = 10h
  4879.     AL = 26h thru 2Ah
  4880. Return: pops up "Programming error" window in DV 2.x
  4881. --------Q-15102B-----------------------------
  4882. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  4883.     AX = 102Bh
  4884.     BX = segment of object handle for task
  4885. Return: nothing
  4886. Note:    forces a task which is waiting on its objectq to continue by placing
  4887.       the handle for the task on the objectq
  4888. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  4889. --------Q-15102C-----------------------------
  4890. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  4891.     AX = 102Ch
  4892.     ES:DI -> contents of .PIF/.DVP file (see #0268)
  4893.     BX = size of .PIF/.DVP info
  4894. Return: BX = segment of object handle for new task
  4895.          0000h on error
  4896. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  4897.  
  4898. Format of .PIF/.DVP file:
  4899. Offset    Size    Description    (Table 0268)
  4900.  00h    BYTE    reserved (0)
  4901.  01h    BYTE    checksum of bytes 02h through 170h
  4902.  02h 30 BYTEs    blank-padded program title
  4903.  20h    WORD    maximum memory to allocate to partition in KB
  4904.  22h    WORD    minimum memory required in KB
  4905.  24h 64 BYTEs    ASCIZ program pathname
  4906.  64h    BYTE    default drive letter ('A',...)
  4907.  65h 64 BYTEs    ASCIZ default directory name
  4908.  A5h 64 BYTEs    ASCIZ program parameters
  4909.  E5h    BYTE    initial screen mode (0-7) (see also offset 189h)
  4910.  E6h    BYTE    number of text pages used
  4911.  E7h    BYTE    number of first interrupt to save
  4912.  E8h    BYTE    number of last interrupt to save
  4913.  E9h    BYTE    rows in virtual screen buffer
  4914.  EAh    BYTE    columns in virtual screen buffer
  4915.  EBh    BYTE    initial window position, row
  4916.  ECh    BYTE    initial window position, column
  4917.  EDh    WORD    system memory in KB
  4918.  EFh 64 BYTEs    ASCIZ shared program name
  4919. 12Fh 64 BYTEs    ASCIZ shared program data file
  4920. 16Fh    BYTE    flags1
  4921.         bit 7: writes text directly to screen
  4922.         bit 6: runs in foreground only (see also offset 184h)
  4923.         bit 5: uses math coprocessor
  4924.         bit 4: accesses system keyboard buffer directly
  4925.         bits 3-1: reserved (0)
  4926.         bit 0: swappable
  4927. 170h    BYTE    flags2
  4928.         bit 6: uses command-line parameters in field at A5h
  4929.         bit 5: swaps interrupt vectors
  4930. ---information unique to .DVP files---
  4931. 171h  2 BYTEs    keys to use on open menu
  4932. 173h    WORD    size of script buffer in bytes
  4933. 175h    WORD    automatically give up CPU after this many tests for keyboard
  4934.           input in one clock tick (default 0 = never)
  4935. 177h    BYTE    nonzero = "uses own colors"
  4936. 178h    BYTE    nonzero if application swappable
  4937. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  4938.         in actual .DVP files, frequently 01h
  4939. 17Ch    BYTE    nonzero to automatically close on exit (see also offset 18Bh)
  4940. 17Dh    BYTE    nonzero if copy-protect floppy is required
  4941. ---information unique to DESQview 2.0+---
  4942. 17Eh    BYTE    .DVP version number
  4943.         00h DESQview v1.2+
  4944.         01h DESQview v2.0+
  4945.         02h DESQview v2.2+
  4946. 17Fh    BYTE    reserved (0)
  4947. 180h    BYTE    initial number of rows in physical window
  4948. 181h    BYTE    initial number of columns in physical window
  4949. 182h    WORD    maximum expanded memory to allow, in KB
  4950. 184h    BYTE    flags3
  4951.         bit 7: automatically assign window position
  4952.         bit 5: maximum memory value has been specified
  4953.         bit 4: disallow "Close" command
  4954.         bit 3: foreground-only when doing graphics
  4955.             set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  4956.         bit 2: don't virtualize (see also offset 18Bh)
  4957.         bit 1: foreground-only during DOS calls
  4958.             set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  4959. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  4960.         (see #0269)
  4961. 186h    BYTE    number of graphics pages used
  4962. 187h    WORD    extra system memory size
  4963. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  4964. ---information unique to DESQview 2.2+---
  4965. 18Ah    BYTE    serial port usage
  4966.         FFh uses all serial ports
  4967.         00h no serial ports
  4968.         01h only COM1
  4969.         02h only COM2
  4970. 18Bh    BYTE    flags4
  4971.         bit 7: automatically close application on exit if .COM or .EXE
  4972.             specified (see also offset 17Ch)
  4973.         bit 6: swappable if not using serial ports
  4974.         bit 5: start program with window hidden (v2.26+)
  4975.         bit 4: start program in background (v2.26+)
  4976.         bit 3: virtualize text (see also offset 184h)
  4977.         bit 2: virtualize graphics (see also offset 184h)
  4978.         bit 1: share CPU when foreground
  4979.         bit 0: share EGA when foreground and zoomed
  4980. 18Ch    BYTE    protection level for 386 machines
  4981. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  4982. ---information unique to DESQview/X 1.0---
  4983. 18Dh    BYTE    X flags
  4984.         bits 3-7: unused (0)
  4985.         bit 2: don't display wait message when opening window
  4986.         bit 1: don't display DOS window
  4987.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  4988.                (NEWPROC) inherit DOS client layer usage
  4989. 18Eh    BYTE    X keyboard behavior (0-3)
  4990. 18Fh    BYTE    font scaling
  4991.         00h fixed fonts
  4992.         01h scalable fonts
  4993. 190h 10 BYTEs    reserved (0)
  4994. 19Ah    WORD    length of data follownig XDVP signature
  4995. 19Ch  4 BYTEs    signature "XDVP"
  4996. 1A0h  N BYTEs    list of variable length records (see #0270)
  4997.  
  4998. Bitfields for DESQview keyboard conflict level:
  4999. Bit(s)    Description    (Table 0269)
  5000.  3    save/restore entire INT 09 handler state every taskswtch
  5001.  2    take special precautions for programs which read the BIOS keyboard
  5002.       buffer directly from memory
  5003.  1    never indicate keystroke available during scripts/xfers
  5004.  0    only indicate keystroke available every sixth poll
  5005.  
  5006. Format of DESQview/X variable length record:
  5007. Offset    Size    Description    (Table 0270)
  5008.  00h    WORD    length of following record, 0000h if end of record list
  5009.  02h    BYTE    record type
  5010.         01h script filename, up to 64 characters
  5011.         02h command-line parameters (allows >64 characters on cmdline)
  5012.         03h environment inheritance
  5013.         04h environment string
  5014.         05h starting window position
  5015. ---types 01h,02h,04h---
  5016.  03h  N BYTEs    ASCII data
  5017. ---type 03h---
  5018.  03h    BYTE    inheritance
  5019.         00h do not inherit
  5020.         01h inherit environment
  5021. ---type 05h---
  5022.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  5023.         starting row, starting column, starting height, starting width
  5024. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  5025.       only the last instance of each type is used; multiple occurrences of
  5026.       type 04h are concatenated
  5027. --------Q-15102D-----------------------------
  5028. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  5029.     AX = 102Dh
  5030.     BL = subfunction
  5031.          00h determine whether using keyboard mouse
  5032.         Return: BL = 00h using real mouse
  5033.                  01h using keyboard mouse
  5034.          01h turn keyboard mouse on
  5035.          02h turn keyboard mouse off
  5036. --------Q-15102E-----------------------------
  5037. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  5038.     AX = 102Eh
  5039.     BX = number of bytes
  5040. Return: AX = status
  5041.         0000h successful
  5042.         ES:DI -> allocated system memory (see #0271)
  5043.         0001h failed
  5044.         ES:DI = 0000h:0000h
  5045. Note:    under DV 2.42, this call is identical to AX=1001h
  5046. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  5047.  
  5048. Format of DESQview system memory block header:
  5049. Offset    Size    Description    (Table 0271)
  5050.  00h    WORD    segment of next header or 0000h
  5051.  02h    WORD    segment of previous header or 0000h
  5052.  04h    WORD    size of block in paragraphs, including header
  5053.  06h    BYTE    availability flag (00h in use, 01h free)
  5054. Note:    this header is located one paragraph before the memory block proper
  5055. SeeAlso: #0264
  5056. --------Q-1511-------------------------------
  5057. INT 15 - TopView commands
  5058.     AH = 11h
  5059.     AL = various (except 17h)
  5060. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  5061.       see those below
  5062. SeeAlso: AH=DEh
  5063. --------T-1511-------------------------------
  5064. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  5065.     AH = 11h
  5066.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  5067.             request (max len = 127)
  5068. Return: AX = status (SYS_OK or SYS_ERROR)
  5069. SeeAlso: AH=0Ch"VMiX"
  5070. --------T-1511-------------------------------
  5071. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  5072.     AH = 11h
  5073. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  5074. SeeAlso: AH=12h"MultiDOS"
  5075. Index:    hotkeys;MultiDOS Plus
  5076. --------Q-151117BX0000-----------------------
  5077. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  5078.     AX = 1117h
  5079.     BX = 0000h    get current mapping context without setting
  5080.          nonzero    set new mapping context
  5081. Return: BX = mapping context in effect before call
  5082.     interrupts enabled
  5083. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  5084.     mapping contexts determine conventional-memory addressability; setting
  5085.       a mapping context ensures that the associated program and data areas
  5086.       are in memory for access.  Usable by drivers, TSRs and shared
  5087.       programs.
  5088.     caller need not be running under DESQview, but must ensure that the
  5089.       stack in use will not be mapped out by the call
  5090. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  5091. --------m-1511DE-----------------------------
  5092. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  5093.     AX = 11DEh
  5094. Return: CF clear if installed
  5095.         AX = segment at which QEXT.SYS is located
  5096. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  5097.       versions also implement the XMS standard
  5098. Note:    a private entry point (see #0272) may be found by searching the
  5099.       beginning of the returned segment for the signature string
  5100.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  5101.       prior to the signature contains the QEXT version number in BCD,
  5102.       and the word prior to that contains the offset within the QEXT
  5103.       code segment of the private entry point
  5104. SeeAlso: INT 2F/AX=4310h,INT 67/AH=3Fh
  5105.  
  5106. (Table 0272)
  5107. Call QEXT.SYS private entry point with:
  5108.     AH = 00h ???
  5109.     AH = nonzero ???
  5110. --------T-1512-------------------------------
  5111. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  5112.     AH = 12h
  5113.     STACK:    WORD    process ID
  5114. Return: AX = status (SYS_OK or SYS_ERROR)
  5115. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  5116. --------T-1512-------------------------------
  5117. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  5118.     AH = 12h
  5119. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  5120. SeeAlso: AH=11h"MultiDOS"
  5121. Index:    hotkeys;MultiDOS Plus
  5122. --------Q-1512--BH00-------------------------
  5123. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  5124.     AH = 12h
  5125.     BH = 00h
  5126.     BL = which handle to return
  5127.         00h handle in DWORD on top of stack
  5128.         01h current task's window handle
  5129.         02h given task's mailbox handle (task's handle on stack)
  5130.         03h current task's mailbox handle
  5131.         04h given task's keyboard handle (task's handle on stack)
  5132.         05h current task's keyboard object handle
  5133.         06h given task's OBJECTQ handle (task's handle on stack)
  5134.         07h current task's OBJECTQ handle
  5135.         08h      \
  5136.           thru > return 0000:0000 under DV < 2.26
  5137.         10h      /
  5138.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  5139.         0Dh (2.26+) task handle of owner (parent) of current task
  5140. Return: DWORD on top of stack is object handle
  5141. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  5142.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  5143.       window)
  5144. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  5145. --------Q-1512--BH01-------------------------
  5146. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  5147.     AH = 12h
  5148.     BH = 01h
  5149.     BL = object type to create
  5150.         00h (DV 2.0x only) handle is DWORD on top of stack
  5151.         01h (DV 2.0x only) use task's window handle
  5152.         02h (DV 2.0x only) given task's mailbox (task's handle on stack)
  5153.         03h (DV 2.0x only) current task's mailbox
  5154.         04h (DV 2.0x only) given task's keyboard (task's handle on stack)
  5155.         05h (DV 2.0x only) current task's keyboard object
  5156.         08h WINDOW class
  5157.         09h MAILBOX class
  5158.         0Ah KEYBOARD class
  5159.         0Bh TIMER object (counts down 32-bit time in 10ms increments)
  5160.         0Fh POINTER object
  5161.         10h PANEL object
  5162.     STACK: (if window object or WINDOW class)
  5163.            DWORD address to jump to (no new task if high word == 0)
  5164.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  5165.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  5166.            DWORD bytes system memory for input buffer for READ/READN
  5167.             (0 == none, -1 == default--same as logical window size)
  5168.            DWORD window size, columns
  5169.            DWORD window size, rows
  5170.            DWORD length of window title
  5171.            DWORD address of window title
  5172. Return: DWORD on top of stack is new object handle
  5173. Notes:    if a new task is created, it is started with
  5174.       AX = BX = SI = DI = BP = 0
  5175.       DX:CX = handle of parent task
  5176.       DS = ES = SS = segment of private stack (and new task's handle)
  5177.     new windows are orphans, inherit the colors/hidden status of the
  5178.       creating task's window, and are placed in the upper left hand corner
  5179.       of the screen but not automatically redrawn
  5180.     new keyboards are closed, and have all object bits cleared except for
  5181.       the hardware cursor bit
  5182. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  5183. --------Q-1512--BH02-------------------------
  5184. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  5185.     AH = 12h
  5186.     BH = 02h
  5187.     BL = object
  5188.         00h handle in DWORD on top of stack
  5189.         window: close window and free
  5190.         timer: free timer
  5191.         panel: free panel object
  5192.         pointer: free pointer
  5193.         01h task's window handle - kills task, never returns
  5194.         02h given task's mailbox (task's handle on top of stack)
  5195.         03h current task's mailbox
  5196.         04h given task's keyboard (task's handle on top of stack)
  5197.         05h current task's keyboard object
  5198. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  5199.       task windows also free any mailbox, objectq, and panel objects held
  5200.       by the task and any child tasks
  5201.     if the keyboard being freed is the default keyboard for a task, this
  5202.       call is equivalent to CLOSE
  5203.     panel and pointer objects are automatically closed if open
  5204. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  5205. --------Q-1512--BH03-------------------------
  5206. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  5207.     AH = 12h
  5208.     BH = 03h
  5209.     BL = object
  5210.         00h mailbox handle in DWORD on top of stack
  5211.         02h sender of last msg read from mailbox (task's handle on stack)
  5212.         03h sender of last msg read from current task's mailbox
  5213. Return: DWORD on stack is task handle of message sender
  5214. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  5215. --------Q-1512--BH03-------------------------
  5216. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  5217.     AH = 12h
  5218.     BH = 03h
  5219.     BL = window to be connected
  5220.         00h handle of window to be attached in DWORD on top of stack
  5221.         01h attach current task's main window
  5222.     STACK: DWORD handle of window to attach to or 00000000h to detach
  5223. Return: STACK popped
  5224. Notes:    when two windows are connected, both will move if the user moves either
  5225.     multiple windows may be attached to a single window, but each window
  5226.       may only be attached to one window at a time
  5227. SeeAlso: AH=12h/BH=83h
  5228. --------Q-1512--BX0300-----------------------
  5229. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  5230.     AH = 12h
  5231.     BX = 0300h
  5232.     STACK: DWORD handle of panel object (see #0273)
  5233. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  5234.            DWORD address of directory
  5235. Note:    a null string is returned if the object is not open
  5236. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  5237.  
  5238. Format of TopView panel file:
  5239. Offset    Size    Description    (Table 0273)
  5240.  00h  2 BYTEs    C0h C3h
  5241.  02h    BYTE    number of panels in file
  5242.  03h    for each panel in file:
  5243.         8 BYTEs  blank-padded panel name
  5244.           DWORD  panel offset in file
  5245.           WORD   panel length
  5246.     data for panels (each consists of one or more window/query/manager
  5247.       streams); first byte of each panel must be 1Bh, fifth byte must be
  5248.       E5h
  5249. --------Q-1512--BH04-------------------------
  5250. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  5251.     AH = 12h
  5252.     BH = 04h
  5253.     BL = window to read from
  5254.         00h handle is DWORD on top of stack
  5255.         01h use calling task's default window
  5256.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5257.         0Dh (DV 2.26+) default window of parent task of current task
  5258. Return: STACK:    DWORD number of bytes read
  5259.         DWORD address of buffer
  5260. Notes:    reading starts at the current logical cursor position; the cursor is
  5261.       updated to point at the character following the last one read
  5262.     any translucent blanks (FFh) which are visible on screen are changed
  5263.       to the character which is seen through them
  5264.     the string produced by the read is placed in an input buffer which may
  5265.       be reused by the next READ or READN of a window
  5266.     window stream opcodes D8h and D9h determine whether the read returns
  5267.       characters or attributes
  5268. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  5269. --------Q-1512--BH04-------------------------
  5270. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  5271.     AH = 12h
  5272.     BH = 04h
  5273.     BL = object
  5274.         00h handle is DWORD on top of stack
  5275.         mailbox: wait for and get next message
  5276.         keyboard: wait for and get pointer to next input buffer
  5277.         pointer: wait for and get next message
  5278.         02h get next message from mailbox (task's handle on top of stack)
  5279.         03h get next message from current task's mailbox
  5280.         04h get the next input from keyboard (handle on top of stack)
  5281.         05h get the next input from task's default keyboard
  5282.         06h wait for input from any object in OBJECTQ (handle on stack)
  5283.         07h wait for input from any object in task's default OBJECTQ
  5284. Return: STACK: (if objectq) DWORD handle of object with input
  5285.            (otherwise)  DWORD number of bytes
  5286.                 DWORD address of pointer message (see #0274)
  5287. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  5288.       containing the character code as returned by the BIOS; the BIOS scan
  5289.       code is available via the STATUS call if the character is zero
  5290.     for a keyboard in field mode, the input buffer format is determined
  5291.       by the field table header for the window the keyboard is attached to
  5292.     keyboard input buffers and mailbox message buffers may be invalidated
  5293.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  5294. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  5295.  
  5296. Format of DESQview pointer message:
  5297. Offset    Size    Description    (Table 0274)
  5298.  00h    WORD    row
  5299.  02h    WORD    column
  5300.  04h    BYTE    status (see #0275)
  5301.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  5302.  
  5303. Bitfields for DESQview pointer status:
  5304. Bit(s)    Description    (Table 0275)
  5305.  7-2    number of clicks-1 if multiple-click mode active
  5306.  7    set when press/release mode active and button pressed
  5307.  6    set when press/release mode active and button released
  5308.  1-0    button pressed (00=none,01=button1,10=button2)
  5309. --------Q-1512--BX0400-----------------------
  5310. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  5311.     AH = 12h
  5312.     BX = 0400h
  5313.     STACK: DWORD timer's handle
  5314. Return: after timer expires
  5315.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  5316. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  5317. --------Q-1512--BX0400-----------------------
  5318. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  5319.     AH = 12h
  5320.     BX = 0400h
  5321.     STACK: DWORD handle of panel object
  5322.            DWORD window's handle (or 0 for current task's window)
  5323.            DWORD length of panel name
  5324.            DWORD pointer to panel name
  5325. Return: STACK: DWORD handle of window which was used
  5326.            DWORD handle of keyboard or 0
  5327. Notes:    status of APPLY may be checked with STATUS message
  5328.     panel MUST have the following format
  5329.       first byte must be 1Bh (i.e. must start with a stream)
  5330.       first opcode in stream must be E5h
  5331.         single byte arg of opcode is interpreted thus:
  5332.           bits 7,6    11 means create new window
  5333.             10 means create new field table for existing window
  5334.             01 means use existing window and field table
  5335.           bit 5 if set, panel contains a field table
  5336.             (creates a new keyboard and puts it in field mode)
  5337.           bit 4 if set, panel contains input fields
  5338.           bit 3 if set, panel contains select fields but no input fields
  5339.     if the panel contains input or select fields, a keyboard handle is
  5340.       returned; either the window's current open keyboard or a
  5341.       newly-created keyboard object.  The caller should read that keyboard
  5342.       to obtain input from the panel.
  5343. SeeAlso: AH=12h/BH=84h
  5344. --------Q-1512--BH05------------------------
  5345. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  5346.     AH = 12h
  5347.     BH = 05h
  5348.     BL = object
  5349.         00h handle is DWORD on top of stack
  5350.         timer: start timer to end at a specified time
  5351.         keyboard: add input buffer to queue
  5352.         pointer: move pointer icon to specified position
  5353.         02h send message by value/status=0 to mbox (task's handle on stack)
  5354.         03h send message by value/status=0 to current task's mailbox
  5355.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  5356.         05h add input buffer to task's default KEYBOARD queue
  5357.         06h add an object to OBJECTQ (handle on top of stack)
  5358.         07h add an object to task's default OBJECTQ
  5359.     STACK: (if mailbox)  DWORD length
  5360.                  DWORD address
  5361.            (if keyboard) DWORD status (scan code in keystroke mode)
  5362.                  DWORD length (should be 1 in keystroke mode)
  5363.                  DWORD address
  5364.            (if objectq)  DWORD handle of object to add
  5365.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  5366.                    only accurate to 1/18 sec)
  5367.            (if pointer)  DWORD column relative to origin of window
  5368.                  DWORD row relative to origin of window
  5369. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  5370.     the data and status written to a keyboard object must match the format
  5371.       returned by the keyboard object in the current mode
  5372.     the pointer position is scaled according to the current scaling factors
  5373. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  5374. --------Q-1512--BH05-------------------------
  5375. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  5376.     AH = 12h
  5377.     BH = 05h
  5378.     BL = window to write to
  5379.         00h DWORD on top of stack is window handle
  5380.         01h write string to task's default window
  5381.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5382.         0Dh (DV 2.26+) default window of parent of current task
  5383.     STACK: DWORD object handle if handle passed on stack
  5384.            DWORD total length of string (high word == 0)
  5385.            DWORD address of string to display (see #0276)
  5386. Return: indicated actions performed
  5387.     a. non-control characters are displayed (opcodes DEh and DFh control
  5388.        whether the attributes are left or changed to the current attrib)
  5389.     b. CR/LF/BS/Tab cause the usual cursor movement
  5390.     c. ESC starts a data structure with additional commands if following
  5391.        byte is less than 20h; otherwise, it is written to the window
  5392.     STACK:    DWORD handle of new window if window stream opcode E6h
  5393.         else nothing
  5394. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  5395.  
  5396. Format of stream data structure:
  5397. Offset    Size    Description    (Table 0276)
  5398.  00h    BYTE    1Bh magic value identifying start of stream
  5399.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  5400.         (see #0277,#0283,#0284,#0285)
  5401.  02h    WORD    length of remainder of stream in bytes
  5402.     var-length fields follow, each an OPCODE followed by
  5403.          zero or more args
  5404.  
  5405. (Table 0277)
  5406. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  5407. Opcodes:args
  5408.  00h  display 20h blanks with the default attribute
  5409.  01h-1Fh display OPCODE blanks with the default attribute
  5410.  20h  display char with default attribute 20h times
  5411.     BYTE char to repeat
  5412.  21h-3Fh display char with default attribute OPCODE-20h times
  5413.     BYTE char to repeat
  5414.  40h  display 20h blanks with specified attribute
  5415.     BYTE attribute of blanks
  5416.  41h-5Fh display OPCODE-40h blanks with specified attribute
  5417.     BYTE attribute of blanks
  5418.  60h  display next 20h characters
  5419.     20h BYTEs characters to display
  5420.  61h-7Fh display next OPCODE-60h characters
  5421.     N BYTEs characters to display
  5422.  80h-87h display N blanks with default attribute
  5423.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  5424.           [000h means 800h]
  5425.  88h-8Fh display N copies of the character
  5426.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  5427.           [000h means 800h]
  5428.     BYTE character to repeat
  5429.  90h-97h display N blanks with specified attribute
  5430.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  5431.           [000h means 800h]
  5432.     BYTE attribute
  5433.  98h-9Fh display string at logical cursor pos
  5434.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  5435.           [000h means 800h]
  5436.     N BYTEs string to display
  5437.  A0h  set logical cursor row
  5438.     BYTE row number (0 is top)
  5439.  A1h  set logical cursor column
  5440.     BYTE column number (0 is leftmost)
  5441.  A2h  set top edge of scrolling region
  5442.     BYTE row
  5443.  A3h  set left edge of scrolling region
  5444.     BYTE column
  5445.  A4h  set row of physical window position
  5446.     BYTE line
  5447.  A5h  set column of physical window position
  5448.     BYTE column
  5449.  A6h  set height of physical window
  5450.     BYTE number of rows
  5451.  A7h  set width of physical window
  5452.     BYTE number of columns
  5453.  A8h  set viewport row
  5454.     BYTE row
  5455.  A9h  set viewport column
  5456.     BYTE column
  5457.  AAh  set virtual screen height [contents of window unpredictable after]
  5458.     BYTE rows
  5459.  ABh  set virtual screen width [contents of window unpredictable after]
  5460.     BYTE columns
  5461.  ACh-AEh unused
  5462.  AFh  set compatible/preferred video modes
  5463.     BYTE compatibility/preference mask
  5464.         bit 7    compatible with monochrome
  5465.         bit 6    compatible with color text, EGA/VGA graphics
  5466.         bit 5    compatible with medium-resolution CGA graphics
  5467.         bit 4    compatible with high-resolution CGA graphics
  5468.         bit 3    prefer monochrome
  5469.         bit 2    prefer color text, EGA/VGA graphics
  5470.         bit 1    prefer medium-resolution CGA graphics
  5471.         bit 0    prefer high-resolution CGA graphics
  5472.  B0h  move logical cursor down
  5473.     BYTE number of rows (signed, negative values move up)
  5474.         [if rows=0 and hardware cursor owner, update hardware cursor]
  5475.  B1h  move logical cursor right
  5476.     BYTE number of columns (signed, negative values move left)
  5477.         [if cols=0 and hardware cursor owner, update hardware cursor]
  5478.  B2h  shift top edge of scrolling region
  5479.     BYTE number of rows (signed)
  5480.  B3h  shift left edge of scrolling region
  5481.     BYTE number of columns (signed)
  5482.  B4h  shift physical window down
  5483.     BYTE number of lines (signed)
  5484.  B5h  shift physical window right
  5485.     BYTE number of columns (signed)
  5486.  B6h  expand physical window vertically
  5487.     BYTE number of lines (signed)
  5488.  B7h  expand physical window horizontally
  5489.     BYTE number of columns (signed)
  5490.  B8h  adjust viewport row
  5491.     BYTE number of rows (signed)
  5492.  B9h  adjust viewport column
  5493.     BYTE number of columns (signed)
  5494.  BAh  adjust virtual screen height [contents of window unpredict after]
  5495.     BYTE number of rows to increase (signed)
  5496.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  5497.     BYTE number of columns to increase (signed)
  5498.  BCh-BFh reserved (currently unused)
  5499.  C0h  set logical cursor position
  5500.     BYTE row number (0 is top border)
  5501.     BYTE column number (0 is left border)
  5502.  C1h  set top left corner of scrolling region
  5503.     BYTE row
  5504.     BYTE column
  5505.  C2h  set physical window pos
  5506.     BYTE upper left row (no top border if 0)
  5507.     BYTE upper left column (no left border if 0)
  5508.  C3h  set current window size
  5509.     BYTE number of rows
  5510.     BYTE number of columns
  5511.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  5512.       in window)
  5513.     BYTE row
  5514.     BYTE column
  5515.  C5h  set size of virtual screen [contents unpredictable afterwards]
  5516.     BYTE number of rows
  5517.     BYTE number of columns
  5518.  C6h  unused
  5519.  C7h  unused
  5520.  C8h  set logical cursor relative to current position
  5521.     BYTE number of rows to move down (signed)
  5522.     BYTE number of columns to move right (signed)
  5523.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  5524.  C9h  shift top left corner of scrolling region
  5525.     BYTE number of rows (signed)
  5526.     BYTE number of columns (signed)
  5527.  CAh  set window pos relative to current position
  5528.     BYTE number of rows to shift down (signed)
  5529.     BYTE number of columns to shift right (signed)
  5530.  CBh  set window size relative to current size
  5531.     BYTE number of rows to expand (signed)
  5532.     BYTE number of cols to expand (signed)
  5533.  CCh  shift viewport relative to current position
  5534.     BYTE rows to shift (signed)
  5535.     BYTE cols to shift (signed)
  5536.  CDh  resize virtual screen
  5537.     BYTE number of rows to expand (signed)
  5538.     BYTE number of columns to expand (signed)
  5539.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  5540.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  5541.  D0h  allow window frame to extend beyond screen
  5542.  D1h  always display a complete frame, even if window extends beyond edge of
  5543.       screen
  5544.  D2h  allow DV to change logical colors on video mode switch (default)
  5545.  D3h  application changes logical attributes
  5546.  D4h  window is visible [must redraw to actually make visible]
  5547.  D5h  window is hidden [must redraw to actually remove]
  5548.  D6h  window has frame (default)
  5549.  D7h  window unframed [must redraw to actually remove frame]
  5550.  D8h  READ/READN will read characters from window (default)
  5551.  D9h  READ/READN will read attributes from window
  5552.  DAh  use logical attributes, which may be remapped (see #0278)
  5553.  DBh  use physical attributes for characters
  5554.  DCh  enable special actions for control characters (default)
  5555.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  5556.       call
  5557.  DEh  write both character and attribute (default)
  5558.  DFh  write character only, leave attribute untouched
  5559.  E0h  repeat following commands through E1h opcode
  5560.     BYTE number of times to repeat (00h means 256 times)
  5561.  E1h  end of commands to repeat, start repeating them
  5562.  E2h  set current output color
  5563.     BYTE color
  5564.  E3h  clear virtual screen from scroll origin to end using current color
  5565.  E4h  redraw window
  5566.  E5h  select menu style
  5567.     BYTE style (normally 18h)
  5568.         bits 5,4 = 01 use two-letter menu entries for remainder of
  5569.           this stream
  5570.  E5h  (panel file only)
  5571.     BYTE modifier
  5572.         bits 7,6 = 11 panel stream creates new window
  5573.              = 10 panel defines new field table for existing window
  5574.              = 01 panel stream uses existing window & field table
  5575.         bit 5 = 1 stream contains a field table (create kyboard object)
  5576.         bit 4 = 1 stream defines input fields (create keyboard object)
  5577.         bit 3 = 1 stream defines select fields but not input fields
  5578.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  5579.         bit 1 reserved
  5580.         bit 0 reserved
  5581.  E6h  create new window and perform rest of manipulations in new window
  5582.     BYTE number of rows
  5583.     BYTE number of columns
  5584.     Return: DWORD object handle of new window returned on stack at end
  5585.     Note:    the window is created with a physical size of 0x0 at the
  5586.           same position as the window to which this stream was sent
  5587.  E7h  no operation
  5588.  E8h  scroll area up (top left corner defined by opcode C1h)
  5589.     BYTE height
  5590.     BYTE width
  5591.  E9h  scroll area down (top left corner defined by opcode C1h)
  5592.     BYTE height
  5593.     BYTE width
  5594.  EAh  scroll area left (top left corner defined by opcode C1h)
  5595.     BYTE height
  5596.     BYTE width
  5597.  EBh  scroll area right (top left corner defined by opcode C1h)
  5598.     BYTE height
  5599.     BYTE width
  5600.  ECh  set logical attributes for window contents
  5601.     BYTE video modes command applies to
  5602.         bit 7    monochrome
  5603.         bit 6    color text, EGA/VGA graphics
  5604.         bit 5    medium-resolution CGA graphics
  5605.         bit 4    high-resolution CGA graphics
  5606.     BYTE which attributes to set
  5607.         bit 7    if set, copy single following byte to indicated attribs
  5608.         bits 4-6  number of first attribute to change - 1
  5609.         bits 0-3  number of consecutive attributes to change
  5610.     N BYTEs new attributes
  5611.  EDh  set logical attributes for window frame
  5612.     BYTE video modes command applies to (see opcode ECh)
  5613.     BYTE which attributes to set
  5614.         bit 7    if set, copy single following byte to indicated attrs
  5615.         bits 4-6  number of first attribute to change - 1
  5616.         bits 0-3  number of consecutive attributes to change
  5617.     N BYTEs new attributes
  5618.           attributes
  5619.                1 = top left corner
  5620.                2 = top right corner
  5621.                3 = bottom left corner
  5622.                4 = bottom right corner
  5623.                5 = top edge
  5624.                6 = bottom edge
  5625.                7 = left edge
  5626.                8 = right edge
  5627.  EEh  set characters for window frame
  5628.     BYTE video modes command applies to (see opcode ECh)
  5629.     BYTE which characters to set
  5630.         bit 7    if set, copy single following byte to indicated chars
  5631.         bits 4-6  number of first character to change - 1
  5632.         bits 0-3  number of consecutive characters to change
  5633.     N BYTEs new chars (same relative position as attributes above)
  5634.  EFh  set window name
  5635.     BYTE length of name (should be in range 0 to logical screen width)
  5636.     N BYTEs name
  5637.  F0h  clear input field to blanks
  5638.     BYTE field number
  5639.  F1h  fill input field with character
  5640.     BYTE field number
  5641.     BYTE char
  5642.  F2h  set color of input field
  5643.     BYTE field number (1-N)
  5644.     BYTE attribute
  5645.  F3h  set initial contents of input field
  5646.     BYTE field number (1-N)
  5647.     N BYTEs enough chars to exactly fill field as defined by op FFh
  5648.  F4h  position cursor to start of specific input field
  5649.     BYTE field number (1-N)
  5650.  F5h  change field table entry
  5651.     BYTE field number
  5652.     7-8 BYTEs field table entry (see opcode FFh below)
  5653.  F6h  set field type
  5654.     BYTE field number
  5655.     BYTE type
  5656.         00h inactive
  5657.         40h output field
  5658.         80h input field
  5659.         C0h deselected field
  5660.         C2h selected field
  5661.  F7h  "broadcast write"    write data to fields with program output bit set in
  5662.       the field table entry, in field number order
  5663.     N BYTEs (total length of all program output fields)
  5664.  F8h  scroll field up a line
  5665.     BYTE field number
  5666.  F9h  scroll field down a line
  5667.     BYTE field number
  5668.  FAh  scroll field left
  5669.     BYTE field number
  5670.  FBh  scroll field right
  5671.     BYTE field number
  5672.  FCh  set field table header
  5673.         6 BYTEs    field table header (see #0279)
  5674.  FDh  reset modified bit for all fields
  5675.  FEh  reset selected and modified bits for all fields
  5676.  FFh  set up input fields
  5677.     6 BYTEs    table header (see #0279)
  5678.     7/8N BYTEs the field table entries, one for each field (see #0281)
  5679.     Note:    DESQview uses and updates the actual copy of the information
  5680.           which is contained in the stream.  Thus this info must remain
  5681.           intact until after the data entry is complete.
  5682.  
  5683. (Table 0278)
  5684. Values for TopView logical attributes:
  5685.  01h    normal text
  5686.  02h    highlighted normal text
  5687.  03h    help text
  5688.  04h    highlighted help text
  5689.  05h    error message
  5690.  06h    highlighted error message
  5691.  07h    emphasized text
  5692.  08h    marked text
  5693.  9-16    reverse video versions of 1-8
  5694.  
  5695. Format of TopView field table header:
  5696. Offset    Size    Description    (Table 0279)
  5697.  00h    BYTE    number of fields (must be <= existing number of fields)
  5698.  01h    BYTE    screen behavior bits (see #0280)
  5699.  02h    BYTE    current input field (updated by DESQview)
  5700.  03h     BYTE    current select field (updated by DESQview)
  5701.  04h    BYTE    attribute for select fields when they are pointed at
  5702.  05h    BYTE    attribute for select fields which have been selected
  5703.  
  5704. Bitfields for TopView screen behavior bits:
  5705. Bit(s)    Description    (Table 0280)
  5706.  7    reserved
  5707.  6    menu items may be selected via keyboard
  5708.  5    left mouse button in "status" mode (press anywhere in window
  5709.       immediately returns control to application)
  5710.  4    right mouse button in "status" mode
  5711.  3    select fields return contents or blanks rather than 'Y' or 'N'
  5712.  2    modified bits reset on return to application
  5713.  1-0    type of data returned
  5714.     00 no data returned on read of keyboard
  5715.     01 data returned as array of characters containing all fields packed
  5716.           together, with no field numbers
  5717.     10 data returned as numbered variable-length records for all fields
  5718.     11 data returned as numbered variable-length records for the fields
  5719.           which were modified
  5720.  
  5721. Format of TopView field table entry:
  5722. Offset    Size    Description    (Table 0281)
  5723.  00h    BYTE    start row      \
  5724.  01h    BYTE    start column  \ if menu selection and start is to
  5725.  02h    BYTE    end row       / right or below end, select from kbd only
  5726.  03h    BYTE    end column   /
  5727.  04h    BYTE    field type (see #0282)
  5728.  05h    BYTE    modifier
  5729.         if type is fill-in, then bit flags to determine behavior
  5730.           bit 7     automatically enter CR when field full
  5731.           bit 6     move to next field when current field is full
  5732.           bit 5     enter text from right end (for numbers)
  5733.           bit 4     force input to uppercase
  5734.           bit 3     clear old contents on first keystroke
  5735.           bit 2     input returned when cursor moves out of
  5736.               modified field ("validate", API level 2.02+)
  5737.           bit 1     reserved
  5738.           bit 0     reserved
  5739.         if select field, first key to press to activate
  5740.           00h if have to point-&-click or is an extended-ASCII
  5741.               keystroke (only if two-key menus enabled)
  5742.  06h    BYTE    (select field only) normal color of field
  5743.  07h    BYTE    second key for select field.  This byte is present iff
  5744.           two-letter menu entries selected with opcode E5h, and in that
  5745.           case is present regardless of field type
  5746.  
  5747. Bitfields for TopView field type:
  5748. Bit(s)    Description    (Table 0282)
  5749.  7,6    field class
  5750.     00 inactive (non-entry) field
  5751.     01 echos keystrokes input to make menu selection
  5752.     10 fill-in field
  5753.     11 select field
  5754.  5    field can be filled by broadcast write (F7h opcode)
  5755.  4    reserved
  5756.  3    reserved
  5757.  2    reserved
  5758.  1    set if field selected
  5759.  0    set if field modified
  5760.  
  5761. (Table 0283)
  5762. Values for MODE 01h "QUERY STREAM" opcodes:
  5763. (valid only for those opcodes listed here)
  5764.  A0h return logical cursor row in next byte
  5765.  A1h return logical cursor column in next byte
  5766.  A2h return top row of scrolling region in next byte
  5767.  A3h return left column of scrolling region in next byte
  5768.  A4h return row of physical window origin in next byte
  5769.  A5h return column of physical window origin in next byte
  5770.  A6h return height of physcial window in next byte
  5771.  A7h return width of physical window in next byte
  5772.  A8h return row of viewport origin in next byte
  5773.  A9h return column of viewport origin in next byte
  5774.  AAh return height of virtual screen in next byte
  5775.  ABh return width of virtual screen in next byte
  5776.  AFh return current video mode in next byte
  5777.  C0h return current logical cursor position in next two bytes
  5778.  C1h return top left corner of scrolling region in next two bytes
  5779.  C2h return current window position in next two bytes
  5780.  C3h return current window size in next two bytes
  5781.  C4h return current viewport origin in next two bytes
  5782.  C5h return current virtual screen size in next two bytes
  5783.  D0h \ overwritten with D0h if frames may fall off screen edge
  5784.  D1h /               D1h if frames always displayed entirely
  5785.  D2h \ overwritten with D2h if DESQview controls color palette
  5786.  D3h /               D3h if application changes color palette
  5787.  D4h \ overwritten with D4h if window visible
  5788.  D5h /               D5h if window hidden
  5789.  D6h \ overwritten with D6h if window has frame
  5790.  D7h /               D7h if window unframed
  5791.  D8h \ overwritten with D8h if reading characters from window
  5792.  D9h /               D9h if reading attributes from window
  5793.  DAh \ overwritten with DAh if using logical attributes
  5794.  DBh /               DBh if using physical attributes
  5795.  DCh \ overwritten with DCh if TTY control char interpretation on
  5796.  DDh /               DDh if TTY control char interpretation off
  5797.  DEh \ overwritten with DEh if writing both characters and attributes
  5798.  DFh /               DFh if leaving attributes untouched
  5799.  E2h return current color in next byte
  5800.  ECh get logical attributes for window contents
  5801.     BYTE execute call if currently in specified video mode
  5802.         bit 7    monochrome
  5803.         bit 6    color text, EGA/VGA graphics
  5804.         bit 5    medium-resolution CGA graphics
  5805.         bit 4    high-resolution CGA graphics
  5806.     BYTE which attributes to get
  5807.         bit 7    unused???
  5808.         bits 4-6 first attribute to get - 1
  5809.         bits 0-3 number of consecutive attributes
  5810.     N BYTEs buffer to hold attributes
  5811.  EDh get logical attributes for window frame
  5812.     BYTE execute call if currently in video mode (see opcode ECh)
  5813.     BYTE which attributes to get
  5814.         bit 7    unused???
  5815.         bits 4-6 first attribute to get - 1
  5816.         bits 0-3 number of consecutive attributes
  5817.     N BYTEs buffer to hold attributes
  5818.  EEh get characters for window frame
  5819.     BYTE execute call if currently in video mode (see opcode ECh)
  5820.     BYTE which attributes to get
  5821.         bit 7    unused???
  5822.         bits 4-6 first char to get - 1
  5823.         bits 0-3 number of consecutive chars
  5824.     N BYTEs buffer to hold chars
  5825.  EFh return first N characters of current window name
  5826.     BYTE    max length of returned name
  5827.     N BYTEs buffer to hold window name
  5828.  F3h return contents of specified field
  5829.     BYTE field number
  5830.     N BYTEs buffer to hold field contents (size equal to field size)
  5831.  F5h get field table entry
  5832.     BYTE field number
  5833.     7-8 BYTEs buffer to hold field table entry (see #0281)
  5834.     Notes:    DV < 2.26 always returns 7 bytes
  5835.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  5836.           is using 8-byte entries and eighth byte after    F5h is E7h
  5837.           (NOP); otherwise, 7 bytes are returned
  5838.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  5839.           on the field table entry size
  5840.  F6h get type of a field
  5841.     BYTE field number
  5842.     BYTE type
  5843.  FCh get field table header
  5844.     6 BYTEs buffer to store field table header (see #0279)
  5845.  
  5846. (Table 0284)
  5847. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  5848.  00h allow window to be moved horizontally
  5849.  01h allow window to be moved vertically
  5850.  02h allow window to change width
  5851.  03h allow window to change height
  5852.  04h allow window to be scrolled horizontally
  5853.  05h allow window to be scrolled vertically
  5854.  06h allow "Close Window" menu selection for application
  5855.  07h allow "Hide Window" menu selection for application
  5856.  08h allow application to be suspended ("Rearrange/Freeze")
  5857.  0Eh allow "Scissors" menu
  5858.  10h allow DESQview main menu to be popped up
  5859.  11h allow "Switch Windows" menu
  5860.  12h allow "Open Window" menu
  5861.  13h allow "Quit" menu selection
  5862.  20h-33h opposite of 00h-13h, disallow specified action
  5863.  40h notify if horizontal position of window changes
  5864.  41h notify if vertical position of window changes
  5865.  42h notify if width of window changes
  5866.  43h notify if height of window changes
  5867.  44h notify if window scrolled horizontally
  5868.  45h notify if window scrolled vertically
  5869.  46h notify if window is closed--program has to clean up and exit itself
  5870.  47h notify if window is hidden
  5871.  48h notify if "?" on main menu selected
  5872.  49h notify if pointer message sent to window
  5873.  4Ah notify if window is placed in foreground
  5874.  4Bh notify if window is placed in background
  5875.  4Ch notify if video mode changes
  5876.  4Dh notify if "Scissors" menu "Cut" option selected
  5877.  4Eh notify if "Scissors" menu "Copy" option selected
  5878.  4Fh notify if "Scissors" menu "Paste" option selected
  5879.  50h notify if DESQview main menu about to pop up
  5880.  51h notify if DESQview main menu popped down
  5881.  60h-71h     opposite of 40h-51h: don't notify on specified event
  5882.  84h attach window to parent task's window (both move together)
  5883.  85h detach window from parent task's window (may move independently)
  5884.  86h disable background operation for application
  5885.  87h enable running in background
  5886.  88h set minimum size of physical window
  5887.     BYTE rows
  5888.     BYTE columns
  5889.  89h set maximum size of physical window
  5890.     BYTE rows
  5891.     BYTE cols
  5892.  8Ah set primary asynchronous notification routine (see #0286)
  5893.     DWORD address of routine, 0000h:0000h means none (see also below)
  5894.  8Bh set async notification parameter
  5895.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  5896.  ACh (DV2.2+) perform regular select field attribute processing
  5897.  ADh (DV2.2+) protect attributes in selected field from being lost
  5898.  AEh make window default notify window for owning app (API level 2.00+)
  5899.  AFh set selected field marker character
  5900.     BYTE character to display at left edge of selected fields
  5901.  BCh set standard field processing mode
  5902.  BDh set alternate field processing mode (enables cursor pad for menus)
  5903.  BEh disables changing reverse logical attributes with ECh opcode
  5904.  BFh enables changing reverse logical attributes with ECh opcode
  5905.  C0h make current window topmost in system
  5906.  C1h force current process into foreground
  5907.  C2h make current window topmost in process
  5908.  C3h position mouse pointer relative to origin of current field
  5909.     BYTE rows below upper left corner of field
  5910.     BYTE columns to right of upper left corner of field
  5911.  C4h position mouse pointer relative to origin of given field
  5912.     BYTE field number
  5913.     BYTE rows below upper left corner of field
  5914.     BYTE columns to right of upper left corner of field
  5915.  C5h orphan current window (also hides it)
  5916.     Note: must be last in stream; all subsequent commands ignored
  5917.  C6h show all windows for this process
  5918.  C7h hide all windows for this process
  5919.  C8h suspend process and hide all its windows
  5920.  C9h force current process into background
  5921.  CAh make current window bottom-most in process
  5922.  CBh cancel current window manager operation, remove DV menu, give control
  5923.       to topmost application
  5924.  CCh orphan window and give it to the system for use as paste data
  5925.  CEh reorder windows
  5926.     DWORD pointer to null-terminated list of words; each word is segment
  5927.           of object handle for a window
  5928.  FFh no operation
  5929.  
  5930. (Table 0285)
  5931. Values for MODES 14h to 1Fh "USER STREAMS":
  5932.     normally NOPs, but may be defined by SETESC message to invoke FAR
  5933.     routines, one for each mode number
  5934.       on entry to handler,
  5935.         DS:SI -> first byte of actual stream (not header)
  5936.         CX = number of bytes in stream
  5937.         ES:DI = window's handle
  5938.  
  5939. (Table 0286)
  5940. Values asynchronous notification routine defined by man.stream 8Ah called with:
  5941.     ES:DI = handle of window
  5942.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  5943.        mailbox contains message indicating event
  5944.           Opcode
  5945.            40h  horizontal movement
  5946.            DWORD object handle of window
  5947.            BYTE     new row
  5948.            BYTE     new col
  5949.            41h  vertical movement
  5950.            DWORD object handle of window
  5951.            BYTE     new row
  5952.            BYTE     new col
  5953.            42h  horizontal size change
  5954.            DWORD object handle of window
  5955.            BYTE     new rows
  5956.            BYTE     new cols
  5957.            43h  vertical size change
  5958.            DWORD object handle of window
  5959.            BYTE     new rows
  5960.            BYTE     new cols
  5961.            44h  scrolled horizontally
  5962.            DWORD object handle of window
  5963.            BYTE     mouse row within window
  5964.            BYTE     mouse column within window
  5965.            BYTE     field mouse is on, 0 if none
  5966.            BYTE     amount moved: >0 right, <0 left, 0 done
  5967.            45h  scrolled vertically
  5968.            DWORD object hande of window
  5969.            BYTE     mouse row within window
  5970.            BYTE     mouse column within window
  5971.            BYTE     field mouse is on, 0 if none
  5972.            BYTE     amount moved: >0 down, <0 up, 0 done
  5973.            46h  window close request
  5974.            DWORD object handle of window
  5975.            BYTE     mouse pointer row
  5976.            BYTE     mouse pointer column
  5977.            BYTE     field mouse is on, 0 if none
  5978.            47h  application's windows hidden
  5979.            48h  Help for Program selected
  5980.            DWORD object handle of window
  5981.            BYTE     mouse pointer row
  5982.            BYTE     mouse pointer column
  5983.            BYTE     field mouse is on, 0 if none
  5984.            49h  pointer message sent to window
  5985.            DWORD pointer handle which received message
  5986.            4Ah  switched to window from another ("raise")
  5987.            4Bh  switched away from the window ("lower")
  5988.            4Ch  video mode changed
  5989.            BYTE new BIOS video mode
  5990.            4Dh  Scissors/cUt selected
  5991.            DWORD object handle of window
  5992.            BYTE     row of upper left corner
  5993.            BYTE     column of upper left corner
  5994.            BYTE     field number ul corner is in, 0=none
  5995.            DWORD handle of orphaned window created with
  5996.              copy of data from specified region
  5997.            BYTE     height of region
  5998.            BYTE     width of region
  5999.            4Eh  Scissors/Copy selected
  6000.            DWORD object handle of window
  6001.            BYTE     row of upper left corner
  6002.            BYTE     column of upper left corner
  6003.            BYTE     field number ul corner is in, 0=none
  6004.            DWORD handle of orphaned window created with
  6005.              copy of data from specified region
  6006.            BYTE     height of region
  6007.            BYTE     width of region
  6008.            4Fh  Scissors/Paste selected
  6009.            DWORD object handle of window
  6010.            BYTE     row of upper left corner
  6011.            BYTE     column of upper left corner
  6012.            BYTE     field number ul corner is in, 0=none
  6013.            DWORD handle of orphaned window with data
  6014.            BYTE     height of region
  6015.            BYTE     width of region
  6016.             Note: orphaned data window should be adopted or freed
  6017.                 when done
  6018.            50h  main menu about to pop up
  6019.            51h  main menu popped down
  6020. Return: all registers unchanged
  6021. --------Q-1512--BH06-------------------------
  6022. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  6023.     AH = 12h
  6024.     BH = 06h
  6025.     BL = object
  6026.         00h object handle in DWORD on top of stack
  6027.         mailbox, keyboard, pointer, or timer
  6028.         (DV 2.50+) window
  6029.         01h (DV 2.50+) current task's window
  6030.         04h given task's keyboard (task's handle on top of stack)
  6031.         05h current task's default keyboard
  6032.     STACK: DWORD new priority of object in task's OBJECTQ
  6033.             (new priority of task if window handle)
  6034. Notes:    initially all objects have the same default value.  Should only make
  6035.       relative adjustments to this default value.
  6036.     when changing priorities, all objects already on the objectq are
  6037.       reordered
  6038.     for window handles, only the non-blocked task(s) with the highest
  6039.       priority receive CPU time under DESQview 2.50-2.52; the default
  6040.       priority is 0Ah
  6041. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  6042. --------Q-1512--BH07-------------------------
  6043. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  6044.     AH = 12h
  6045.     BH = 07h
  6046.     BL = object
  6047.         00h object handle in DWORD on top of stack
  6048.         mailbox, keyboard, pointer, or timer
  6049.         (DV 2.50+) window
  6050.         01h (DV 2.50+) current task's window
  6051.         04h given task's keyboard (task's handle on top of stack)
  6052.         05h current task's default keyboard
  6053. Return: STACK: DWORD object priority
  6054. Note:    initially all objects have the same default value.  Should only make
  6055.       relative adjustments to this default value.
  6056. SeeAlso: AH=12h/BH=06h
  6057. --------Q-1512--BH08-------------------------
  6058. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  6059.     AH = 12h
  6060.     BH = 08h
  6061.     BL = object
  6062.         00h handle in DWORD on top of stack
  6063.         window: total character positions in window
  6064.         timer: elapsed time since timer started
  6065.         pointer: number of messages queued to pointer object
  6066.         panel: number of panels in panel file
  6067.         keyboard: number of input buffers queued
  6068.         01h total chars in current task's default window
  6069.         02h number of messages in task's mailbox (task's handle on stack)
  6070.         03h number of messages in current task's mailbox
  6071.         04h number of input buffers queued in task's kbd (handle on stack)
  6072.         05h number of input buffers queued for current task's default kbd
  6073.         06h number of objects queued in OBJECTQ (task's handle on stack)
  6074.         07h number of objects queued in current task's OBJECTQ
  6075.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  6076.         0Dh (DV 2.26+) total chars in parent task's window
  6077. Return: DWORD on top of stack is result
  6078. Note:    for panel objects, a count of zero is returned if no panel file is open
  6079.       for the object
  6080. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  6081. --------Q-1512--BH09-------------------------
  6082. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  6083.     AH = 12h
  6084.     BH = 09h
  6085.     BL = object
  6086.         00h handle in DWORD on top of stack
  6087.         window: get chars/line
  6088.         timer: get 1/100 seconds remaining before timer expires
  6089.         mailbox: (DV/X) get number of bytes queued to mailbox
  6090.         01h get number of chars/line in current task's default window
  6091.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  6092.         0Dh (DV 2.26+) get chars/line in parent task's window
  6093. Return: DWORD on top of stack is length
  6094. SeeAlso: AH=12h/BH=08h
  6095. --------Q-1512--BH0A-------------------------
  6096. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  6097.     AH = 12h
  6098.     BH = 0Ah
  6099.     BL = window to write to
  6100.         00h window handle is DWORD on top of stack
  6101.         01h current task's default window
  6102.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6103.         0Dh (DV 2.26+) default window of parent of current task
  6104.     STACK:    DWORD count of attributes
  6105.         DWORD address of attribute string
  6106.         DWORD count of characters
  6107.         DWORD address of character string
  6108. Notes:    if one string is longer than the other, the shorter one will be reused
  6109.       until the longer one is exhausted
  6110.     the cursor is left just after the last character written
  6111. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  6112. --------Q-1512--BH0A-------------------------
  6113. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  6114.     AH = 12h
  6115.     BH = 0Ah
  6116.     BL = mailbox to write to
  6117.         00h handle is DWORD on top of stack
  6118.         02h default mailbox of task whose handle is on top of stack
  6119.         03h current task's default mailbox
  6120.     STACK:    DWORD    status (low byte)
  6121.         DWORD    length of message
  6122.         DWORD    address of message
  6123. Notes:    the message is copied into either system or common memory
  6124.     insufficient memory normally causes the process to be aborted; under
  6125.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  6126. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  6127. --------Q-1512--BH0A-------------------------
  6128. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  6129.     AH = 12h
  6130.     BH = 0Ah
  6131.     BL = object
  6132.         00h handle is DWORD on top of stack
  6133.         timer: start timer for specified interval
  6134.         pointer: set control flags (see #0288)
  6135.         keyboard: set control flags (see #0287)
  6136.         04h set control flags on KEYBOARD object (handle on top of stack)
  6137.         05h set control flags on task's default KEYBOARD object
  6138.     STACK: (if timer)   DWORD duration in 1/100 seconds
  6139.            (otherwise)  DWORD bits to set
  6140. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  6141.  
  6142. Bitfields for DESQview keyboard object bits:
  6143. Bit(s)    Description    (Table 0287)
  6144.  15    reserved, can't be set
  6145.  14    unused
  6146.  13    reserved, can't be set
  6147.  12-6    unused
  6148.  5    (DV 2.2+) exclusive input
  6149.  4    filter all keys (used with handler established by SETESC)
  6150.     if 0, only keys that would normally be displayed are filtered
  6151.  3    program continues executing while input in progress
  6152.  2    insert mode active for field mode
  6153.  1    hardware cursor displayed when task is hardware cursor owner
  6154.     must be set if keyboard in field mode and field table includes input
  6155.       fields
  6156.  0    keyboard is in field mode rather than keystroke mode
  6157.  
  6158. Bitfields for DESQview pointer object bits:
  6159. Bit(s)    Description    (Table 0288)
  6160.  15    reserved, can't be set
  6161.  14-8    unused
  6162.  7    mouse pointer is hidden while in window
  6163.  6    get messages even if window not topmost
  6164.  5    get messages even if window not foreground
  6165.  4    multiple clicks separated by less than 1/3 second are counted and
  6166.       returned in a single message
  6167.  3    pointer position is relative to screen origin, not window origin
  6168.  2    send message on button release as well as button press
  6169.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  6170.       pointer leaves the window
  6171.  0    send message only on button activity, not movement
  6172.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  6173. --------Q-1512--BH0B-------------------------
  6174. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  6175.     AH = 12h
  6176.     BH = 0Bh
  6177.     BL = window to write attributes to
  6178.         00h handle is DWORD on top of stack
  6179.         01h current task's default window
  6180.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6181.         0Dh (DV 2.26+) default window of parent of current task
  6182.     STACK:    DWORD number of attributes to write
  6183.         DWORD address of attributes
  6184. Note:    the attributes are written starting at the current cursor position; the
  6185.       cursor is left just after the last position written
  6186. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  6187. --------Q-1512--BH0B-------------------------
  6188. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  6189.     AH = 12h
  6190.     BH = 0Bh
  6191.     BL = mailbox to write to
  6192.         00h handle is DWORD on top of stack
  6193.         02h default mailbox of task whose handle is on top of stack
  6194.         03h current task's default mailbox
  6195.     STACK:    DWORD    status (low byte)
  6196.         DWORD    length of message
  6197.         DWORD    address of message
  6198. Notes:    only a pointer to the message is stored, but the write may still fail
  6199.       due to insufficient memory
  6200.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  6201. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  6202. --------Q-1512--BH0B-------------------------
  6203. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  6204.     AH = 12h
  6205.     BH = 0Bh
  6206.     BL = OBJECTQ from which to remove all copies of a particular object
  6207.         06h OBJECTQ of task whose handle is on top of stack
  6208.         07h task's default OBJECTQ
  6209.     STACK:    DWORD    handle of object to remove
  6210. Note:    should be sent whenever an object is erased or closed
  6211. --------Q-1512--BH0B-------------------------
  6212. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  6213.     AH = 12h
  6214.     BH = 0Bh
  6215.     BL = object
  6216.         00h handle is DWORD on top of stack
  6217.         pointer: reset control flags
  6218.         keyboard: reset control flags
  6219.         04h clear control flags on KEYBOARD object (handle on top of stack)
  6220.         05h clear control flags on task's default KEYBOARD object
  6221.     STACK:    DWORD    which bits to clear (see #0287,#0288)
  6222. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  6223. --------Q-1512--BH0C-------------------------
  6224. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  6225.     AH = 12h
  6226.     BH = 0Ch
  6227.     BL = object
  6228.         00h handle is DWORD on top of stack
  6229.         window:      fill with given character from scroll origin to end
  6230.         keyboard: attach to a window
  6231.         timer:      open
  6232.         pointer:  start taking input for window
  6233.         panel:      associate with a panel file
  6234.         01h fill task's default window with given char from scrl org to end
  6235.         02h open given task's mailbox for input (task's handle on stack)
  6236.         03h open current task's mailbox
  6237.         04h attach a KEYBOARD to a window (handle on top of stack)
  6238.         05h attach task's default KEYBOARD to a window
  6239.         06h open a task's OBJECTQ (task's handle on top of stack)
  6240.         07h open current task's OBJECTQ
  6241.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  6242.         0Dh (DV 2.26+) fill default window of parent of current task
  6243.      STACK: (if window)   DWORD character to fill with
  6244.         (if keyboard) DWORD handle of window to attach to
  6245.         (if pointer)  DWORD handle of window to attach to
  6246.         (if panel)    DWORD length of filename or resident panel
  6247.                   DWORD address of filename or resident panel
  6248.         (otherwise)   nothing
  6249. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  6250.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  6251.       the panel file
  6252.     result code of open may be retrieved with STATUS message
  6253.     logical cursor is left at scroll origin after filling window
  6254.     the task opening a mailbox becomes its owner, and the only task allowed
  6255.       to read the mailbox
  6256.     messages are only sent to a pointer object when the mouse is positioned
  6257.       in the window to which the pointer has been attached
  6258.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  6259.       messages automatically open the timer
  6260. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  6261. --------Q-1512--BH0D-------------------------
  6262. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  6263.     AH = 12h
  6264.     BH = 0Dh
  6265.     BL = object
  6266.         00h handle is DWORD on top of stack
  6267.         timer:      close
  6268.         keyboard: detach from window and discard queued input
  6269.         pointer:  stop taking input
  6270.         panel:      close
  6271.         mailbox:  close, unlock, and discard any pending messages
  6272.         02h close given task's mailbox (task's handle on top of stack)
  6273.         03h close task's default mailbox
  6274.         04h close KEYBOARD object (handle on top of stack)
  6275.         05h close task's default KEYBOARD
  6276.         06h close given task's OBJECTQ (task's handle on top of stack)
  6277.         07h close current task's OBJECTQ
  6278. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  6279.       ERASE message (AH=12h/BH=0Eh)
  6280.     when a panel object is closed, the panel file and any panels currently
  6281.       in use are freed; window and keyboard objects created by APPLY are
  6282.       not affected, but field mode input ceases
  6283.     open but idle timer objects consume a small amount of CPU time
  6284. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  6285. --------Q-1512--BH0E-------------------------
  6286. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  6287.     AH = 12h
  6288.     BH = 0Eh
  6289.     BL = object
  6290.         00h handle is DWORD on top of stack
  6291.         window:      clear from scroll origin to end of window
  6292.         keyboard: discard input
  6293.         timer:      cancel current interval
  6294.         pointer:  discard all pending messages
  6295.         mailbox:  discard all pending messages
  6296.         01h clear task's default window from scroll origin to end
  6297.         02h discard all queued messages in mailbox (handle on top of stack)
  6298.         03h discard all queued messages in current task's default mailbox
  6299.         04h discard all input queued to KEYBOARD (handle on top of stack)
  6300.         05h discard all input queued to task's default KEYBOARD
  6301.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  6302.         07h remove all objects from current task's OBJECTQ
  6303.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  6304.         0Dh (DV 2.26+) clear default window of parent of current task
  6305. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  6306. SeeAlso: AH=12h/BH=02h
  6307. --------Q-1512--BH0F-------------------------
  6308. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  6309.     AH = 12h
  6310.     BH = 0Fh
  6311.     BL = object
  6312.         00h handle is DWORD on top of stack
  6313.         timer:     is it running?
  6314.         pointer: return status of last message
  6315.         panel:     verify success of last OPEN or APPLY
  6316.         02h return status of last msg READ from mailbox (handle on stack)
  6317.         03h return status of last msg READ from task's default mailbox
  6318.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  6319.         05h get status of last msg from task's default KEYBOARD
  6320.         06h return whether OBJECTQ is open or not (handle on top of stack)
  6321.         07h return whether task's default OBJECTQ is open or not
  6322. Return: DWORD on top of stack is status
  6323. Notes:    if object is a panel object, the status indicates the error code:
  6324.       00h successful
  6325.       14h panel name not in panel directory
  6326.       15h not enough memory to apply panel
  6327.       16h invalid panel format
  6328.       17h panel file already open
  6329.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  6330.       95h not enough memory to open panel file     > that the panel was
  6331.       98h null panel file name            /  not opened
  6332.     if object is a timer, the status is:
  6333.       00000000h open but not running
  6334.       40000000h open and running
  6335.       80000000h closed
  6336.     if object is an OBJECTQ, the status is:
  6337.       00000000h open
  6338.       80000000h closed
  6339.     if object is a keyboard in keystroke mode, the status is the extended
  6340.       character code (scan code) of the last keystroke
  6341.     if object is a keyboard in field mode, the status indicates the reason
  6342.       for the last return from the field manager
  6343.       00h Enter key pressed
  6344.       01h Button 1 or keystroke selection
  6345.       02h Button 2
  6346.       03h validation
  6347.       04h auto Enter on field
  6348.       1Bh Escape pressed
  6349.       46h ^Break pressed
  6350.       other: extended code for key terminating input
  6351.     the status of mailbox messages sent by the window manager is always 80h
  6352.     the status of a pointer message is the same as the status field in the
  6353.       message
  6354. SeeAlso: AH=12h/BH=04h"READ"
  6355. --------Q-1512--BH10-------------------------
  6356. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  6357.     AH = 12h
  6358.     BH = 10h
  6359.     BL = object
  6360.         00h handle is DWORD on top of stack
  6361.         window: return TRUE if logical cursor past end of window
  6362.         mailbox: ???
  6363.         01h returns TRUE if logical cursor past end of task's def window
  6364.         02h return ??? for task's mailbox (task's handle on top of stack)
  6365.         03h return ??? for current task's mailbox
  6366.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  6367.         0Dh (DV 2.26+) check log cursor of window of parent task
  6368. Return: DWORD on top of stack is status
  6369. --------Q-1512--BH11-------------------------
  6370. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  6371.     AH = 12h
  6372.     BH = 11h
  6373.     BL = window for which to move cursor
  6374.         00h window's handle is DWORD on top of stack
  6375.         01h task's default window
  6376.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6377.         0Dh (DV 2.26+) default window of parent of current task
  6378.     STACK: DWORD column
  6379.            DWORD row
  6380. --------Q-1512--BH11-------------------------
  6381. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  6382.     AH = 12h
  6383.     BH = 11h
  6384.     BL = mailbox to name
  6385.         00h DWORD on top of stack is mailbox handle
  6386.         02h use given task's mailbox (task's handle on top of stack)
  6387.         03h use current task's default mailbox
  6388.     STACK: DWORD length of name
  6389.            DWORD address of name
  6390. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  6391. --------Q-1512--BX1100-----------------------
  6392. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  6393.     AH = 12h
  6394.     BX = 1100h
  6395.     STACK: DWORD object handle for pointer object
  6396.            DWORD number of colums to scale pointer position to
  6397.            DWORD number of rows to scale pointer position to
  6398. SeeAlso: AH=12h/BX=1200h
  6399. --------Q-1512--BH12-------------------------
  6400. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  6401.     AH = 12h
  6402.     BH = 12h
  6403.     BL = window to read from
  6404.         00h handle is DWORD on top of stack
  6405.         01h read next N chars or attributes on task's default window
  6406.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  6407.         0Dh (DV 2.26+) read default window of parent of current task
  6408.     STACK: DWORD count
  6409. Return: STACK: DWORD number of bytes actually read
  6410.            DWORD address of buffer containing data
  6411. Notes:    reading starts at the current logical cursor position; the cursor is
  6412.       updated to point at the character following the last one read
  6413.     any translucent blanks (FFh) which are visible on screen are changed
  6414.       to the character which is seen through them
  6415.     the string produced by the read is placed in an input buffer which may
  6416.       be reused by the next READ or READN of a window
  6417.     window stream opcodes D8h and D9h determine whether the read returns
  6418.       characters or attributes
  6419. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  6420. --------Q-1512--BH12-------------------------
  6421. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  6422.     AH = 12h
  6423.     BH = 12h
  6424.     BL = mailbox for which to retrieve name
  6425.         00h DWORD on top of stack is mailbox handle
  6426.         02h use given task's mailbox (task's handle on top of stack)
  6427.         03h use current task's default mailbox
  6428.     STACK: DWORD length of buffer for name
  6429.            DWORD pointer to buffer
  6430. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  6431. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  6432. Note:    the returned name is not NUL-terminated
  6433. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  6434. --------Q-1512--BX1200-----------------------
  6435. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  6436.     AH = 12h
  6437.     BX = 1200h
  6438.     STACK: DWORD object handle for pointer
  6439. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  6440.            DWORD pointer pos scaled as if window were this many rows high
  6441. SeeAlso: AH=12h/BX=1100h
  6442. --------Q-1512--BH13-------------------------
  6443. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  6444.     AH = 12h
  6445.     BH = 13h
  6446.     BL = window object
  6447.         00h DWORD on top of stack is handle for window to redraw
  6448.         01h redraw task's default window
  6449.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  6450.         0Dh (DV 2.26+) redraw default window of parent of current task
  6451. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  6452. --------Q-1512--BH13-------------------------
  6453. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  6454.     AH = 12h
  6455.     BH = 13h
  6456.     BL = mailbox from which to read
  6457.         00h DWORD on top of stack is mailbox handle
  6458.         02h use given task's mailbox (task's handle on top of stack)
  6459.         03h use current task's default mailbox
  6460.     STACK: DWORD size of buffer in bytes
  6461.            DWORD pointer to buffer
  6462. Return: STACK: DWORD number of bytes read
  6463. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  6464. Notes:    this call blocks if no input is available, but will return less than
  6465.       the requested number of bytes if some (but insufficient) data is
  6466.       available
  6467.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  6468.       4 or 5 set, as common memory may be exhausted by that call when
  6469.       attempting to read the next message
  6470. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  6471. --------Q-1512--BX1300-----------------------
  6472. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  6473.     AH = 12h
  6474.     BX = 1300h
  6475.     STACK: DWORD object handle for pointer
  6476.            DWORD character to use for pointer
  6477. Return: STACK popped
  6478. --------Q-1512--BH14-------------------------
  6479. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  6480.     AH = 12h
  6481.     BH = 14h
  6482.     BL = message modifier
  6483.         00h handle is DWORD on top of stack
  6484.         01h define user stream
  6485.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  6486.         05h intercept keystrokes from task's default KEYBOARD to a window
  6487.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  6488.                  DWORD address of FAR user stream handler
  6489.            (if keyboard) DWORD address of FAR filter function (see #0289)
  6490. Return: STACK popped
  6491.  
  6492. (Table 0289)
  6493. Values keyboard filter function is called with when keyboard is in field mode:
  6494.     AL = character
  6495.     AH = 00h or extended ASCII code if AL = 00h
  6496.     BL = field number
  6497.     CH = cursor column
  6498.     CL = cursor row
  6499.     DL = field type modifier (sixth item in field table entry)
  6500.     DH = seventh item in field table entry
  6501.     ES:SI = window's handle
  6502.     DS:DI -> field table entry for field containing the cursor
  6503. Return:    AH = action to take
  6504.         00h use keystroke
  6505.         01h ignore keystroke
  6506.         FFh beep and ignore keystroke
  6507. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  6508. --------Q-1512--BH14-------------------------
  6509. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  6510.     AH = 12h
  6511.     BH = 14h
  6512.     BL = object
  6513.         00h mailbox handle is DWORD on top of stack
  6514.         02h use given task's mailbox (task's handle on top of stack)
  6515.         03h use current task's default mailbox
  6516. Return: STACK popped if BL=00h
  6517. Note:    release exclusive access by sending CLOSE message to mailbox
  6518.     access may be requested multiple times, and requires multiple CLOSEs
  6519. SeeAlso: AH=12h/BH=0Dh
  6520. --------Q-1512--BH15-------------------------
  6521. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  6522.     AH = 12h
  6523.     BH = 15h
  6524.     BL = object
  6525.         00h DWORD on top of stack
  6526.         mailbox, keyboard, or pointer only
  6527.         02h mailbox for task whose handle is on top of stack
  6528.         03h mailbox for current task
  6529.         04h keyboard for task whose handle is on top of stack
  6530.         05h keyboard for current task
  6531.     STACK: DWORD flags (see #0290,#0291)
  6532. Return: STACK popped
  6533. Notes:    only available if the API level has been set to at least 2.20
  6534.     equivalent to performing SUBFROM and ADDTO calls on the object
  6535.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  6536.       "READ" (see AH=12h/BX=1300h"READINTO") to retrieve messages
  6537. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  6538.  
  6539. Bitfields for DESQview mailbox object flags:
  6540. Bit(s)    Description    (Table 0290)
  6541.  0    all mail messages in common memory
  6542.  1    allow write even if closed
  6543.  2    don't erase messages when mailbox closed
  6544.  4    (DV/X) append messages with like status and sender (stream-oriented 
  6545.       mail)
  6546.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  6547.  6    (DV/X) make mailbox into non-owned mailbox
  6548.  
  6549. Bitfields for DESQview keyboard object flags:
  6550. Bit(s)    Description    (Table 0291)
  6551.  5    exclusive input when keyboard in use for input
  6552. --------Q-1512--BH16-------------------------
  6553. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  6554.     AH = 12h
  6555.     BH = 16h
  6556.     BL = object
  6557.         00h DWORD on top of stack
  6558.         mailbox, keyboard, or pointer only
  6559.         02h mailbox for task whose handle is on top of stack
  6560.         03h mailbox for current task
  6561.         04h keyboard for task whose handle is on top of stack
  6562.         05h keyboard for current task
  6563. Return: STACK: DWORD current control flags (see #0290,#0291)
  6564. Notes:    only available if the API level has been set to at least 2.20
  6565.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  6566.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  6567. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  6568. --------Q-1512--BH17-------------------------
  6569. INT 15 - DESQview v2.42-2.52 - BUG
  6570.     AH = 12h
  6571.     BH = 17h
  6572.     BL = object
  6573.         00h DWORD on top of stack
  6574.         mailbox, keyboard, or pointer only
  6575.         02h mailbox for task whose handle is on top of stack
  6576.         03h mailbox for current task
  6577.         04h keyboard for task whose handle is on top of stack
  6578.         05h keyboard for current task
  6579. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  6580.       keyboards, and pointers, but causes a random branch
  6581.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  6582. --------Q-1512--BH80-------------------------
  6583. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  6584.     AH = 12h
  6585.     BH = 80h
  6586. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  6587.       not pop up a "Programming Error" window, instead returning an error
  6588.       code in AL (see #0292)
  6589. SeeAlso: AH=12h/BH=00h
  6590.  
  6591. (Table 0292)
  6592. Values for DESQview error code:
  6593.  00h    no error
  6594.  01h    invalid values
  6595.  02h    alias invalid
  6596.  03h    handle valid but wrong type
  6597.  04h    invalid handle
  6598. --------Q-1512--BH81-------------------------
  6599. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  6600.     AH = 12h
  6601.     BH = 81h
  6602. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  6603.       not pop up a "Programming Error" window, instead returning an error
  6604.       code in AL (see #0292)
  6605. SeeAlso: AH=12h/BH=01h
  6606. --------Q-1512--BH82-------------------------
  6607. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  6608.     AH = 12h
  6609.     BH = 82h
  6610. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  6611.       not pop up a "Programming Error" window, instead returning an error
  6612.       code in AL (see #0292)
  6613. SeeAlso: AH=12h/BH=02h
  6614. --------Q-1512--BH83-------------------------
  6615. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  6616.     AH = 12h
  6617.     BH = 83h
  6618. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  6619.       not pop up a "Programming Error" window, instead returning an error
  6620.       code in AL (see #0292)
  6621. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  6622. --------Q-1512--BH84-------------------------
  6623. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  6624.     AH = 12h
  6625.     BH = 84h
  6626. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  6627.       not pop up a "Programming Error" window, instead returning an error
  6628.       code in AL (see #0292)
  6629. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  6630. --------Q-1512--BH85-------------------------
  6631. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  6632.     AH = 12h
  6633.     BH = 85h
  6634. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  6635.       not pop up a "Programming Error" window, instead returning an error
  6636.       code in AL (see #0292)
  6637. SeeAlso: AH=12h/BH=05h
  6638. --------Q-1512--BH86-------------------------
  6639. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  6640.     AH = 12h
  6641.     BH = 86h
  6642. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  6643.       not pop up a "Programming Error" window, instead returning an error
  6644.       code in AL (see #0292)
  6645. SeeAlso: AH=12h/BH=06h
  6646. --------Q-1512--BH87-------------------------
  6647. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  6648.     AH = 12h
  6649.     BH = 87h
  6650. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  6651.       not pop up a "Programming Error" window, instead returning an error
  6652.       code in AL (see #0292)
  6653. SeeAlso: AH=12h/BH=07h
  6654. --------Q-1512--BH88-------------------------
  6655. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  6656.     AH = 12h
  6657.     BH = 88h
  6658. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  6659.       not pop up a "Programming Error" window, instead returning an error
  6660.       code in AL (see #0292)
  6661. SeeAlso: AH=12h/BH=08h
  6662. --------Q-1512--BH89-------------------------
  6663. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  6664.     AH = 12h
  6665.     BH = 89h
  6666. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  6667.       not pop up a "Programming Error" window, instead returning an error
  6668.       code in AL (see #0292)
  6669. SeeAlso: AH=12h/BH=09h
  6670. --------Q-1512--BH8A-------------------------
  6671. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  6672.     AH = 12h
  6673.     BH = 8Ah
  6674. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  6675.       not pop up a "Programming Error" window, instead returning an error
  6676.       code in AL (see #0292)
  6677. SeeAlso: AH=12h/BH=0Ah
  6678. --------Q-1512--BH8B-------------------------
  6679. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  6680.     AH = 12h
  6681.     BH = 8Bh
  6682. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  6683.       not pop up a "Programming Error" window, instead returning an error
  6684.       code in AL (see #0292)
  6685. SeeAlso: AH=12h/BH=0Bh
  6686. --------Q-1512--BH8C-------------------------
  6687. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  6688.     AH = 12h
  6689.     BH = 8Ch
  6690. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  6691.       not pop up a "Programming Error" window, instead returning an error
  6692.       code in AL (see #0292)
  6693. SeeAlso: AH=12h/BH=0Ch
  6694. --------Q-1512--BH8D-------------------------
  6695. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  6696.     AH = 12h
  6697.     BH = 8Dh
  6698. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  6699.       not pop up a "Programming Error" window, instead returning an error
  6700.       code in AL (see #0292)
  6701. SeeAlso: AH=12h/BH=0Dh
  6702. --------Q-1512--BH8E-------------------------
  6703. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  6704.     AH = 12h
  6705.     BH = 8Eh
  6706. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  6707.       not pop up a "Programming Error" window, instead returning an error
  6708.       code in AL (see #0292)
  6709. SeeAlso: AH=12h/BH=0Eh
  6710. --------Q-1512--BH8F-------------------------
  6711. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  6712.     AH = 12h
  6713.     BH = 8Fh
  6714. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  6715.       not pop up a "Programming Error" window, instead returning an error
  6716.       code in AL (see #0292)
  6717. SeeAlso: AH=12h/BH=0Fh
  6718. --------Q-1512--BH90-------------------------
  6719. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  6720.     AH = 12h
  6721.     BH = 90h
  6722. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  6723.       not pop up a "Programming Error" window, instead returning an error
  6724.       code in AL (see #0292)
  6725. SeeAlso: AH=12h/BH=10h
  6726. --------Q-1512--BH91-------------------------
  6727. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  6728.     AH = 12h
  6729.     BH = 91h
  6730. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  6731.       not pop up a "Programming Error" window, instead returning an error
  6732.       code in AL (see #0292)
  6733. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  6734. --------Q-1512--BH92-------------------------
  6735. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  6736.     AH = 12h
  6737.     BH = 92h
  6738. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  6739.       not pop up a "Programming Error" window, instead returning an error
  6740.       code in AL (see #0292)
  6741. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  6742. --------Q-1512--BH93-------------------------
  6743. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  6744.     AH = 12h
  6745.     BH = 93h
  6746. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  6747.       not pop up a "Programming Error" window, instead returning an error
  6748.       code in AL (see #0292)
  6749. SeeAlso: AH=12h/BH=13h
  6750. --------Q-1512--BH94-------------------------
  6751. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  6752.     AH = 12h
  6753.     BH = 94h
  6754. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  6755.       not pop up a "Programming Error" window, instead returning an error
  6756.       code in AL (see #0292)
  6757. SeeAlso: AH=12h/BH=14h
  6758. --------Q-1512--BH95-------------------------
  6759. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  6760.     AH = 12h
  6761.     BH = 95h
  6762. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  6763.       not pop up a "Programming Error" window, instead returning an error
  6764.       code in AL (see #0292)
  6765. SeeAlso: AH=12h/BH=15h
  6766. --------Q-1512--BH96-------------------------
  6767. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  6768.     AH = 12h
  6769.     BH = 96h
  6770. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  6771.       not pop up a "Programming Error" window, instead returning an error
  6772.       code in AL (see #0292)
  6773. SeeAlso: AH=12h/BH=16h
  6774. --------T-1513-------------------------------
  6775. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  6776.     AH = 13h
  6777.     STACK:    WORD    process ID
  6778. Return: AX = status (SYS_OK or SYS_ERROR)
  6779. SeeAlso: AH=12h"VMiX"
  6780. --------T-1513-------------------------------
  6781. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  6782.     AH = 13h
  6783. Return: BX:AX -> task control block (see #0293)
  6784. SeeAlso: AH=15h"MultiDOS"
  6785.  
  6786. Format of MultiDOS Plus v4.0 task control block:
  6787. Offset    Size    Description    (Table 0293)
  6788.  00h    DWORD    pointer to next TCB
  6789.  04h  8 BYTEs    ASCIZ task name
  6790.  0Ch  2 BYTEs    ???
  6791.  0Eh    WORD    task PSP segment
  6792.  10h    WORD    abort/suspend flags
  6793.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  6794.  14h    WORD    priority level (0000h-FFFEh)
  6795.  16h    WORD    time slice counter
  6796.  18h  2 BYTEs    ???
  6797.  1Ah    WORD    suspend timer value
  6798.  1Ch    WORD    stack segment
  6799.  1Eh    WORD    stack pointer
  6800.  20h    WORD    display type
  6801.  22h    WORD    display memory
  6802.  24h  2 BYTEs    ???
  6803.  26h    WORD    termination count
  6804.  28h    WORD    equipment flag for BIO10 driver
  6805.  2Ah    BYTE    background CRT mode
  6806.  2Bh    WORD    screen width in columns
  6807.  2Dh    WORD    screen size in bytes
  6808.  2Fh    WORD    segment of physical screen memory
  6809.  31h 16 BYTEs    eight cursor positions
  6810.  41h    WORD    current cursor shape
  6811.  43h    BYTE    active display page
  6812.  44h    WORD    CRT controller I/O port base
  6813.  46h  2 BYTEs    ???
  6814.  48h    WORD    foreground task flag
  6815.  4Ah  6 BYTEs    ???
  6816.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  6817.  52h    DWORD    old INT 22
  6818.  56h    DWORD    old INT 23
  6819.  5Ah    DWORD    old INT 24
  6820.  5Eh    WORD    top of memory for task
  6821.  60h  4 BYTEs    ???
  6822.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  6823.  66h    WORD    DTA offset
  6824.  68h  4 BYTEs    ???
  6825.  6Ch    BYTE    current ANSI.SYS attribute
  6826.  6Dh    BYTE    current ANSI.SYS column
  6827.  6Eh    BYTE    current ANSI.SYS row
  6828.  6Fh    BYTE    current ANSI.SYS display state
  6829.  70h    BYTE    maximum ANSI.SYS columns
  6830.  71h    BYTE    current ANSI.SYS page
  6831.  72h    WORD    saved ANSI.SYS cursor position
  6832.  74h    BYTE    ANSI.SYS parameter buffer index
  6833.  75h    BYTE    current ANSI.SYS screen mode
  6834.  76h    BYTE    ANSI.SYS wrap flag
  6835.  77h  6 BYTEs    ANSI.SYS parameter buffer
  6836.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  6837.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  6838.  85h  3 BYTEs    ???
  6839.  88h 16 BYTEs    request header for DOS driver calls
  6840.  98h 14 BYTEs    ???
  6841.  A6h    WORD    segment of EMS map if EMS task
  6842.  A8h    WORD    flag: task makes EMS calls
  6843.  AAh    WORD    EMS handle for task
  6844.  ACh    WORD    keyboard shift state
  6845.  AEh 12 BYTEs    ???
  6846.  BAh    WORD    TCB of parent if child task
  6847.  BCh    WORD    termination code
  6848.  BEh    WORD    COM port number
  6849.  C0h  4 BYTEs    ???
  6850.  C4h    WORD    current IRQ number
  6851.  C6h  2 BYTEs    ???
  6852.  C8h    WORD    miscellaneous flag word
  6853.  CAh  2 BYTEs    ???
  6854.  CCh    DWORD    old INT 10
  6855.  D0h    WORD    EMS alternate map set number
  6856.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  6857. --------T-1514-------------------------------
  6858. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  6859.     AH = 14h
  6860.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  6861.         WORD    bottom right corner of window (high = row, low = col)
  6862. Return: AX = status (SYS_OK)
  6863. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  6864. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  6865. --------T-1514-------------------------------
  6866. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  6867.     AH = 14h
  6868. Return: AX = current state
  6869.         0000h MultiDOS Plus command prompt is background task
  6870.         0001h command prompt is foreground task
  6871. SeeAlso: AH=0Bh"MultiDOS"
  6872. --------T-1515-------------------------------
  6873. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  6874.     AH = 15h
  6875.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  6876. Return: AX = status (SYS_OK)
  6877. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  6878. --------T-1515-------------------------------
  6879. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  6880.     AH = 15h
  6881. Return: BX:AX -> system block (see #0294)
  6882. SeeAlso: AH=13h"MultiDOS"
  6883.  
  6884. Format of MultiDOS Plus 4.0 system block:
  6885. Offset    Size    Description    (Table 0294)
  6886.  00h    WORD    segment of system control block
  6887.  02h    WORD    redirection flag set by /NOREDIRECT
  6888.  04h    WORD    no-INT 10 flag set by /NO10
  6889.  06h    DWORD    old INT 10
  6890.  0Ah    DWORD    new INT 10
  6891.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0293)
  6892.  12h    DWORD    pointer to WORD with idle task TCB offset
  6893.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0293)
  6894.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0293)
  6895.  1Eh    WORD    Task Control Block size
  6896.  20h    WORD    number of TCBs
  6897.  22h    WORD    flag: EMS present
  6898.  24h    WORD    EMS page frame base segment
  6899.  26h    WORD    16K pages in EMS page frame
  6900.  28h    WORD    base segment for conventional memory tasks
  6901.  2Ah    WORD    conventional memory size in paragraphs
  6902.  2Ch    DWORD    pointer to list of queue pointers
  6903. --------T-1516-------------------------------
  6904. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  6905.     AH = 16h
  6906.     STACK:    DWORD    pointer to I/O Request Packet
  6907.         WORD    top left corner of window (high byte = row, low = col)
  6908.         WORD    bottom right corner of window (high = row, low = col)
  6909. Return: AX = status (SYS_OK or SYS_ERROR)
  6910. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  6911. --------T-1516-------------------------------
  6912. INT 15 - MultiDOS Plus - INITIALIZATION
  6913.     AH = 16h
  6914. Note:    used internally during initialization; any other calls will cause
  6915.       unpredictable results
  6916. --------T-1517-------------------------------
  6917. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  6918.     AH = 17h
  6919. Return: AH = foreground color
  6920.     AL = background color
  6921. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  6922. --------T-1517-------------------------------
  6923. INT 15 - MultiDOS Plus - MAP IRQ
  6924.     AH = 17h
  6925.     AL = IRQ to map (01h-0Fh)
  6926.     BX = offset of task control block (see #0293) to associate with IRQ
  6927. Return: AX = status
  6928.         0000h successful
  6929.         other invalid IRQ
  6930. Note:    the EMS map of the specified TCB is associated with the given interrupt
  6931. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  6932. --------T-1518-------------------------------
  6933. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  6934.     AH = 18h
  6935.     STACK:    WORD    new background/foreground colors
  6936.             bits 3-0: foreground
  6937.             bits 7-4: background
  6938.             bits 15-8: unused
  6939. Return: AX = color
  6940. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  6941. --------T-1518-------------------------------
  6942. INT 15 - MultiDOS Plus - UNMAP IRQ
  6943.     AH = 18h
  6944.     AL = IRQ to unmap (01h-0Fh)
  6945. Return: AX = status
  6946.         0000h successful
  6947.         0001h invalid IRQ
  6948. Note:    results are unpredictable if the IRQ has not been mapped
  6949. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  6950. --------T-1519-------------------------------
  6951. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  6952.     AH = 19h
  6953.     STACK:    WORD    new background/foreground colors
  6954.             bits 3-0: foreground
  6955.             bits 7-4: background
  6956.             bits 15-8: unused
  6957. Return: AX = color
  6958. SeeAlso: AH=18h"VMiX"
  6959. --------T-1519-------------------------------
  6960. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  6961.     AH = 19h
  6962. Return: AX destroyed
  6963. Note:    for MultiDOS internal use only
  6964. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  6965. --------T-151A-------------------------------
  6966. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  6967.     AH = 1Ah
  6968.     STACK:    WORD    interrupt number
  6969.         DWORD    pointer to register structure
  6970. Return: AX = returned flags
  6971. --------T-151A-------------------------------
  6972. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  6973.     AH = 1Ah
  6974.     DS:SI -> 8-byte name
  6975. Return: AL = status
  6976.         00h successful
  6977.         AH = semaphore number (20h-3Fh)
  6978.         04h out of string space
  6979. Notes:    all eight bytes of the name are significant
  6980.     if the name does not already exist, it is added to the name table and
  6981.       associated with a free semaphore number
  6982.     names cannot be destroyed
  6983. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  6984. --------T-151B-------------------------------
  6985. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  6986.     AH = 1Bh
  6987.     STACK:    DWORD    source address
  6988.         DWORD    destination address
  6989.         WORD    number of words to move
  6990. Return: nothing
  6991. --------T-151B-------------------------------
  6992. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  6993.     AH = 1Bh
  6994.     DS:SI -> 8-byte name
  6995. Return: AH = status
  6996.         00h successful
  6997.         02h invalid semaphore number
  6998.         03h caller already owns semaphore
  6999.         04h out of string space
  7000. Notes:    (see AH=01h"MultiDOS")
  7001.     equivalent to AH=1Ah followed by AH=01h
  7002. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  7003. --------T-151C-------------------------------
  7004. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  7005.     AH = 1Ch
  7006.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  7007.         DWORD    pointer to object bitmap
  7008.         WORD    object width in pixels
  7009.         WORD    object height in pixels
  7010. Return: nothing
  7011. SeeAlso: AH=1Dh"VMiX"
  7012. --------T-151C-------------------------------
  7013. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  7014.     AH = 1Ch
  7015.     DS:SI -> 8-byte name
  7016. Return: AH = status
  7017.         00h successful
  7018.         01h not semaphore owner
  7019.         02h invalid semaphore number
  7020.         04h out of string space
  7021. Notes:    (see AH=02h"MultiDOS")
  7022.     equivalent to AH=1Ah followed by AH=02h
  7023. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  7024. --------T-151D-------------------------------
  7025. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  7026.     AH = 1Dh
  7027. Return: AX = current font number (00h-03h)
  7028. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  7029. --------T-151D-------------------------------
  7030. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  7031.     AH = 1Dh
  7032.     DS:SI -> 8-byte name
  7033. Return: AH = status
  7034.         00h semaphore not in use
  7035.         01h semaphore owned by another task
  7036.         02h invalid semaphore number
  7037.         03h caller owns semaphore
  7038.         04h out of string space
  7039. Notes:    (see AH=10h"MultiDOS")
  7040.     equivalent to AH=1Ah followed by AH=10h
  7041. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  7042. --------T-151E-------------------------------
  7043. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  7044.     AH = 1Eh
  7045.     STACK: WORD new font number (00h-03h)
  7046. Return: AX = current font number (00h-03h)
  7047. SeeAlso: AH=1Dh"VMiX"
  7048. --------T-151E00-----------------------------
  7049. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  7050.     AX = 1E00h
  7051.     DX = event/trigger number (00h-3Fh)
  7052. Return: AH = status
  7053.         00h successful
  7054. SeeAlso: AX=1E01h,AX=1E02h
  7055. --------T-151E01-----------------------------
  7056. INT 15 - MultiDOS Plus - TRIGGER EVENT
  7057.     AX = 1E01h
  7058.     DX = event/trigger number (00h-3Fh)
  7059. Return: AH = status
  7060.         00h successful
  7061.         01h invalid event/trigger number
  7062. Notes:    schedules any task waiting for event; if no task is waiting, the event
  7063.       counter is incremented (and will roll over if it was 65535)
  7064.     may be invoked by interrupt handler
  7065. SeeAlso: AX=1E00h,AX=1E02h
  7066. --------T-151E02-----------------------------
  7067. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  7068.     AX = 1E02h
  7069.     DX = event/trigger number (00h-3Fh)
  7070. Return: AH = status
  7071.         00h successful
  7072.         01h invalid event/trigger number
  7073. Note:    if the event counter is zero, the task is suspended until the event is
  7074.       triggered with AX=1E01h; else, the counter is decremented and the
  7075.       call returns immediately
  7076. SeeAlso: AX=1E00h,AX=1E01h
  7077. --------T-151E08-----------------------------
  7078. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  7079.     AX = 1E08h
  7080.     DX:BX -> context save handler (see #0295)
  7081.     DX:CX -> context restore handler (see #0295)
  7082. Note:    handlers may be removed by setting addresses to 0000h:0000h
  7083.  
  7084. (Table 0295)
  7085. Values MultiDOS Plus context-switch handlers are called with:
  7086.     ES:BX -> task's TCB
  7087. Return: all registers preserved
  7088. --------T-151F-------------------------------
  7089. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  7090.     AH = 1Fh
  7091.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  7092.         WORD    bottom right corner of window
  7093. Return: AX = status (SYS_OK)
  7094. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  7095. --------T-151F-------------------------------
  7096. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  7097.     AH = 1Fh
  7098. Return: BX = first segment of conventional memory
  7099.     DX = first segment of EMS swap frame into which MultiDOS will load
  7100.         programs
  7101. --------T-1520-------------------------------
  7102. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  7103.     AH = 20h
  7104. Return: AX = current state
  7105.         0000h multitasking enabled
  7106.         other TCB of task that disabled multitasking
  7107. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  7108. --------c-152000-----------------------------
  7109. INT 15 U - DOS 3+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  7110.     AX = 2000h
  7111. Desc:    stop setting user flag on entry to PRINT critical region
  7112. Note:    also supported by PC Network v1.00 RECEIVER.COM
  7113. SeeAlso: AX=2001h
  7114. --------c-152001-----------------------------
  7115. INT 15 U - DOS 3+ PRINT.COM - SET CRITICAL REGION FLAG
  7116.     AX = 2001h
  7117.     ES:BX -> byte which is to be incremented while in a DOS call
  7118. Desc:    specify a user flag which PRINT should set to let an interested
  7119.       application know it is in a critical region
  7120. Note:    also supported by PC Network v1.00 RECEIVER.COM
  7121. SeeAlso: AX=2000h
  7122. --------O-152010-----------------------------
  7123. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  7124.     AX = 2010h
  7125.     ???
  7126. Return: ???
  7127. SeeAlso: AX=2011h
  7128. --------O-152011-----------------------------
  7129. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  7130.     AX = 2011h
  7131.     ???
  7132. Return: ???
  7133. SeeAlso: AX=2010h
  7134. --------B-1521-------------------------------
  7135. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  7136.     AH = 21h
  7137.     AL = subfunction
  7138.         00h read POST log
  7139.         01h write POST log
  7140.         BH = device ID
  7141.         BL = error code
  7142. Return: CF set on error
  7143.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  7144.     if function 00h:
  7145.        BX = number of error codes stored
  7146.        ES:DI -> error log
  7147. Note:    the log is a series of words, the first byte of which identifies the
  7148.       error code and the second the device.
  7149. --------B-1522-------------------------------
  7150. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  7151.     AH = 22h
  7152. Return: CF set on error
  7153.         AH = status (86h if function not supported)
  7154.     CF clear on success
  7155.         AH = 00h
  7156.         ES:BX -> ROM BASIC
  7157. Note:    if this function is not supported, ROM BASIC is at F600h:0000h
  7158. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  7159. --------B-152300-----------------------------
  7160. INT 15 U - SYSTEM - PS/1s - GET ??? CMOS DATA
  7161.     AX = 2300h
  7162. Return: CF clear if successful
  7163.         CL = value of CMOS location 2Dh
  7164.         CH = value of CMOS location 2Eh
  7165.     CF set on error
  7166.         AH = error code (80h,86h)
  7167. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  7168. --------B-152300-----------------------------
  7169. INT 15 U - SYSTEM - PS/1s - SET ??? CMOS DATA
  7170.     AX = 2301h
  7171.     CL = new value for CMOS location 2Dh
  7172.     CH = new value for CMOS location 2Eh
  7173. Return: CF clear if successful
  7174.     CF set on error
  7175.         AH = error code (80h,86h)
  7176. Note:    sets the contents of CMOS locations 2Dh and 2Eh
  7177. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  7178. --------B-152304-----------------------------
  7179. INT 15 U - SYSTEM - PS/1s - SYSTEM SETUP
  7180.     AX = 2304h
  7181.     DX = segment of 32K buffer
  7182. Return: CF clear if successful
  7183.         AX = 0003h (left over from setting video mode 3)
  7184.         BX,CX,DX,BP,DS,ES destroyed
  7185.     CF set on error
  7186.         AH = error code (80h,86h)
  7187. SeeAlso: AX=2301h,AX=2305h
  7188. ---------------------------------------------
  7189. INT 15 U - SYSTEM - PS/1s - GET PROCESSOR SPEED
  7190.     AX = 2305h
  7191. Return: CF clear if successful
  7192.         AL = processor speed in MHz
  7193.     CF set on error
  7194.         AL = FFh (speed > 80 MHz)
  7195.         AL = error code (80h,86h = unsupported function)
  7196. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  7197. --------b-152400-----------------------------
  7198. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  7199.     AX = 2400h
  7200. Return: CF clear if successful
  7201.         AH = 00h
  7202.     CF set on error
  7203.         AH = status
  7204.         01h keyboard controller is in secure mode
  7205.         86h function not supported
  7206. Note:    also supported by Qualitas 386MAX v6.01+
  7207. SeeAlso: AX=2401h,AX=2402h,AX=2403h
  7208. --------b-152401-----------------------------
  7209. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  7210.     AX = 2401h
  7211. Return: CF clear if successful
  7212.         AH = 00h
  7213.     CF set on error
  7214.         AH = status
  7215.         01h keyboard controller is in secure mode
  7216.         86h function not supported
  7217. Note:    also supported by Qualitas 386MAX v6.01+
  7218. SeeAlso: AX=2400h,AX=2402h
  7219. --------b-152402-----------------------------
  7220. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  7221.     AX = 2402h
  7222. Return: CF clear if successful
  7223.         AH = 00h
  7224.         AL = current state (00h disabled, 01h enabled)
  7225.     CF set on error
  7226.         AH = status
  7227.         01h keyboard controller is in secure mode
  7228.         86h function not supported
  7229. Note:    also supported by Qualitas 386MAX v6.01+
  7230. SeeAlso: AX=2400h,AX=2401h
  7231. --------b-152403-----------------------------
  7232. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  7233.     AX = 2403h
  7234. Return: CF clear if successful
  7235.         AH = 00h
  7236.         BX = status of A20 gate support (see #0296)
  7237.     CF set on error
  7238.         AH = status
  7239.         01h keyboard controller is in secure mode
  7240.         86h function not supported
  7241. Note:    also supported by Qualitas 386MAX v6.01+
  7242. SeeAlso: AX=2402h
  7243.  
  7244. Bitfields for A20 gate support status:
  7245. Bit(s)    Description    (Table 0296)
  7246.  0    supported with bit 1 of I/O port 92h
  7247.  1    supported on keyboard controller
  7248.  15    additional data is available (location not yet defined)
  7249. --------B-1540-------------------------------
  7250. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  7251.     AH = 40h
  7252.     AL = subfunction
  7253.         00h get system profile in CX and BX
  7254.         01h set system profile from CX and BX
  7255.         02h get internal modem profile in BX
  7256.         03h set internal modem profile from BX
  7257. Return: CF clear if successful
  7258.         AH = 00h
  7259.     CF set on error
  7260.         AH = status (80h = profile execution failed)
  7261. --------V-154000-----------------------------
  7262. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  7263.     AX = 4000h
  7264. Return: AX = 4000h
  7265.     CL = timeout in minutes, 00h if disabled
  7266. SeeAlso: AX=4001h,AX=4600h
  7267. --------V-154001-----------------------------
  7268. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  7269.     AX = 4001h
  7270.     CL = timeout in minutes, 00h to disable
  7271. Return: AL = status
  7272.         00h timeout modified
  7273.         01h timeout cannot be modified
  7274.         40h timeout cannot be modified
  7275.     CL = timeout in minutes, 00h if disabled
  7276. SeeAlso: AX=4000h,AX=4601h
  7277. --------B-1541-------------------------------
  7278. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  7279.     AH = 41h
  7280.     AL = condition type (see #0297)
  7281.     BH = condition compare or mask value
  7282.     BL = timeout value times 55 milliseconds
  7283.         00h means no timeout
  7284.     DX = I/O port address if AL bit 4 set
  7285.     ES:DI -> user byte if AL bit 4 clear
  7286. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  7287.       this function is supported
  7288. SeeAlso: AH=83h,AH=86h,AH=C0h
  7289.  
  7290. Bitfields for external event wait condition type:
  7291. Bit(s)    Description    (Table 0297)
  7292.  0-2    condition to wait for
  7293.     0 any external event
  7294.     1 compare and return if equal
  7295.     2 compare and return if not equal
  7296.     3 test and return if not zero
  7297.     4 test and return if zero
  7298.  3    reserved
  7299.  4    1=port address, 0=user byte
  7300.  5-7    reserved
  7301. --------B-1542-------------------------------
  7302. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  7303.     AH = 42h
  7304.     AL = suspend type
  7305.         00h to use system profile
  7306.         01h to force suspend regardless of system profile
  7307. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  7308.       power-up, execution will resume following the instruction calling
  7309.       this function
  7310. SeeAlso: AH=44h
  7311. --------b-154280-----------------------------
  7312. INT 15 - Compaq SLT/286 - ENTER STANDBY
  7313.     AX = 4280h
  7314. Return: AH = 42h
  7315.     CF clear if successful
  7316.     CF set if unable to enter standby
  7317. SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h
  7318. --------B-1543-------------------------------
  7319. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  7320.     AH = 43h
  7321. Return: AL = status bits (see #0298)
  7322.  
  7323. Bitfields for Convertible system status:
  7324. Bit(s)    Description    (Table 0298)
  7325.  7    power low
  7326.  6    external power in use
  7327.  5    standby power lost
  7328.  4    power activated by alarm
  7329.  3    internal modem powered on
  7330.  2    RS232/parallel adapter powered on
  7331.  1    reserved
  7332.  0    LCD detached
  7333. --------B-1544-------------------------------
  7334. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  7335.     AH = 44h
  7336.     AL = new modem power state (00h power off, 01h power on)
  7337. SeeAlso: AH=42h
  7338. --------b-1544C0-----------------------------
  7339. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  7340.     AX = 44C0h
  7341.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  7342.     ES:SI -> ??? buffer
  7343. Return: ES:DI -> old DSP procedure
  7344.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  7345.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  7346. Note:    this function is also supported by XBIOS.COM
  7347. SeeAlso: AX=44C9h
  7348. --------b-1544C1-----------------------------
  7349. INT 15 - Olivetti Quaderno - ???
  7350.     AX = 44C1h
  7351.     ???
  7352. Return: ???
  7353. Note:    this function is also supported by XBIOS.COM
  7354. SeeAlso: AX=44C9h
  7355. --------b-1544C2-----------------------------
  7356. INT 15 - Olivetti Quaderno - ???
  7357.     AX = 44C2h
  7358.     DL = byte to be written to I/O port 350h
  7359. Note:    this function is also supported by XBIOS.COM
  7360. SeeAlso: AX=44C3h,AX=44C9h
  7361. --------b-1544C3-----------------------------
  7362. INT 15 - Olivetti Quaderno - GET ???
  7363.     AX = 44C3h
  7364. Return: DH = bitfields (see #0299)
  7365.     DL = value read from I/O port 350h
  7366. Note:    this function is also supported by XBIOS.COM
  7367. SeeAlso: AX=44C2h,AX=44C9h
  7368.  
  7369. Bitfields for Olivetti Quaderno ???:
  7370. Bit(s)    Description    (Table 0299)
  7371.  5-7    5-7 read from I/O port 351h
  7372.  2-4    zero
  7373.  1-0    "tres complique"
  7374. --------b-1544C4-----------------------------
  7375. INT 15 - Olivetti Quaderno - ???
  7376.     AX = 44C4h and 44C5h
  7377.     ???
  7378. Return: ???
  7379. Note:    this function is also supported by XBIOS.COM
  7380. SeeAlso: AX=44C9h
  7381. --------b-1544C6-----------------------------
  7382. INT 15 - Olivetti Quaderno - READ LCD
  7383.     AX = 44C6h
  7384. Return: DX = FFFFh clock is displayed on LCD display
  7385.     DX = other: hex number displayed in first four positions of display
  7386.     BH = left alphanumeric character on display (see #0300)
  7387.     BL = right alphanumeric character on display (see #0300)
  7388.     CL = colon flags (see #0301)
  7389. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  7390.       is an alphanumeric character
  7391.     this function is also supported by XBIOS.COM
  7392. SeeAlso: AX=44C7h,AX=44C9h
  7393.  
  7394. (Table 0300)
  7395. Values for Olivetti Quaderno LCD alphanumeric characters:
  7396.  00h-0Fh hex digit
  7397.  2Bh    "+"
  7398.  2Dh    "-"
  7399.  30h-39h "0" to "9"
  7400.  41h-5Ah "A" to "Z"
  7401.  61h-6Ah "a" to "z"
  7402.  else    blank
  7403.  
  7404. Bitfields for Olivetti Quaderno LCD colon flags:
  7405. Bit(s)    Description    (Table 0301)
  7406.  0    right colon on
  7407.  1    left colon on
  7408.  2-7    unused    
  7409. --------b-1544C7-----------------------------
  7410. INT 15 - Olivetti Quaderno - WRITE LCD
  7411.     AX = 44C7h
  7412.     DX = hex display
  7413.         FFFFh display clock and "HI", "Md", or "Lo"
  7414.         BH,BL,CL unused
  7415.         other: display specified hex number in first four positions
  7416.         BH = left alphanumeric character on display (see #0300)
  7417.         BL = right alphanumeric character on display (see #0300)
  7418.         CL = colon flags (see #0301)
  7419. Note:    this function is also supported by XBIOS.COM
  7420. SeeAlso: AX=44C6h
  7421. --------b-1544C8-----------------------------
  7422. INT 15 - Olivetti Quaderno - ???
  7423.     AX = 44C8h
  7424.     CL = ??? (00h,02h,21h)
  7425.     CH = ???
  7426.     ???
  7427. Return: ???
  7428. Note:    this function is also supported by XBIOS.COM
  7429. SeeAlso: AX=44C9h
  7430. --------b-1544C9-----------------------------
  7431. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  7432.     AX = 44C9h
  7433. Return: AL = major version
  7434.     AH = minor version
  7435. Note:    this function is also supported by XBIOS.COM
  7436. --------b-154600-----------------------------
  7437. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  7438.     AX = 4600h
  7439. Return: AH = modem configuration information (see #0302)
  7440.     AL = power conservation status information (see #0303)
  7441.     BH = default system inactivity timeout (1-21 minutes)
  7442.     BL = current system inactivity timeout (1-21 minutes)
  7443.     CH = default video display inactivity timeout (1-63 minutes)
  7444.     CL = current video display inactivity timeout (1-63 minutes)
  7445.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  7446.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  7447. SeeAlso: AX=4280h,AX=4601h,INT 77
  7448.  
  7449. Bitfields for Compaq SLT/286 modem configuration information:
  7450. Bit(s)    Description    (Table 0302)
  7451.  0    powerup state (0 off, 1 on)
  7452.  1    modem installed
  7453.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  7454.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  7455.  4    modem state (0 not assigned, 1 assigned)
  7456.  5    modem is on
  7457.  
  7458. Bitfields for Compaq SLT/286 power conservation status:
  7459. Bit(s)    Description    (Table 0303)
  7460.  0    power source (0 internal, 1 external)
  7461.  1-2    low battery state
  7462.     00 no low battery condition
  7463.     01 low battery 1
  7464.     10 reserved
  7465.     11 low battery 2
  7466.  3-4    power conservation mode
  7467.     00 automatic, 01 on, 10 off, 11 reserved
  7468. --------b-154601-----------------------------
  7469. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  7470.     AX = 4601h
  7471.     BL = system inactivity timeout (1-21 minutes)
  7472.         FFh do not change
  7473.     CL = video display inactivity timeout (1-63 minutes)
  7474.         FFh do not change
  7475.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  7476.         FFh do not change
  7477.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  7478. Return: CF clear if successful
  7479.         AH = 00h
  7480.         BL = current system inactivity timeout (1-21 minutes)
  7481.         CL = current video display inactivity timeout (1-63 minutes)
  7482.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  7483.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  7484.     CF set on error
  7485.         AH = error code
  7486.         01h input is out of range
  7487.         02h no modem present
  7488. SeeAlso: AX=4600h,INT 77
  7489. --------b-154604-----------------------------
  7490. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  7491.     AX = 4604h
  7492. Return: CF clear if successful
  7493.         AL = byte read from I/O port 03F8h
  7494.     CF set on error (not supported)
  7495.         AH = 86h (unsupported function)
  7496. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  7497. --------b-154605-----------------------------
  7498. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  7499.     AX = 4605h
  7500. Return: CF clear if successful
  7501.     CF set on error (not supported)
  7502.         AH = 86h (unsupported function)
  7503. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  7504.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  7505.       LTE Lite 386 ROM
  7506. --------J-154900-----------------------------
  7507. INT 15 - Far East MS-DOS - GET BIOS TYPE
  7508.     AX = 4900h
  7509. Return: CF clear if successful
  7510.         AH = 00h
  7511.         BL = BIOS mode
  7512.         00h DOS/V
  7513.         01h standard DBCS DOS (hardware DBCS support)
  7514.     CF set on error
  7515.         AH = 86h (function not supported)
  7516. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  7517. SeeAlso: AH=50h,INT 21/AH=30h
  7518. --------b-154DD4-----------------------------
  7519. INT 15 - HP 95LX - INSTALLATION CHECK
  7520.     AX = 4DD4h
  7521. Return: BX = 4850h ("HP") if HP 95LX
  7522.         CX = ??? (0101h)
  7523.         DL = ??? (00h)
  7524. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  7525. SeeAlso: INT 61"HP 95LX"
  7526. --------b-154E-------------------------------
  7527. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  7528.     AH = 4Eh
  7529.     AL = light sleep
  7530.         00h disabled
  7531.         01h enabled
  7532. Note:    when light sleep is disabled, the system will continue running at full
  7533.       speed; when enabled, it may automatically slow to conserve batteries
  7534. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  7535. --------B-154F-------------------------------
  7536. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  7537.     AH = 4Fh
  7538.     AL = hardware scan code
  7539.     CF set
  7540. Return: CF set
  7541.        AL = hardware scan code
  7542.     CF clear
  7543.        scan code should be ignored
  7544. Note:    called by INT 09 handler to translate scan codes; the INT 09 code does
  7545.       not examine the scan code it reads from the keyboard until after
  7546.       this function returns.  This permits software to rearrange the
  7547.       keyboard; for example, swapping the CapsLock and Control keys, or
  7548.       turning the right Shift key into Enter.
  7549. SeeAlso: INT 09,INT 15/AH=C0h
  7550. --------J-155000-----------------------------
  7551. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  7552.     AH = 50h
  7553.     AL = which function address to retrieve
  7554.         00h "read font" function
  7555.         01h "write font" function
  7556.     BL = 00h
  7557.     BH = character size (00h single-byte, 01h double-byte)
  7558.     DH = width of character cell
  7559.     DL = height of character cell
  7560.     BP = code page (see #0304)
  7561. Return: CF clear if successful
  7562.         AH = 00h
  7563.         ES:BX -> requested function's address
  7564.     CF set on error
  7565.         AH = error code (see #0305)
  7566. SeeAlso: AH=49h
  7567.  
  7568. (Table 0304)
  7569. Values for DOS/V code page:
  7570.  0    default
  7571.  437    US English
  7572.  932    Japanese
  7573.  934    Korea
  7574.  936    China
  7575.  938    Taiwan
  7576.  
  7577. (Table 0305)
  7578. Values for DOS/V error code:
  7579.  01h    invalid font type in BH
  7580.  02h    BL not zero
  7581.  03h    invalid font size
  7582.  04h    invalid code page
  7583.  80h    unsupported function (PC)
  7584.  86h    unsupported function (XT)
  7585. --------T-1550-------------------------------
  7586. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  7587.     AH = 50h
  7588.     BX = segment of page directory table
  7589.     CX = page number of page table
  7590. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  7591. --------T-1551-------------------------------
  7592. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  7593.     AH = 51h
  7594.     STACK:    DWORD    selector:offset of function
  7595. Return: registers as returned by function
  7596. Note:    executes function with privilege level 0 (highest privilege)
  7597. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  7598. --------B-155101-----------------------------
  7599. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  7600.     AX = 5101h
  7601. Return: CF set if successful
  7602.         AH = 00h
  7603.         AL = current configuration number
  7604.         00h system unit only
  7605.         FFh configuration not recognized
  7606.         BX = status flag
  7607.         bits 0-14: reserved
  7608.         bit 15: additional data is available (location TBD)
  7609.     CF clear on error
  7610.         AH = status
  7611.         01h expansion unit is not present
  7612.         86h function not supported
  7613. Note:    CF convention is the reverse of the standard convention for this
  7614.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  7615. --------T-1552-------------------------------
  7616. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  7617.     AH = 52h
  7618. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  7619. --------p-155300-----------------------------
  7620. INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
  7621.     AX = 5300h
  7622.     BX = device ID of system BIOS (0000h)
  7623. Return: CF clear if successful
  7624.         AH = major version (BCD)
  7625.         AL = minor version (BCD)
  7626.         BX = 504Dh ("PM")
  7627.         CX = flags (see #0306)
  7628.     CF set on error
  7629.         AH = error code (06h,86h) (see #0307)
  7630.  
  7631. Bitfields for APM flags:
  7632. Bit(s)    Description    (Table 0306)
  7633.  0    16-bit protected mode interface supported
  7634.  1    32-bit protected mode interface supported
  7635.  2    CPU idle call reduces processor speed
  7636.  3    BIOS power management disabled
  7637.  4    BIOS power management disengaged (APM v1.1)
  7638.  5-7    reserved
  7639.  
  7640. (Table 0307)
  7641. Values for APM error code:
  7642.  01h    power management functionality disabled
  7643.  02h    interface connection already in effect
  7644.  03h    interface not connected
  7645.  04h    real-mode interface not connected
  7646.  05h    16-bit protected-mode interface already connected
  7647.  06h    16-bit protected-mode interface not supported
  7648.  07h    32-bit protected-mode interface already connected
  7649.  08h    32-bit protected-mode interface not supported
  7650.  09h    unrecognized device ID
  7651.  0Ah    invalid parameter value in CX
  7652.  0Bh-1Fh reserved for other interface and general errors
  7653.  20h-3Fh reserved for CPU errors
  7654.  40h-5Fh reserved for device errors
  7655.  60h    can't enter requested state
  7656.  61h-7Fh reserved for other system errors
  7657.  80h    no power management events pending
  7658.  81h-85h reserved for other power management event errors
  7659.  86h    APM not present
  7660.  87h-9Fh reserved for other power management event errors
  7661. --------p-155301-----------------------------
  7662. INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
  7663.     AX = 5301h
  7664.     BX = device ID of system BIOS (0000h)
  7665. Return: CF clear if successful
  7666.     CF set on error
  7667.         AH = error code (02h,05h,07h,09h) (see #0307)
  7668. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  7669. --------p-155302-----------------------------
  7670. INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
  7671.     AX = 5302h
  7672.     BX = device ID of system BIOS (0000h)
  7673. Return: CF clear if successful
  7674.         AX = real-mode segment base address of protected-mode 16-bit code
  7675.         segment
  7676.         BX = offset of entry point
  7677.         CX = real-mode segment base address of protected-mode 16-bit data
  7678.         segment
  7679.         ---APM v1.1---
  7680.         SI = APM BIOS code segment length
  7681.         DI = APM BIOS data segment length
  7682.     CF set on error
  7683.         AH = error code (02h,05h,06h,07h,09h) (see #0307)
  7684. Notes:    the caller must initialize two consecutive descriptors with the
  7685.       returned segment base addresses; these descriptors must be valid
  7686.       whenever the protected-mode interface is called, and will have
  7687.       their limits arbitrarily set to 64K.
  7688.     the protected mode interface is invoked by making a far call with the
  7689.       same register values as for INT 15; it must be invoked while CPL=0,
  7690.       the code segment descriptor must have a DPL of 0, the stack must be
  7691.       in a 16-bit segment and have enough room for BIOS use and possible
  7692.       interrupts, and the current I/O permission bit map must allow access
  7693.       to the I/O ports used for power management.
  7694.     functions 00h-03h are not available from protected mode
  7695. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  7696. --------p-155303-----------------------------
  7697. INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
  7698.     AX = 5303h
  7699.     BX = device ID of system BIOS (0000h)
  7700. Return: CF clear if successful
  7701.         AX = real-mode segment base address of protected-mode 32-bit code
  7702.         segment
  7703.         EBX = offset of entry point
  7704.         CX = real-mode segment base address of protected-mode 16-bit code
  7705.         segment
  7706.         DX = real-mode segment base address of protected-mode 16-bit data
  7707.         segment
  7708.         ---APM v1.1---
  7709.         SI = APM BIOS code segment length
  7710.         DI = APM BIOS data segment length
  7711.     CF set on error
  7712.         AH = error code (02h,05h,07h,08h,09h) (see #0307)
  7713. Notes:    the caller must initialize three consecutive descriptors with the
  7714.       returned segment base addresses for 32-bit code, 16-bit code, and
  7715.       16-bit data, respectively; these descriptors must be valid whenever
  7716.       the protected-mode interface is called, and will have their limits
  7717.       arbitrarily set to 64K.
  7718.     the protected mode interface is invoked by making a far call to the
  7719.       32-bit code segment with the same register values as for INT 15; it
  7720.       must be invoked while CPL=0, the code segment descriptor must have a
  7721.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  7722.       for BIOS use and possible interrupts, and the current I/O permission
  7723.       bit map must allow access to the I/O ports used for power management.
  7724.     functions 00h-03h are not available from protected mode
  7725. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  7726. --------p-155304-----------------------------
  7727. INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
  7728.     AX = 5304h
  7729.     BX = device ID of system BIOS (0000h)
  7730. Return: CF clear if successful
  7731.     CF set on error
  7732.         AH = error code (03h,09h) (see #0307)
  7733. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  7734. --------p-155305-----------------------------
  7735. INT 15 - Advanced Power Management Specification - CPU IDLE
  7736.     AX = 5305h
  7737. Return: CF clear if successful (after system leaves idle state)
  7738.     CF set on error
  7739.         AH = error code (03h,0Bh) (see #0307)
  7740. Notes:    call when the system is idle and should be suspended until the next
  7741.       system event or interrupt
  7742.     should not be called from within a hardware interrupt handler to avoid
  7743.       reentrance problems
  7744.     if an interrupt causes the system to resume normal processing, the
  7745.       interrupt may or may not have been handled when the BIOS returns
  7746.       from this call; thus, the caller should allow interrupts on return
  7747.     interrupt handlers may not retain control if the BIOS allows
  7748.       interrupts while in idle mode even if they are able to determine
  7749.       that they were called from idle mode
  7750.     the caller should issue this call continuously in a loop until it needs
  7751.       to perform some processing of its own
  7752. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  7753. --------p-155306-----------------------------
  7754. INT 15 - Advanced Power Management Specification - CPU BUSY
  7755.     AX = 5306h
  7756. Return: CF clear if successful
  7757.     CF set on error
  7758.         AH = error code (03h,0Bh) (see #0307)
  7759. Notes:    called to ensure that the system runs at full speed even on systems
  7760.       where the BIOS is unable to recognize increased activity (especially
  7761.       if interrupts are hooked by other programs and not chained to the
  7762.       BIOS)
  7763.     this call may be made even when the system is already running at full
  7764.       speed, but it will create unnecessary overhead
  7765.     should not be called from within a hardware interrupt handler to avoid
  7766.       reentrance problems
  7767. SeeAlso: AX=5305h
  7768. --------p-155307-----------------------------
  7769. INT 15 - Advanced Power Management Specification - SET POWER STATE
  7770.     AX = 5307h
  7771.     BX = device ID (see #0308)
  7772.     CX = system state ID (see #0309)
  7773. Return: CF clear if successful
  7774.     CF set on error
  7775.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0307)
  7776. Note:    should not be called from within a hardware interrupt handler to avoid
  7777.       reentrance problems
  7778. SeeAlso: AX=530Ch
  7779.  
  7780. (Table 0308)
  7781. Values for APM device IDs:
  7782.  0000h    system BIOS
  7783.  0001h    all devices for which the system BIOS manages power
  7784.  01xxh    display (01FFh for all attached display devices)
  7785.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  7786.  03xxh    parallel ports (03FFh for all attached parallel ports)
  7787.  04xxh    serial ports (04FFh for all attached serial ports)
  7788. ---APM v1.1---
  7789.  05xxh    network adapters (05FFh for all attached network adapters)
  7790.  06xxh    PCMCIA sockets (06FFh for all)
  7791.  0700h-DFFFh reserved
  7792.  Exxxh    OEM-defined power device IDs
  7793.  F000h-FFFFh reserved
  7794.  
  7795. (Table 0309)
  7796. Values for system state ID:
  7797.  0000h    ready (not supported for device ID 0001h)
  7798.  0001h    stand-by
  7799.  0002h    suspend
  7800.  0003h    off (not supported for device ID 0001h)
  7801. ---APM v1.1---
  7802.  0004h    last request processing notification (only for device ID 0001h)
  7803.  0005h    last request rejected (only for device ID 0001h)
  7804.  0006h-001Fh reserved system states
  7805.  0020h-003Fh OEM-defined system states
  7806.  0040h-007Fh OEM-defined device states
  7807.  0080h-FFFFh reserved device states
  7808. --------p-155307CX0001-----------------------
  7809. INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
  7810.     AX = 5307h
  7811.     CX = 0001h
  7812.     BX = 0001h (device ID for all power-managed devices)
  7813. Return: CF clear
  7814. Notes:    puts the entire system into stand-by mode; normally called in response
  7815.       to a System Stand-by Request notification after any necessary
  7816.       processing, but may also be invoked at the caller's discretion
  7817.     should not be called from within a hardware interrupt handler to avoid
  7818.       reentrance problems
  7819.     the stand-by state is typically exited on an interrupt
  7820. SeeAlso: AX=4280h,AX=5307h/BX=0001h/CX=0002h,AX=530Bh
  7821. --------p-155307CX0002-----------------------
  7822. INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
  7823.     AX = 5307h
  7824.     CX = 0002h
  7825.     BX = 0001h (device ID for all power-managed devices)
  7826. Return: after system is resumed
  7827.     CF clear
  7828. Notes:    puts the entire system into a low-power suspended state; normally
  7829.       called in response to a Suspend System Request notification after
  7830.       any necessary processing, but may also be invoked at the caller's
  7831.       discretion
  7832.     should not be called from within a hardware interrupt handler to avoid
  7833.       reentrance problems
  7834.     the caller may need to update its date and time values because the
  7835.       system could have been suspended for a long period of time
  7836. SeeAlso: AX=5307h/BX=0001h/CX=0001h,AX=530Bh
  7837. --------p-155308-----------------------------
  7838. INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
  7839.     AX = 5308h
  7840.     BX = device ID for all devices power-managed by APM
  7841.         0001h (APM v1.1)
  7842.         FFFFh (APM v1.0)
  7843.     CX = new state
  7844.         0000h disabled
  7845.         0001h enabled
  7846. Return: CF clear if successful
  7847.     CF set on error
  7848.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0307)
  7849. Notes:    when power management is disabled, the system BIOS will not
  7850.       automatically power down devices, enter stand-by or suspended mode,
  7851.       or perform any power-saving actions in response to AX=5305h calls
  7852.     should not be called from within a hardware interrupt handler to avoid
  7853.       reentrance problems
  7854. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  7855. --------p-155309-----------------------------
  7856. INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
  7857.     AX = 5309h
  7858.     BX = device ID for all devices power-managed by APM
  7859.         0001h (APM v1.1)
  7860.         FFFFh (APM v1.0)
  7861. Return: CF clear if successful
  7862.     CF set on error
  7863.         AH = error code (09h) (see #0307)
  7864. Note:    should not be called from within a hardware interrupt handler to avoid
  7865.       reentrance problems
  7866. SeeAlso: AX=5308h
  7867. --------p-15530ABX0001-----------------------
  7868. INT 15 - Advanced Power Management Specification - GET POWER STATUS
  7869.     AX = 530Ah
  7870.     BX = 0001h (device ID for all devices power-managed by APM)
  7871. Return: CF clear if successful
  7872.         BH = AC line status
  7873.         00h off-line
  7874.         01h on-line
  7875.         02h on backup power (APM v1.1)
  7876.         FFh unknown
  7877.         other reserved
  7878.         BL = battery status (see #0310)
  7879.         CH = battery flag (APM v1.1) (see #0311)
  7880.         CL = remaining battery life, percentage
  7881.         00h-64h (0-100) percentage of full charge
  7882.         FFh unknown
  7883.         DX = remaining battery life, time (APM v1.1) (see #0312)
  7884.     CF set on error
  7885.         AH = error code (09h) (see #0307)
  7886. Note:    should not be called from within a hardware interrupt handler to avoid
  7887.       reentrance problems
  7888.  
  7889. (Table 0310)
  7890. Values for APM v1.0+ battery status:
  7891.  00h    high
  7892.  01h    low
  7893.  02h    critical
  7894.  03h    charging
  7895.  FFh    unknown
  7896.  other    reserved
  7897.  
  7898. Bitfields for APM v1.1 battery flag:
  7899. Bit(s)    Description    (Table 0311)
  7900.  0    high
  7901.  1    low
  7902.  2    critical
  7903.  3    charging
  7904.  4-6    reserved
  7905.  7    no system battery
  7906. Note:    all bits set (FFh) if unknown
  7907.  
  7908. Bitfields for APM v1.1 remaining battery life:
  7909. Bit(s)    Description    (Table 0312)
  7910.  15    time units: 0=seconds, 1=minutes
  7911.  14-0    battery life in minutes or seconds
  7912. Note:    all bits set (FFFFh) if unknown
  7913. --------p-15530B-----------------------------
  7914. INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
  7915.     AX = 530Bh
  7916. Return: CF clear if successful
  7917.         BX = event code (see #0313)
  7918.     CF set on error
  7919.         AH = error code (03h,0Bh,80h) (see #0307)
  7920. Notes:    although power management events are often asynchronous, notification
  7921.       will not be made until polled via this call to permit software to
  7922.       only receive event notification when it is prepared to process
  7923.       power management events; since these events are not very time-
  7924.       critical, it should be sufficient to poll once or twice per second
  7925.     the critical resume notification is made after the system resumes
  7926.       from an emergency suspension; normally, the system BIOS only notifies
  7927.       its partner that it wishes to suspend and relies on the partner to
  7928.       actually request the suspension, but no notification is made on an
  7929.       emergency suspension
  7930.     should not be called from within a hardware interrupt handler to avoid
  7931.       reentrance problems
  7932. SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h
  7933.  
  7934. (Table 0313)
  7935. Values for APM event code:
  7936.  0001h    system stand-by request
  7937.  0002h    system suspend request
  7938.  0003h    normal resume system notification
  7939.  0004h    critical resume system notification
  7940.  0005h    battery low notification
  7941. ---APM v1.1---
  7942.  0006h    power status change notification
  7943.  0007h    update time notification
  7944.  0008h    critical system suspend notification
  7945.  0009h    user system standby request notification
  7946.  000Ah    user system suspend request notification
  7947.  000Bh    system standby resume notification
  7948.  000Ch-00FFh reserved system events
  7949.  01xxh    reserved device events
  7950.  02xxh    OEM-defined APM events
  7951.  0300h-FFFFh reserved
  7952. --------p-15530C-----------------------------
  7953. INT 15 - Advanced Power Management v1.1 - GET POWER STATE
  7954.     AX = 530Ch
  7955.     BX = device ID (see #0308)
  7956. Return: CF clear if successful
  7957.         BX = system state ID (see #0309)
  7958.     CF set on error
  7959.         AH = error code (01h,09h) (see #0307)
  7960. SeeAlso: AX=5307h
  7961. --------p-15530D-----------------------------
  7962. INT 15 - Advanced Power Management v1.1 - EN/DISABLE DEVICE POWER MANAGEMENT
  7963.     AX = 530Dh
  7964.     BX = device ID (see #0308)
  7965.     CX = function
  7966.         0000h disable power management
  7967.         0001h enable power management
  7968. Return: CF clear if successful
  7969.     CF set on error
  7970.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0307)
  7971. SeeAlso: AX=5308h,AX=530Fh
  7972. --------p-15530E-----------------------------
  7973. INT 15 - Advanced Power Management v1.1 - DRIVER VERSION
  7974.     AX = 530Eh
  7975.     BX = device ID of system BIOS (0000h)
  7976.     CH = APM driver major version (BCD)
  7977.     CL = APM driver minor version (BCD)
  7978. Return: CF clear if successful
  7979.         AH = APM connection major version (BCD)
  7980.         AL = APM connection minor version (BCD)
  7981.     CF set on error
  7982.         AH = error code (03h,09h,0Bh) (see #0307)
  7983. SeeAlso: AX=5300h
  7984. --------p-15530F-----------------------------
  7985. INT 15 - Advanced Power Management v1.1 - ENGAGE/DISENGAGE POWER MANAGEMENT
  7986.     AX = 530Fh
  7987.     BX = device ID (see #0308)
  7988.     CX = function
  7989.         0000h disengage power management
  7990.         0001h engage power management
  7991. Return: CF clear if successful
  7992.     CF set on error
  7993.         AH = error code (01h,09h) (see #0307)
  7994. Note:    unlike AX=5308h, this call does not affect the functioning of the APM
  7995.       BIOS
  7996. SeeAlso: AX=5308h,AX=530Dh
  7997. --------p-155380BH7F-------------------------
  7998. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  7999.     AX = 5380h
  8000.     BH = 7Fh
  8001. Return: CF clear if successful
  8002.         BX = OEM identifier
  8003.         all other registers OEM-defined
  8004.     CF set on error
  8005.         AH = error code (03h) (see #0307)
  8006. --------p-155380-----------------------------
  8007. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  8008.     AX = 5380h
  8009.     BH <> 7Fh
  8010.     all other registers OEM-defined
  8011. Return: OEM-defined
  8012. SeeAlso: AX=5380h/BH=7Fh
  8013. --------T-155400-----------------------------
  8014. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  8015.     AX = 5400h
  8016.     ES:BX -> device information tables
  8017.     DI:DX -> dispatcher entry point
  8018. Note:    called by OmniView to notify programs loaded before OmniView of state
  8019.       changes inside OmniView
  8020. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  8021. --------T-155401-----------------------------
  8022. INT 15 C - Omniview Multitasker - PROCESS CREATION
  8023.     AX = 5401h
  8024.     ES:BX = process handle
  8025. Note:    called by OmniView to notify programs loaded before OmniView of state
  8026.       changes inside OmniView
  8027. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  8028. --------T-155402-----------------------------
  8029. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  8030.     AX = 5402h
  8031.     ES:DX = process handle
  8032. Note:    called by OmniView to notify programs loaded before OmniView of state
  8033.       changes inside OmniView
  8034. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  8035. --------T-155403-----------------------------
  8036. INT 15 C - Omniview Multitasker - SAVE
  8037.     AX = 5403h
  8038.     ES:DX = process swapping out
  8039. Note:    called by OmniView to notify programs loaded before OmniView of state
  8040.       changes inside OmniView
  8041. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  8042. --------T-155404-----------------------------
  8043. INT 15 C - Omniview Multitasker - RESTORE
  8044.     AX = 5404h
  8045.     ES:DX = process swapping in
  8046. Note:    called by OmniView to notify programs loaded before OmniView of state
  8047.       changes inside OmniView
  8048. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  8049. --------T-155405-----------------------------
  8050. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  8051.     AX = 5405h
  8052.     ES:DX = process swapping in
  8053. Note:    called by OmniView to notify programs loaded before OmniView of state
  8054.       changes inside OmniView
  8055. SeeAlso: AX=5406h
  8056. --------T-155406-----------------------------
  8057. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  8058.     AX = 5406h
  8059.     ES:DX = process swapping in
  8060. Note:    called by OmniView to notify programs loaded before OmniView of state
  8061.       changes inside OmniView
  8062. SeeAlso: AX=5405h
  8063. --------T-155407-----------------------------
  8064. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  8065.     AX = 5407h
  8066. Note:    called by OmniView to notify programs loaded before OmniView of state
  8067.       changes inside OmniView
  8068. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  8069. --------b-1560------------------------------------
  8070. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  8071.     AH = 60h
  8072.     AL = new speed
  8073.         00h normal (8 MHz)
  8074.         01h Slow Mode 1 (4 MHz)
  8075.         02h Slow Mode 2 (2 MHz)
  8076. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  8077.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  8078. SeeAlso: AX=6301h
  8079. --------b-1561------------------------------------
  8080. INT 15 - HUNTER 16 - GET POWER LEVEL
  8081.     AH = 61h
  8082. Return: AH = percentage of full power left (0..100)
  8083. Desc:    determine how much battery power is left
  8084. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  8085. --------b-1562------------------------------------
  8086. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  8087.     AH = 62h
  8088.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  8089.     BX = interval between power low warnings in seconds (1..600)
  8090. Return: AH = Status
  8091. Desc:    set the level (relative to full power) when power-low warnings begin
  8092.       and the interval between the warnings
  8093. SeeAlso: AH=61h,AH=65h,AH=66h
  8094. --------b-156300----------------------------------
  8095. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  8096.     AX = 6300h
  8097. Return: AH = status
  8098.     BX = timeout in seconds (0-3600)
  8099. Desc:    get the idle timeout value, the interval without keyboard or
  8100.        communications activity before the system shuts down
  8101. SeeAlso: AX=6301h
  8102. --------b-156301----------------------------------
  8103. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  8104.     AX = 6301h
  8105.     BX = timeout in seconds (0-3600)
  8106. Desc:    sets the idle timeout value, the interval without keyboard or
  8107.       communications activity before the system shuts down
  8108. SeeAlso: AX=6300h
  8109. --------b-1564------------------------------------
  8110. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  8111.     AH = 64h
  8112.     AL = new state
  8113.         00h disable Resume mode
  8114.         01h enable Resume mode
  8115. Return: AH = status
  8116. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  8117.       the application that was running when it shut down as if nothing 
  8118.       had happened.
  8119. SeeAlso: AH=67h,AH=68h,AH=69h
  8120. --------b-1565------------------------------------
  8121. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  8122.     AH = 65h
  8123.     AL = charging level
  8124.         01h charging not allowed
  8125.         02h charging allowed until power down
  8126.         03h charging allowed until batteries changed or fail.
  8127.         Ask user if charging is still allowed on next poweron
  8128.         04h charging allowed indefinitely
  8129.     BX = 0203h
  8130.     CX = 0405h
  8131.     DX = 0607h
  8132. Return: AH = status
  8133. SeeAlso: AH=66h,AH=68h
  8134. --------b-1566------------------------------------
  8135. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  8136.     AH = 66h
  8137.     AL = level in percent of maximum (0..100)
  8138. Return: AH = status
  8139. SeeAlso: AH=61h,AH=65h
  8140. --------b-1567------------------------------------
  8141. INT 15 - HUNTER 16 - CONTROL STOP MODE
  8142.     AH = 67h
  8143.     AL = mode when waiting for input
  8144.         00h use STOP mode (allows communication)
  8145.         01h use HALT mode (disallows communication)
  8146. Return: AH = status
  8147. Desc:    select the power save mode to use when waiting for input
  8148. SeeAlso: AH=69h
  8149. --------b-1568------------------------------------
  8150. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  8151.     AH = 68h
  8152. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  8153. SeeAlso: AH=69h
  8154. --------b-1569------------------------------------
  8155. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  8156.     AH = 69h
  8157.     AL = mode
  8158.         00h inhibit power down
  8159.         01h allow power down
  8160. Return: AH = status
  8161. SeeAlso: AH=67h,AH=68h,AH=6Ah
  8162. --------b-156A------------------------------------
  8163. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  8164.     AH = 6Ah
  8165.     AL = mode
  8166.         00h inhibit Slow mode
  8167.         01h allow Slow mode
  8168. Return: AH = status
  8169. SeeAlso: AH=69h
  8170. --------b-156B------------------------------------
  8171. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  8172.     AH = 6Bh
  8173. Return: BH = version number (ASCII)
  8174.     BL = release number (ASCII)
  8175.     CH = minor release number (ASCII)
  8176.     CL = minor release number (ASCII)
  8177. SeeAlso: AH=6Ch
  8178. --------b-156C------------------------------------
  8179. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  8180.     AH = 6Ch
  8181. Return: BL:CX = BCD serial number
  8182. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  8183.       different number can be stored (see AH=72h)
  8184. SeeAlso: AH=6Bh,AH=72h
  8185. --------b-156D------------------------------------
  8186. INT 15 - HUNTER 16 - GET EVENT DETAIL
  8187.     AH = 6Dh
  8188. Return: AH = 00h if successful
  8189.     CX:BX = event flags bit 0..31 (see #0314)
  8190. Note:    this function allows testing for events
  8191. SeeAlso: AH=6Eh,AH=6Fh
  8192.  
  8193. Bitfields for HUNTER 16 events:
  8194. Bit(s)    Description    (Table 0314)
  8195.  6    RI received
  8196.  5    RTC Alarm
  8197.  4    data received on COM2
  8198.  3    data received on COM1
  8199.  2    error on COM2
  8200.  1    error on COM1
  8201.  0    PWR button pressed
  8202. --------b-156E------------------------------------
  8203. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  8204.     AH = 6Eh
  8205.     AL = Software Interrupt
  8206.           00h  do not trap event
  8207.           else trap as software interrupt number AL
  8208.     BH = event number (see AH=6Dh)
  8209.     BL = enable mask
  8210.         00h disable event
  8211.         01h enable event
  8212. Return: AH = 00h if successful
  8213. SeeAlso: AH=6Dh,AH=6Fh
  8214. --------b-156F------------------------------------
  8215. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  8216.     AH = 6Fh
  8217.     AL = event number (see AH=6Dh)
  8218. Return: AH = 00h if successful
  8219. Desc:    Acknowledges the event, so the next similar event can be detected 
  8220. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  8221. ----------157000-----------------------------
  8222. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  8223.     AX = 7000h
  8224.     BL = number of word to read (00h-3Fh)
  8225. Return: CF clear if function supported
  8226.         DX = contents of EEPROM word
  8227. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  8228.       the clock chip to store system configuration information
  8229. SeeAlso: AX=7001h
  8230. ----------157001-----------------------------
  8231. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  8232.     AX = 7001h
  8233.     BL = number of word to read (00h-3Fh)
  8234.     DX = new value for EEPROM word
  8235. Return: CF clear if function supported
  8236. Note:    the EEPROMs are normally written only by the system setup program;
  8237.       changing the values can badly mess up a Tandy
  8238. SeeAlso: AX=7000h
  8239. --------b-1570------------------------------------
  8240. INT 15 - HUNTER 16 - CONTROL SOUND
  8241.     AH = 70h
  8242.     AL = new state
  8243.         00h disable sound
  8244.         else enable sound
  8245. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  8246.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  8247. --------b-1571------------------------------------
  8248. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  8249.     AH = 71h
  8250.     BL = column
  8251.     BH = row
  8252.     AL = column switch (00h disable, 01h enable)
  8253.     CL = row switch (00h disable, 01h enable)
  8254. Return: AH = status
  8255. SeeAlso: AH=7Bh,AH=88h
  8256. --------b-157200----------------------------------
  8257. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  8258.     AX = 7200h
  8259. Return: AH = 00h if successful
  8260. Desc:    reset the serial number to the default serial number present when the
  8261.       Hunter 16 was shipped
  8262. SeeAlso: AH=6Ch,AH=72h
  8263. --------b-1572------------------------------------
  8264. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  8265.     AH = 72h
  8266.     AL nonzero
  8267.     DS:BX -> new serial number (6 ASCII digits)
  8268. Return: AH = 00h if successful
  8269. Desc:    install a new serial number
  8270. SeeAlso: AH=6Ch,AX=7200h
  8271. --------b-1573------------------------------------
  8272. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  8273.     AH = 73h
  8274.     AL = drive (0: A:, 1: B:)
  8275. Return: AH = status
  8276.         00h successful
  8277.         FFh Oracle GT drive not connected
  8278.     AL = power level in percent of maximum (0..100)
  8279. Desc:    get the power remaining in the Oracle GT batteries
  8280. SeeAlso: AH=61h
  8281. --------b-1574------------------------------------
  8282. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  8283.     AH = 74h
  8284.     AL = new level
  8285.         01h off
  8286.         02h unchanged
  8287.         03h change level
  8288.         BL = desired level (00h-7Fh)
  8289. Return: AH = status
  8290. Desc:    select the backlight level to use when the Hunter is next turned on
  8291. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  8292. --------b-1575------------------------------------
  8293. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  8294.     AH = 75h
  8295.     AL = new level
  8296.         01h off
  8297.         02h unchanged
  8298.         03h change level
  8299.         BL = desired level (00h-7Fh)
  8300. Return: AH = status
  8301. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  8302. SeeAlso: AH=63h,AH=74h
  8303. --------b-1576------------------------------------
  8304. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  8305.     AH = 76h
  8306.     BX = power save control (see #0315)
  8307. SeeAlso: AH=74h
  8308.  
  8309. Bitfields for HUNTER 16 power save control:
  8310. Bit(s)    Description    (Table 0315)
  8311.  0    power save enabled
  8312.  1    inhibit power save when waiting for COM1 data
  8313.  2    inhibit power save when waiting for COM2 data
  8314.  3    inhibit power save when waiting for data from barcode wand
  8315.  4    inhibit power up on timer tick
  8316. --------b-1579------------------------------------
  8317. INT 15 - HUNTER 16 - REDIRECT LPT1
  8318.     AH = 79h
  8319.     AL = port to which to redirect (00h COM1, 01h COM2)
  8320. --------b-157A------------------------------------
  8321. INT 15 - HUNTER 16 - INVOKE HOT KEY
  8322.     AH = 7Ah
  8323. Desc:    this function has the same effect as pressing the HOT key
  8324. SeeAlso: AH=7Bh
  8325. --------b-157B------------------------------------
  8326. INT 15 - HUNTER 16 - CONTROL HOT KEY
  8327.     AH = 7Bh
  8328.     AL = 00h prevent HOT key
  8329.         else allow HOT key
  8330. Desc:    Allow or prevent the HOT key function which is used to examine and
  8331.       change the Hunter setup
  8332. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  8333. --------b-157C------------------------------------
  8334. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  8335.     AH = 7Ch
  8336.     AL = 00h prevent HOT key power option
  8337.         else allow HOT key power option
  8338. Desc:    allow or prevent changing the power options
  8339. SeeAlso: AH=7Bh,AH=7Dh
  8340. --------b-157D------------------------------------
  8341. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  8342.     AH = 7Dh
  8343.     AL = 00h turn off after 10 warnings
  8344.         else never turn off
  8345. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  8346. SeeAlso: AH=7Ch
  8347. --------b-157E------------------------------------
  8348. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  8349.     AH = 7Eh
  8350.     AL = 00h do not prompt
  8351.         else prompt
  8352. Desc:    select whether the user is prompted for the battery state if the
  8353.       battery cap has been off when the system is turned on
  8354. SeeAlso: AH=7Fh
  8355. --------b-157F------------------------------------
  8356. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  8357.     AH = 7Fh
  8358.     AL = battery type
  8359.         00h     non-rechargeable
  8360.         else rechargeable
  8361. SeeAlso: AH=7Eh
  8362. --------!---Section--------------------------
  8363.