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

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