home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / inter47 / interrup.b < prev    next >
Text File  |  1995-08-13  |  343KB  |  9,252 lines

  1. Interrupt List, part 2 of 13
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------c-1330-------------------------------
  4. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  5.     AH = 30h
  6.     AL = what to get
  7.         00h system info (see #0175)
  8.         01h drive info (see #0176)
  9.         02h access frequency (array of 30 words)
  10.         03h drive index
  11.         (array of 32 bytes indicating BIOS drive for DOS drive)
  12.     DS:DX -> buffer for info
  13. Return: AX = status (0000h successful, 8000h invalid info specifier)
  14. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  15.       Associates, Inc.
  16.  
  17. Format of QUICKCACHE II system info:
  18. Offset    Size    Description    (Table 0175)
  19.  00h    BYTE    flag: cache enabled
  20.  01h    BYTE    flag: buffered writes enabled
  21.  02h    BYTE    flag: buffered reads enabled
  22.  03h    BYTE    flag: sounds enabled
  23.  04h    BYTE    flag: autodismount enabled
  24.  05h    BYTE    ???
  25.  06h    BYTE    flag: ???
  26.  07h    BYTE    flag: ???
  27.  08h    BYTE    flag: "em_assigned"
  28.  09h    BYTE    flag: emulated EMS
  29.  0Ah    BYTE    single sector bonus
  30.  0Bh    BYTE    "sticky_max"
  31.  0Ch    BYTE    write sector bonus
  32.  0Dh    BYTE    bonus threshold
  33.  0Eh    WORD    flush interval
  34.  10h    WORD    flush count
  35.  12h    WORD    reserve pool size
  36.  14h    WORD    remaining space in reserve pool
  37.  16h    WORD    required free memory
  38.  18h    WORD    total cache sectors
  39.  1Ah    WORD    dirty cache sectors
  40.  1Ch    BYTE    trace buffer size
  41.  1Dh    BYTE    reserved (padding)
  42.  
  43. Format of QUICKCACHE II drive info [16-element array, one element]:
  44. Offset    Size    Description    (Table 0176)
  45.  00h    BYTE    DOS drive number
  46.  01h    BYTE    BIOS drive number
  47.  02h    BYTE    maximum sector number
  48.  03h    BYTE    maximum head number
  49.  04h    BYTE    read buffer size
  50.  05h    BYTE    write buffer size
  51.  06h    BYTE    last status
  52.  07h    BYTE    flag: enabled
  53.  08h    BYTE    flag: buffered write enabled
  54.  09h    BYTE    flag: buffered read enabled
  55.  0Ah    BYTE    flag: in use (drive info is valid)
  56.  0Bh    BYTE    flag: cylinder flush
  57.  0Ch    BYTE    reserved (padding)
  58.  0Dh    BYTE    sectors per track
  59.  0Eh    WORD    sector size
  60.  10h    WORD    sectors assigned
  61.  12h    WORD    dirty sectors
  62.  14h    WORD    reserved sectors
  63.  16h    WORD    number of read errors
  64.  18h    WORD    number of write errors
  65.  1Ah    DWORD    "rio_count"
  66.  1Eh    DWORD    number of cache misses
  67.  22h    DWORD    "wio_count"
  68.  26h    DWORD    "dio_count"
  69. --------c-1331-------------------------------
  70. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  71.     AH = 31h
  72.     BX = number of paragraphs of conventional memory to reserve for apps
  73. Return: AX = status (0000h successful)
  74. --------c-1332-------------------------------
  75. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  76.     AH = 32h
  77.     AL = drive number (00h=A:)
  78. Return: AX = status (0000h successful)
  79. SeeAlso: AH=22h"QUICKCACHE",AH=33h
  80. --------c-1333-------------------------------
  81. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  82.     AH = 33h
  83.     AL = drive number (00h=A:)
  84. Return: AX = status (0000h successful)
  85. SeeAlso: AH=22h"QUICKCACHE",AH=32h
  86. --------c-1334-------------------------------
  87. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  88.     AH = 34h
  89.     AL = function
  90.         00h end sector locking/unlocking
  91.         01h lock all accessed sectors into cache
  92.         02h unlock all accessed sectors and discard from cache
  93. Return: AX = status (0000h successful)
  94. SeeAlso: AH=20h"QUICKCACHE",AH=35h
  95. --------c-1335-------------------------------
  96. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  97.     AH = 35h
  98.     BX = number of sectors in lock pool
  99. Return: AX = status (0000h successful)
  100. Desc:    specify the number of cache sector buffers which may be dedicated to
  101.       data locked into the cache
  102. SeeAlso: AH=34h
  103. --------c-1336-------------------------------
  104. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  105.     AH = 36h
  106.     AL = new size of trace buffer
  107. Return: AX = status (0000h successful)
  108. Note:    called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
  109. SeeAlso: AH=24h"QUICKCACHE"
  110. --------c-1337-------------------------------
  111. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  112.     AH = 37h
  113.     AL = new state (00h disabled, else enabled)
  114.     DL = drive number (00h = A:)
  115. Return: AX = status (0000h successful)
  116. SeeAlso: AH=2Dh,AH=38h
  117. --------c-1338-------------------------------
  118. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  119.     AH = 38h
  120.     AL = new state (00h disabled, else enabled)
  121.     DL = drive number (00h = A:)
  122. Return: AX = status (0000h successful)
  123. SeeAlso: AH=2Ch,AH=37h
  124. --------c-1339-------------------------------
  125. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  126.     AH = 39h
  127.     AL = new size of read buffer
  128.     DL = drive number (00h = A:)
  129. Return: AX = status (0000h successful)
  130. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  131.       Associates, Inc.
  132. SeeAlso: AH=2Ah,AH=3Ah
  133. --------c-133A-------------------------------
  134. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  135.     AH = 3Ah
  136.     AL = new size of write buffer
  137.     DL = drive number (00h = A:)
  138. Return: AX = status (0000h successful)
  139. SeeAlso: AH=2Ah,AH=39h
  140. --------c-133B-------------------------------
  141. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  142.     AH = 3Bh
  143.     AL = new state of ??? (01h enabled, else disabled)
  144. Return: AX = status (0000h successful)
  145. Note:    is affected by the flag reported at offset 05h of the system info
  146.       returned by AH=30h, and sets the flag at offset 06h
  147. SeeAlso: AH=3Ch
  148. --------c-133C-------------------------------
  149. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  150.     AH = 3Ch
  151.     AL = new state of ??? (01h enabled, else disabled)
  152. Return: AX = status (0000h successful)
  153. Note:    is affected by the flag reported at offset 05h of the system info
  154.       returned by AH=30h, and sets the flag at offset 07h
  155. SeeAlso: AH=3Bh
  156. --------c-133D-------------------------------
  157. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  158.     AH = 3Dh
  159.     AL = new state (01h enabled, else disabled)
  160.     DL = drive number (00h = A:)
  161. Return: AX = status (0000h successful)
  162. --------c-133E-------------------------------
  163. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  164.     AH = 3Eh
  165.     AL = new value for bonus
  166. Return: AX = status (0000h successful)
  167. Desc:    specify the bonus score to give to single-sector transfers in order to
  168.       keep those sectors in the cache longer
  169. --------c-133F-------------------------------
  170. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  171.     AH = 3Fh
  172.     AL = new value for bonus threshold
  173. Return: AX = status (0000h successful)
  174. --------c-1340-------------------------------
  175. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  176.     AH = 40h
  177.     AL = new value for "sticky_max"
  178. Return: AX = status (0000h successful)
  179. SeeAlso: AH=41h"QUICKCACHE"
  180. --------d-1341--BX55AA-----------------------
  181. INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
  182.     AH = 41h
  183.     BX = 55AAh
  184.     DL = drive (80h-FFh)
  185. Return:    CF set on error (not supported)
  186.         AH = 01h (invalid function)
  187.     CF clear if successful
  188.         BX = AA55h if installed
  189.         AH = major version of extensions (01h = 1.x, 20h = 2.0)
  190.         AL = internal use
  191.         CX = API subset support bitmap (see #0177)
  192.         DH = extension version (v2.0+ ??? -- not present in 1.x)
  193. Note:    the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
  194.       the INT 13 Extensions API
  195. SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
  196.  
  197. Bitfields for IBM/MS INT 13 Extensions API support bitmap:
  198. Bit(s)    Description    (Table 0177)
  199.  0    extended disk access functions (AH=42h-44h,47h,48h) supported
  200.  1    removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
  201.       supported
  202.  2    extended drive parameter table is valid (see #0179,#0182)
  203.  3-15    reserved (0)
  204. --------c-1341-------------------------------
  205. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  206.     AH = 41h
  207.     AL = direction
  208.         01h save to file
  209.         else restore from file
  210.     ES:DI -> 1024-byte buffer for ???
  211. Return: AX = status (0000h successful, 8000h failed)
  212. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  213.       Associates, Inc.
  214. SeeAlso: AH=40h"QUICKCACHE"
  215. --------d-1342-------------------------------
  216. INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
  217.     AH = 42h
  218.     DL = drive number
  219.     DS:SI -> disk address packet (see #0178)
  220. Return: CF clear if successful
  221.         AH = 00h
  222.     CF set on error
  223.         AH = error code (see #0140)
  224.         disk address packet's block count field set to number of blocks
  225.           successfully transferred
  226. SeeAlso: AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
  227.  
  228. Format of disk address packet:
  229. Offset    Size    Description    (Table 0178)
  230.  00h    BYTE    10h (size of packet)
  231.  01h    BYTE    reserved (0)
  232.  02h    WORD    number of blocks to transfer
  233.  04h    DWORD    -> transfer buffer
  234.  08h    QWORD    starting absolute block number
  235. --------N-134257DX1234-----------------------
  236. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  237.     AX = 4257h ("BW")
  238.     DX = 1234h
  239. Return: BX = 414Ch if installed
  240. Program: BWLPD is the printer daemon from the BW-NFS package
  241. SeeAlso: INT 62/AH=00h"ETHDEV"
  242. --------d-1343-------------------------------
  243. INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
  244.     AH = 43h
  245.     AL = write flags
  246.        bit 0: verify write
  247.        bits 7-1 reserved (0)
  248.     DL = drive number
  249.     DS:SI -> disk address packet (see #0178)
  250. Return: CF clear if successful
  251.         AH = 00h
  252.     CF set on error
  253.         AH = error code (see #0140)
  254.         disk address packet's block count field set to number of blocks
  255.           successfully transferred
  256. Note:    the BIOS returns CF set/AH=01h (invalid function) if verify is
  257.       requested but not supported
  258. SeeAlso: AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
  259. --------d-1344-------------------------------
  260. INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
  261.     AH = 44h
  262.     DL = drive number
  263.     DS:SI -> disk address packet (see #0178)
  264. Return: CF clear if successful
  265.         AH = 00h
  266.     CF set on error
  267.         AH = error code (see #0140)
  268.         disk address packet's block count field set to number of blocks
  269.           successfully verified
  270. SeeAlso: AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
  271. --------d-1345-------------------------------
  272. INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
  273.     AH = 45h
  274.     AL = operation
  275.         00h lock media in drive
  276.         01h unlock media
  277.         02h check lock status
  278.     DL = drive number
  279. Return: CF clear if successful
  280.         AH = 00h
  281.         AL = lock state (00h = unlocked)
  282.     CF set on error
  283.         AH = error code (see #0140)
  284. Notes:    this function is required to be supported for any removable drives
  285.       numbered 80h or higher
  286.     up to 255 locks may be placed on a drive, and the media will not
  287.       be physically unlocked until all locks have been removed
  288. SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"Phoenix"
  289. --------d-1346-------------------------------
  290. INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
  291.     AH = 46h
  292.     AL = 00h (reserved)
  293.     DL = drive number
  294. Return: CF clear if successful
  295.         AH = 00h
  296.     CF set on error
  297.         AH = error code (see #0140)
  298. SeeAlso: AH=49h,INT 15/AH=52h"Phoenix"
  299. --------d-1347-------------------------------
  300. INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
  301.     AH = 47h
  302.     DL = drive number
  303.     DS:SI -> disk address packet (see #0178)
  304. Return: CF clear if successful
  305.         AH = 00h
  306.     CF set on error
  307.         AH = error code (see #0140)
  308. SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
  309. --------d-1348-------------------------------
  310. INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
  311.     AH = 48h
  312.     DL = drive (80h-FFh)
  313.     DS:SI -> buffer for drive parameters (see #0179)
  314. Return: CF clear if successful
  315.         DS:SI buffer filled
  316.     CF set on error
  317.         AH = error code (see #0140)
  318. SeeAlso: AH=08h,AH=41h,AH=49h
  319.  
  320. Format of IBM/MS INT 13 Extensions drive parameters:
  321. Offset    Size    Description    (Table 0179)
  322.  00h    WORD    (call) size of buffer (001Ah for v1.x, 001Eh for v2.0)
  323.         (ret) size of returned data
  324.  02h    WORD    information flags (see #0180)
  325.  04h    DWORD    number of cylinders on drive
  326.  08h    DWORD    number of heads on drive
  327.  0Ch    DWORD    number of sectors per track
  328.  10h    QWORD    total number of sectors on drive
  329.  18h    WORD    bytes per sector
  330. ---v2.0---
  331.  1Ah    DWORD    -> configuration parameters (see #0182)
  332.         FFFFh:FFFFh if not available
  333. SeeAlso: #0181,#1855
  334.  
  335. Bitfields for IBM/MS INT 13 Extensions information flags:
  336. Bit(s)    Description    (Table 0180)
  337.  0    DMA boundary errors handled transparently
  338.  1    cylinder/head/sectors-per-track information is valid
  339.  2    removable drive
  340.  3    write with verify supported
  341.  4    drive has change-line support (required if drive >= 80h is removable)
  342.  5    drive can be locked (required if drive >= 80h is removable)
  343.  6    CHS information set to maximum supported values, not current media
  344.  
  345. Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
  346. Offset    Size    Description    (Table 0181)
  347.  00h    WORD    number of cylinders
  348.  02h    BYTE    number of heads
  349.  03h    BYTE    A0h (signature indicating translated table)
  350.  04h    BYTE    number of physical sectors per track
  351.  05h    WORD    starting write precompensation cylinder number
  352.  07h    BYTE    reserved
  353.  08h    BYTE    control byte (see #1857 at INT 41)
  354.  09h    WORD    number of physical cylinders
  355.  0Bh    BYTE    number of physical heads
  356.  0Ch    WORD    cylinder number of landing zone
  357.  0Eh    BYTE    number of logical sectors per track
  358.  0Fh    BYTE    checksum
  359. Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
  360.       IBM/MS INT 13 extensions
  361. SeeAlso: #0182,#1855
  362.  
  363. Format of Phoenix Enhanced Disk Drive Spec fixed disk param table extension:
  364. Offset    Size    Description    (Table 0182)
  365.  00h    WORD    physical I/O port base address
  366.  02h    WORD    disk-drive control port address
  367.  04h    BYTE    drive flags (see #0183)
  368.  05h    BYTE    proprietary information
  369.         bits 7-4 reserved (0)
  370.         bits 3-0: Phoenix proprietary (used by BIOS)
  371.  06h    BYTE    IRQ (bits 3-0; bits 7-4 reserved and must be 0)
  372.  07h    BYTE    sector count for multi-sector transfers
  373.  08h    BYTE    DMA control
  374.         bits 7-4: DMA type
  375.         bits 3-0: DMA channel
  376.  09h    BYTE    programmed I/O control
  377.         bits 7-4: reserved (0)
  378.         bits 3-0: PIO type (1,2, or 3)
  379.  0Ah    WORD    drive options (see #0184)
  380.  0Ch  2 BYTEs    reserved (0)
  381.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  382.         (currently 10h)
  383.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  384. SeeAlso: #0181
  385.  
  386. Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
  387. Bit(s)    Description    (Table 0183)
  388.  7    reserved (1)
  389.  6    LBA enabled
  390.  5    reserved (1)
  391.  4    drive is slave
  392.  3-0    reserved (0)
  393. SeeAlso: #0182,#0184
  394.  
  395. Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
  396. Bit(s)    Description    (Table 0184)
  397.  0    fast PIO enabled
  398.  1    fast DMA access enabled
  399.  2    block PIO (multi-sector transfers) enabled
  400.  3    CHS translation enabled
  401.  4    LBA translation enabled
  402.  5    removable media
  403.  6    CD-ROM
  404.  7    32-bit transfer mode
  405.  15-8    reserved
  406. SeeAlso: #0182,#0183
  407. --------d-1349-------------------------------
  408. INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
  409.     AH = 49h
  410.     DL = drive number
  411. Return: CF clear if media has not changed
  412.         AH = 00h
  413.     CF set if media may have changed
  414.         AH = 06h (see #0140)
  415. Note:    unlike AH=16h, any drive number may be specified
  416. SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
  417. --------v-135001------------------------
  418. INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
  419.     AX = 5001h
  420. Return: AX = 0150h if resident
  421. SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
  422. --------v-135342CX0001-----------------------
  423. INT 13 - ScanBoot - INSTALLATION CHECK
  424.     AX = 5342h ("SB")
  425.     CX = 0001h
  426.     DX = 0000h
  427. Return: CF clear if ScanBoot installed
  428.        AX = 0000h
  429.        CX = serial number ("SW" if shareware release)
  430.        DX = version
  431.        BX,SI,ES destroyed
  432. Program: ScanBoot is a virus-detection TSR by PanSoft
  433. --------d-135501-----------------------------
  434. INT 13 - Seagate ST01/ST02 - Inquiry
  435.     AX = 5501h
  436.     DH = number of bytes to transfer
  437.     DL = drive ID (80h, 81h, ...)
  438.     ES:BX -> buffer for results
  439. Return:    ES:BX buffer filled with the Inquiry results
  440. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  441.       so all commands must be assumed to have been successful
  442.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  443.       drives without changing the BIOS drive count at 0040h:0075h
  444.     this command is identical to the SCSI Inquiry command
  445. --------d-135502-----------------------------
  446. INT 13 - Seagate ST01/ST02 - RESERVED
  447.     AX = 5502h
  448. --------d-135503-----------------------------
  449. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  450.     AX = 5503h
  451.     DH = DTQ byte (see #0185)
  452.     DL = drive ID (80h, 81h, ...)
  453. Return:    nothing
  454.  
  455. Bitfields for DTQ byte:
  456. Bit(s)    Description    (Table 0185)
  457.  7    reserved
  458.  6    SCSI drive attached
  459.  5    reserved
  460.  4    selected drive is ST225N/NP (Paired)
  461.  3    selected drive is ST225N
  462.  2    Host Adapter checks parity on the selected drive
  463.  1    selected drive has been installed
  464.  0    Seagate installation software present
  465. --------d-135504-----------------------------
  466. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  467.     AX = 5504h
  468.     DX = drive (bit 7 set for hard disk)
  469. Return: CF clear if successful
  470.         AX = 4321h if ST01/ST02h
  471.         AX = 4322h if ??? Seagate controller
  472.     CF set on error
  473. SeeAlso: AX=5505h,AX=5514h
  474. --------d-135504-----------------------------
  475. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  476.     AX = 5504h
  477.     DL = drive ID (80h, 81h, ...)
  478. Return:    AX = 4321h
  479.     BL = selected drive number (00h, 01h)
  480.     BH = number of drives attached to Host Adapter (max. 2)
  481. --------d-135505-----------------------------
  482. INT 13 - Seagate - ??? - PARK HEADS
  483.     AX = 5505h
  484.     DX = drive (bit 7 set for hard disk)
  485. Return: CF clear if successful
  486.     CF set on error
  487. SeeAlso: AX=5504h,AX=5515h
  488. --------d-135505-----------------------------
  489. INT 13 - Seagate ST01/ST02 - PARK HEADS
  490.     AX = 5505h
  491.     DL = drive ID (80h, 81h, ...)
  492.     DH = subfunction
  493.         00h park heads (SCSI Stop command)
  494.         01h un-park heads (SCSI Start command)
  495. Return:    nothing
  496. --------d-135506-----------------------------
  497. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  498.     AX = 5506h
  499.     DL = drive ID (80h, 81h, ...)
  500.     DH = subfunction
  501.         00h disable parity check
  502.         01h enable parity check
  503.         02h return current parity setting
  504. Return:    AL = status
  505.         00h parity checking disabled
  506.         01h parity checking enabled
  507. --------d-135507-----------------------------
  508. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  509.     AX = 5507h to 550Dh
  510. Note:    officially listed as "reserved"
  511. --------d-135514-----------------------------
  512. INT 13 U - Seagate - ???
  513.     AX = 5514h
  514.     DX = drive (bit 7 set for hard disk)
  515. Return: CF clear if successful
  516.     CF set on error
  517.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  518. SeeAlso: AX=5504h,AX=5515h
  519. --------d-135515-----------------------------
  520. INT 13 U - Seagate - PARK HEADS???
  521.     AX = 5515h
  522.     DX = drive (bit 7 set for hard disk)
  523. Return: CF clear if successful
  524.     CF set on error
  525. Note:    appears to be identical to AX=5505h
  526. SeeAlso: AX=5504h,AX=5505h
  527. --------d-1359-------------------------------
  528. INT 13 - SyQuest - Generic SCSI pass through
  529.     AH = 59h
  530.     CX = HOST_ID, 0-based
  531.     DX = 80h
  532.     ES:BX pointer to SCSI structure (see #0186)
  533. Return: CF clear
  534.     AH = 95h
  535. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  536.  
  537. Format of SyQuest SCSI structure:
  538. Offset    Size    Description    (Table 0186)
  539.  00h    WORD    opcode (see #0187)
  540.  02h    BYTE    target's SCSI ID
  541.  03h    BYTE    target's logical unit number
  542.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  543.  05h    BYTE    host status
  544.         00h successful
  545.         01h selection time out
  546.         02h data over-run or under-run
  547.  06h    BYTE    target status at command completion
  548.         00h successful
  549.         02h check status
  550.         08h busy
  551.  07h    BYTE    command data block length
  552.  08h    DWORD    request data length
  553.  0Ch    DWORD    result data length (actual length of data transferred)
  554.  10h    DWORD    -> CDB
  555.  14h    DWORD    -> data buffer
  556. Note:    The handler does not perform a 'Request Sense' command if there was an error
  557.  
  558. (Table 0187)
  559. Values for SCSI opcode:
  560.  00h    verify interface
  561.     clears carry flag and returns if function is available
  562.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of
  563.     length less than 40 byte including the terminator.
  564.     The string is stored in the buffer pointed by p_buf.
  565.  02h    device mapping info. The caller provides a one byte buffer.
  566.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  567.     It stores 0 if that target does not exists.
  568.  03h    execute SCSI command
  569.  04h    device reset
  570.  05h    SCSI bus reset
  571. --------d-1370-------------------------------
  572. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  573.     AH = 70h
  574.     ???
  575. Return: ???
  576. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  577.       formatting program) make this call, presumably to EDVR.SYS (the
  578.       partitioning driver)
  579. SeeAlso: AH=ADh
  580. ----------1375-------------------------------
  581. INT 13 - ???
  582.     AH = 75h
  583.     ???
  584. Return: AH = ???
  585.     ???
  586. Note:    intercepted by PC-Cache (v5.1 only)
  587. ----------1376-------------------------------
  588. INT 13 - ???
  589.     AH = 76h
  590.     ???
  591. Return: AH = ???
  592.     ???
  593. Note:    intercepted by PC-Cache (v5.1 only)
  594. --------c-137B00-----------------------------
  595. INT 13 - NOW! v3.05 - GET INFORMATION
  596.     AX = 7B00h
  597.     CX:DX -> 1F8h-byte buffer for information record (see #0188)
  598. Return: AX = 0000h
  599.     BX = segment of main resident code
  600.     ES = ???
  601. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  602. SeeAlso: AX=7B02h,AH=EFh
  603.  
  604. Format of NOW! information record:
  605. Offset    Size    Description    (Table 0188)
  606.  00h 80 BYTEs    name of directory from which NOW! was started
  607.  50h 424 BYTEs    ???
  608.  81h  ? BYTEs    array of bytes for ???
  609.  F7h 250 BYTEs    array of 25 entries, one per drive???
  610.     Offset    Size    Description
  611.      00h  2 BYTEs    ???
  612.      02h    WORD    ???
  613.      04h    WORD    ???
  614.      06h  4 BYTEs    ???
  615. 1F1h  7 BYTEs    ???
  616. --------c-137B01-----------------------------
  617. INT 13 - NOW! v3.05 - ???
  618.     AX = 7B01h
  619. Return: DX = segment of ???
  620. SeeAlso: AX=7B00h
  621. --------c-137B02-----------------------------
  622. INT 13 - NOW! v3.05 - SET INFORMATION
  623.     AX = 7B02h
  624.     BX = segment of ??? (10h above a PSP)
  625.     CX:DX -> 1F8h-byte information record (see #0188)
  626. Return: ???
  627. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  628. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  629.       BX
  630. SeeAlso: AX=7B00h
  631. --------c-137B03-----------------------------
  632. INT 13 - NOW! v3.05 - ???
  633.     AX = 7B03h
  634.     ???
  635. Return: ???
  636. SeeAlso: AX=7B00h,AX=7B04h
  637. --------c-137B04-----------------------------
  638. INT 13 - NOW! v3.05 - ???
  639.     AX = 7B04h
  640.     ???
  641. Return: ???
  642. SeeAlso: AX=7B03h
  643. --------c-137B05-----------------------------
  644. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  645.     AX = 7B05h
  646. Return: BX:AX = number of physical accesses???
  647.     DX:CX = total disk accesses???
  648. SeeAlso: AX=7B00h,AX=7B06h
  649. --------c-137B06-----------------------------
  650. INT 13 - NOW! v3.05 - GET ???
  651.     AX = 7B06h
  652.     BX = ???
  653. Return: AX = 0000h
  654.     BX = ???
  655. SeeAlso: AX=7B05h,AX=7B07h
  656. --------c-137B07-----------------------------
  657. INT 13 - NOW! v3.05 - GET ???
  658.     AX = 7B07h
  659. Return: AX = ???
  660.     BX = ???
  661.     CX = ???
  662.     DX = ???
  663. SeeAlso: AX=7B06h
  664. --------c-137B08-----------------------------
  665. INT 13 - NOW! v3.05 - ???
  666.     AX = 7B08h
  667.     CX = ??? (default 00h)
  668. Return: ???
  669. SeeAlso: AX=7B00h
  670. --------c-1380--CX6572-----------------------
  671. INT 13 - FAST! v4.02+ - API
  672.     AH = 80h
  673.     CX = 6572h
  674.     DX = 1970h
  675.     ES:BX -> request packet (see #0190)
  676.     AL = function number (see #0189)
  677. Return: AH = status (except function 06h)
  678.         00h if successful
  679.         01h invalid function
  680.         05h not supported by the installed variant
  681.     CF clear if successful
  682.     CF set on error
  683.     AL may be destroyed
  684. Program: FAST! is a disk cache by Future Computing Systems and marketed by BLOC
  685.       Publishing Corp.
  686. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  687. Index:    hotkeys;FAST!
  688.  
  689. (Table 0189)
  690. Values for FAST! function:
  691.  01h    get cache information (see separate entry)
  692.  04h    disable cache
  693.  05h    enable cache and reset statistics
  694.  06h    installation check (see separate entry)
  695.  07h    unhook interrupts (see separate entry)
  696.  09h    flush cache
  697.  0Ah    (v4.02+) enable staged writes
  698.  0Bh    (v4.02+) disable staged writes
  699.  0Ch    (v4.02+) enable beep on flush
  700.  0Dh    (v4.02+) disable beep on flush
  701.  0Eh    ???
  702.  0Fh    ???
  703.  10h    (v4.12+) enable hotkeys
  704.  11h    (v4.12+) disable hotkeys
  705.  12h    (v4.13+) set idle delay
  706.  13h    (v4.13+) set flush dirty percentage
  707.  14h    (v5.00+) enable mouse checks
  708.  15h    (v5.00+) disable mouse checks
  709.  16h    (v5.00d+) reduce cache size to minimum
  710.  17h    (v5.00d+) increase cache size to maximum
  711.  
  712. Format of FAST! request packet:
  713. Offset    Size    Description    (Table 0190)
  714.  00h    DWORD    pointer to 19-byte signature string (see #0191)
  715.  04h    DWORD    pointer to buffer for data (if needed by function)
  716.  
  717. (Table 0191)
  718. Values for FAST! v4.04-v5.03 signature string:
  719.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  720. --------c-138001CX6572-----------------------
  721. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  722.     AX = 8001h
  723.     CX = 6572h
  724.     DX = 1970h
  725.     ES:BX -> request packet (see #0192)
  726. Return: AH = 00h if successful
  727. SeeAlso: AH=80h,AX=8006h
  728.  
  729. Format of FAST! request packet:
  730. Offset    Size    Description    (Table 0192)
  731.  00h    DWORD    -> 19-byte signature string (see #0191)
  732.  04h    DWORD    -> buffer for cache information (see #0193)
  733.  
  734. Format of FAST! cache information (v5.00-5.03):
  735. Offset    Size    Description    (Table 0193)
  736.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  737.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  738.  03h    BYTE    FAST! variant
  739.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  740.  04h    DWORD    total number of read requests
  741.  08h    DWORD    number of physical disk reads
  742.  0Ch    DWORD    grabbed hash buckets
  743.  10h    DWORD    "st_386mem"
  744.  14h    DWORD    total number of writes (only counted when staging enabled)
  745.  18h    DWORD    number of physical disk writes (only when staging enabled)
  746.  1Ch    DWORD    number of write errors while flushing cache
  747.  20h    WORD    flags1 (see #0194)
  748.  22h    WORD    flags
  749.         bit 0: ???
  750.         bit 1: staged writes enabled
  751.  24h    WORD    ???
  752.  26h    WORD    maximum cache size in KB
  753.  28h    WORD    minimum cache size in KB
  754.  2Ah    WORD    segment of first cache buffer (FASTC)
  755.         segment of EMS page frame (FASTE)
  756.         XMS handle (FASTX XMS)
  757.  2Ch    WORD    number of hash buckets containing no entries
  758.  2Eh    WORD    number of hash buckets containing one entry
  759.  30h    WORD    number of hash buckets containing two entries
  760.  32h    WORD    number of hash buckets containing three entries
  761.  34h    WORD    number of hash buckets containing four entries
  762.  36h    WORD    number of hash buckets containing five entries
  763.  38h    WORD    maximum contiguous sectors
  764.  3Ah    WORD    hash factor
  765.  3Ch    WORD    number of paragraphs of memory used below 1M
  766.  3Eh    WORD    entries per hash bucket
  767.  40h    WORD    idle delay in seconds
  768.  42h  2 BYTEs    ???
  769.  44h    WORD    staged write threshold percentage
  770.  46h  2 BYTEs    ???
  771.  48h    WORD    number of dirty sectors
  772.  4Ah    WORD    number of staged write buffers
  773.  4Ch    WORD    current cache size in KB
  774.  4Eh    WORD    beep frequency in Hz
  775.  50h    WORD    ???
  776.  52h    WORD    ???
  777.  
  778. Bitfields for FAST! flags1:
  779. Bit(s)    Description    (Table 0194)
  780.  0    beep on flush
  781.  3    hotkeys enabled
  782.  4    mouse idle check enabled
  783.  8    caching enabled
  784.  13    ???
  785. --------c-138006CX6572-----------------------
  786. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  787.     AX = 8006h
  788.     CX = 6572h
  789.     DX = 1970h
  790.     ES:BX -> request packet (see #0195)
  791. Return: AX = 1965h if installed
  792. SeeAlso: AH=80h,AX=8001h,AX=8007h
  793.  
  794. Format of FAST! request packet:
  795. Offset    Size    Description    (Table 0195)
  796.  00h    DWORD    -> 19-byte signature string (see #0191)
  797. --------c-138007CX6572-----------------------
  798. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  799.     AX = 8007h
  800.     CX = 6572h
  801.     DX = 1970h
  802.     ES:BX -> request packet (see #0196)
  803. Return: AX = 1965h if installed
  804. SeeAlso: AH=80h,AX=8006h
  805. Index:    uninstall;FAST!
  806.  
  807. Format of FAST! request packet:
  808. Offset    Size    Description    (Table 0196)
  809.  00h    DWORD    -> 19-byte signature string (see #0191)
  810. --------c-1381--SI4358-----------------------
  811. INT 13 - Super PC-Kwik v3.20+ - ???
  812.     AH = 81h
  813.     SI = 4358h
  814.     ???
  815. Return: ???
  816. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  817.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  818.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  819.     returns immediately in PC-Cache v5.x
  820. Index:    PC-Cache|Qualitas Qcache
  821. --------c-1382--SI4358-----------------------
  822. INT 13 - Super PC-Kwik v3.20+ - ???
  823.     AH = 82h
  824.     SI = 4358h
  825.     ???
  826. Return: AL = ???
  827. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  828.       Super PC-Kwik, and thus support this call
  829. SeeAlso: AH=84h
  830. Index:    PC-Cache|Qualitas Qcache
  831. --------c-1383--SI4358-----------------------
  832. INT 13 - Super PC-Kwik v3.20+ - ???
  833.     AH = 83h
  834.     SI = 4358h
  835.     AL = ???
  836.     ES:BX -> ???
  837.     ???
  838. Return: ???
  839. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  840.       Super PC-Kwik, and thus support this call
  841. SeeAlso: AH=85h
  842. Index:    PC-Cache|Qualitas Qcache
  843. --------c-1384--SI4358-----------------------
  844. INT 13 - Super PC-Kwik v3.20+ - ???
  845.     AH = 84h
  846.     SI = 4358h
  847.     AL = ???
  848.     ???
  849. Return: AL = ???
  850. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  851.       Super PC-Kwik, and thus support this call
  852. SeeAlso: AH=82h
  853. Index:    PC-Cache|Qualitas Qcache
  854. --------c-1385--SI4358-----------------------
  855. INT 13 - Super PC-Kwik v3.20+ - ???
  856.     AH = 85h
  857.     SI = 4358h
  858.     AL = ???
  859.     DL = ???
  860.     ???
  861. Return: ???
  862. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  863.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  864.       to PC-Kwik v3.20)
  865. SeeAlso: AH=83h
  866. Index:    PC-Cache|Qualitas Qcache
  867. --------c-1386--SI4358-----------------------
  868. INT 13 - Super PC-Kwik v4.00+ - ???
  869.     AH = 86h
  870.     SI = 4358h
  871.     ???
  872. Return: ???
  873. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  874.       thus supports this call
  875. Index:    Qualitas Qcache
  876. --------c-1387--SI4358-----------------------
  877. INT 13 - Super PC-Kwik v4.00+ - ???
  878.     AH = 87h
  879.     SI = 4358h
  880.     ???
  881. Return: AH = status??? (00h)
  882.     CX = ???
  883.     DX = ??? (0000h)
  884. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  885.       thus supports this call
  886. Index:    Qualitas Qcache
  887. --------c-1388--SI4358-----------------------
  888. INT 13 - Super PC-Kwik v4.00+ - ???
  889.     AH = 88h
  890.     SI = 4358h
  891.     ???
  892. Return: AH = status??? (00h)
  893.     CX = ???
  894.     DX = ??? (0000h)
  895. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  896.       thus supports this call
  897. Index:    Qualitas Qcache
  898. --------c-1389--SI4358-----------------------
  899. INT 13 - Super PC-Kwik v5.10+ - ???
  900.     AH = 89h
  901.     SI = 4358h
  902.     ???
  903. Return: ???
  904. --------c-138A--SI4358-----------------------
  905. INT 13 - Super PC-Kwik v5.10+ - ???
  906.     AH = 8Ah
  907.     SI = 4358h
  908.     ???
  909. Return: ???
  910. --------c-138EED-----------------------------
  911. INT 13 - HyperDisk v4.01+ - ???
  912.     AX = 8EEDh
  913.     ???
  914. Return: ???
  915. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  916. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  917. --------c-138EEE-----------------------------
  918. INT 13 - HyperDisk v4.01+ - ???
  919.     AX = 8EEEh
  920. Return: CF set
  921.     AX = CS of HyperDisk resident code
  922.     ???
  923. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  924. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  925. --------c-138EEF-----------------------------
  926. INT 13 - HyperDisk v4.01+ - ???
  927.     AX = 8EEFh
  928. Return: CF set
  929.     AX = CS of HyperDisk resident code
  930.     ???
  931. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  932. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  933. --------c-1392--SI4358-----------------------
  934. INT 13 - Super PC-Kwik v5.10+ - ???
  935.     AH = 92h
  936.     SI = 4358h
  937.     ???
  938. Return: AH = status??? (00h)
  939.     DL = ???
  940. SeeAlso: AH=93h
  941. --------c-1393--SI4358-----------------------
  942. INT 13 - Super PC-Kwik v5.10+ - ???
  943.     AH = 93h
  944.     SI = 4358h
  945.     ???
  946. Return: AH = status??? (00h)
  947.     AL = ???
  948. SeeAlso: AH=92h
  949. --------c-1394--SI4358-----------------------
  950. INT 13 - Super PC-Kwik v5.10+ - ???
  951.     AH = 94h
  952.     SI = 4358h
  953.     ???
  954. Return: ???
  955. --------c-1395--SI4358-----------------------
  956. INT 13 - Super PC-Kwik v5.10+ - ???
  957.     AH = 95h
  958.     SI = 4358h
  959.     ???
  960. Return: AH = status??? (00h)
  961.     DX = ???
  962. --------c-1396--SI4358-----------------------
  963. INT 13 - Super PC-Kwik v5.10+ - ???
  964.     AH = 96h
  965.     SI = 4358h
  966.     AL = ??? (01h)
  967.     BX = ??? (0790h)
  968.     DL = ???
  969. Return: AH = status??? (00h)
  970.     DX = ???
  971. --------c-1397--SI4358-----------------------
  972. INT 13 - Super PC-Kwik v5.10+ - ???
  973.     AH = 97h
  974.     SI = 4358h
  975.     ???
  976. Return: ???
  977. --------c-1398--SI4358-----------------------
  978. INT 13 - Super PC-Kwik v5.10+ - ???
  979.     AH = 98h
  980.     SI = 4358h
  981.     ???
  982. Return: ???
  983. --------c-1399--SI4358-----------------------
  984. INT 13 - Super PC-Kwik v5.10+ - ???
  985.     AH = 99h
  986.     SI = 4358h
  987.     ???
  988. Return: ???
  989. --------c-139A--SI4358-----------------------
  990. INT 13 - Super PC-Kwik v5.10+ - ???
  991.     AH = 9Ah
  992.     SI = 4358h
  993.     ???
  994. Return: ???
  995. --------c-139B--SI4358-----------------------
  996. INT 13 - Super PC-Kwik v5.10+ - ???
  997.     AH = 9Bh
  998.     SI = 4358h
  999.     ???
  1000. Return: ???
  1001. --------c-139C--SI4358-----------------------
  1002. INT 13 - Super PC-Kwik v5.10+ - ???
  1003.     AH = 9Ch
  1004.     SI = 4358h
  1005.     ???
  1006. Return: ???
  1007. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  1008.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  1009.       if a previous call is still in progress
  1010. --------c-139D--SI4358-----------------------
  1011. INT 13 - Super PC-Kwik v5.10+ - ???
  1012.     AH = 9Dh
  1013.     SI = 4358h
  1014.     ???
  1015. Return: ???
  1016. --------c-13A0--SI4358-----------------------
  1017. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  1018.     AH = A0h
  1019.     SI = 4358h
  1020. Return: AX = segment of resident code
  1021. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1022.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  1023.       corresponds to PC-Kwik v3.27)
  1024. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  1025. Index:    PC-Cache|Qualitas Qcache
  1026. --------c-13A1--SI4358-----------------------
  1027. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  1028.     AH = A1h
  1029.     SI = 4358h
  1030. Return: CF clear
  1031.     AH = 00h (v5.10)
  1032. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1033.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  1034.       corresponds to PC-Kwik v3.20)
  1035. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  1036. Index:    PC-Cache|Qualitas Qcache
  1037. --------c-13A2--SI4358-----------------------
  1038. INT 13 - Super PC-Kwik v3.20+ - ???
  1039.     AH = A2h
  1040.     SI = 4358h
  1041.     ???
  1042. Return: ???
  1043. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1044.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  1045.       corresponds to PC-Kwik v3.20)
  1046. Index:    PC-Cache|Qualitas Qcache
  1047. --------c-13A3--SI4358-----------------------
  1048. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  1049.     AH = A3h
  1050.     SI = 4358h
  1051. Return: CF clear
  1052. SeeAlso: AH=A4h
  1053. --------c-13A4--SI4358-----------------------
  1054. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  1055.     AH = A4h
  1056.     SI = 4358h
  1057. Return: CF clear
  1058. SeeAlso: AH=A3h
  1059. --------c-13A5--SI4358-----------------------
  1060. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  1061.     AH = A5h
  1062.     SI = 4358h
  1063. Return: AX = ???
  1064.     SI = ???
  1065. Notes:    called and used internally by Super PC-Kwik when a program terminates
  1066.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  1067.     this call is not supported by Qualitas Qcache 4.00
  1068. Index:    PC-Cache
  1069. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  1070. --------c-13A6--SI4358-----------------------
  1071. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  1072.     AH = A6h
  1073.     SI = 4358h
  1074.     DS:DX -> ASCIZ program name
  1075.     ES:BX -> EXEC data block (see #0803 at INT 21/AH=4Bh)
  1076. Return: ???
  1077. Note:    called and used internally by Super PC-Kwik when a program is loaded
  1078.       with INT 21/AX=4B00h
  1079. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  1080. --------c-13A7--SI4358-----------------------
  1081. INT 13 CU - Super PC-Kwik 5.1 - ???
  1082.     AH = A7h
  1083.     SI = 4358h
  1084. Return: ???
  1085. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  1086. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  1087. --------v-13A759-----------------------------
  1088. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  1089.     AX = A759h
  1090. Return: AX = 59A7h if installed
  1091.         DX:BX -> ??? data
  1092. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  1093.       Fifth Generation Systems, as bundled with Novell DOS 7
  1094. SeeAlso: INT 21/AH=0Eh/DL=ADh
  1095. --------c-13A8--SI4358-----------------------
  1096. INT 13 CU - Super PC-Kwik 5.1 - ???
  1097.     AH = A8h
  1098.     SI = 4358h
  1099. Return: ???
  1100. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  1101. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  1102. --------c-13A9--SI4358-----------------------
  1103. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  1104.     AH = A9h
  1105.     SI = 4358h
  1106. Return: ???
  1107. Note:    called and used internally by Super PC-Kwik when an application issues
  1108.       INT 21/AH=4Dh
  1109. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  1110. --------c-13AA--SI4358-----------------------
  1111. INT 13 - Super PC-Kwik v4+ - ???
  1112.     AH = AAh
  1113.     SI = 4358h
  1114.     ???
  1115. Return: ???
  1116. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  1117.       this call
  1118. --------c-13AB--SI4358-----------------------
  1119. INT 13 - Super PC-Kwik v4+ - ???
  1120.     AH = ABh
  1121.     SI = 4358h
  1122.     ???
  1123. Return: ???
  1124. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  1125.       this call
  1126. --------c-13AC--SI4358-----------------------
  1127. INT 13 - Super PC-Kwik v4+ - ???
  1128.     AH = ACh
  1129.     SI = 4358h
  1130.     ???
  1131. Return: ???
  1132. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  1133.       this call
  1134. --------d-13AD-------------------------------
  1135. INT 13 - Priam HARD DISK CONTROLLER???
  1136.     AH = ADh
  1137.     ???
  1138. Return: ???
  1139. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  1140.       to check the ROM type on the controller for their hard disk kits
  1141. SeeAlso: AH=70h
  1142. --------c-13AD--SI4358-----------------------
  1143. INT 13 - Super PC-Kwik v4+ - ???
  1144.     AH = ADh
  1145.     SI = 4358h
  1146.     ???
  1147. Return: ???
  1148. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  1149.       this call
  1150. --------c-13AE--SI4358-----------------------
  1151. INT 13 - Super PC-Kwik v5.10+ - ???
  1152.     AH = AEh
  1153.     SI = 4358h
  1154.     ???
  1155. Return: ???
  1156. --------c-13B0--SI4358-----------------------
  1157. INT 13 - Super PC-Kwik v3.20+ - ???
  1158.     AH = B0h
  1159.     SI = 4358h
  1160.     ???
  1161. Return: ???
  1162. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  1163.       supports this call; Qualitas Qcache does not support it
  1164. Index:    PC-Cache
  1165. --------v-13EC00-----------------------------
  1166. INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
  1167.     AX = EC00h
  1168. Return: CF clear if installed
  1169. SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
  1170. --------d-13EE-------------------------------
  1171. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  1172.     AH = EEh
  1173.     DL = drive number (80h, 81h)
  1174. Return: CF clear
  1175.        AH = 00h
  1176. Program: SWBIOS is a TSR by Ontrack Computer Systems
  1177. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  1178.       number to get the actual cylinder number desired
  1179. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  1180.     Disk Manager also supports these calls
  1181.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  1182.       in order to allow caching of drives using SWBIOS to access more than
  1183.       1024 cylinders
  1184.     for software which supports that call, this function is equivalent to
  1185.       calling AH=EFh with CX=0400h
  1186. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  1187. Index:    PC-Cache;huge disks|Disk Manager
  1188. --------c-13EF-------------------------------
  1189. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  1190.     AH = EFh
  1191.     CX = cylinder offset for next INT 13 call
  1192.     DL = drive number (80h, 81h)
  1193. Return: CF clear
  1194.         AH = 00h
  1195. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  1196.       IDE drives supporting the read multiple and write multiple commands
  1197. Desc:    the following INT 13 call will add the number given by this call to
  1198.       the specified cylinder to get the actual cylinder number, then reset
  1199.       the offset to zero
  1200. Note:    this function is also supported by the NOW! disk cache, and presumably
  1201.       newer versions of SWBIOS and Disk Manager
  1202.     for software which supports this call, AH=EEh is equivalent to calling
  1203.       this function with CX=0400h
  1204.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  1205.       and AH=EFh
  1206. SeeAlso: AX=7B00h
  1207. --------V-13F2-------------------------------
  1208. INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
  1209.     AH = F2h
  1210. Return: CF ??? if installed
  1211. SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
  1212. --------d-13F9-------------------------------
  1213. INT 13 - SWBIOS - INSTALLATION CHECK
  1214.     AH = F9h
  1215.     DL = drive number (80h,81h)
  1216. Return: CF clear
  1217.         DX = configuration word
  1218.         bit 15 set if other SWBIOS extensions available
  1219.     CF set on error
  1220. Program: SWBIOS is a TSR by Ontrack Computer Systems
  1221. Note:    Disk Manager also supports these calls
  1222. SeeAlso: AH=EEh
  1223. Index:    Disk Manager
  1224. --------v-13FA--DX5945-----------------------
  1225. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  1226.     AH = FAh
  1227.     DX = 5945h
  1228.     AL = function (00h-07h)
  1229. Return: varies by function
  1230.     if not installed:
  1231.         CF set
  1232.         AH = 01h
  1233. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  1234.       so it is listed in its entirety under INT 16/AX=FA00h and following
  1235. SeeAlso: INT 16/AX=FA00h
  1236. --------v-13FD50------------------------
  1237. INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
  1238.     AX = FD50h
  1239. Return: AX = 50FDh if resident
  1240. SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
  1241. --------d-13FE-------------------------------
  1242. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  1243.     AH = FEh
  1244.     DL = drive number (80h, 81h)
  1245. Return: CF clear
  1246.     DX = number of cylinders beyond 1024 on drive
  1247. Program: SWBIOS is a TSR by Ontrack Computer Systems
  1248. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  1249.     BIOS without this extension would return count modulo 1024
  1250.     Disk Manager also supports these calls
  1251. SeeAlso: AH=EEh
  1252. --------U-13FFFFBHAA-------------------------
  1253. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  1254.     AX = FFFFh
  1255.     BH = AAh
  1256.     BL = subfunction
  1257.         00h installation check
  1258.         Return: AX = 1234h if installed
  1259.         01h turn on Turbo mode
  1260.         02h turn off Turbo mode
  1261.         03h set Turbo mode according to hardware switch
  1262.         04h set disk access to Turbo mode
  1263.         05h set disk access to Normal mode
  1264. SeeAlso: INT 15/AH=DFh
  1265. Index:    installation check;UNIQUE UX Turbo Utility
  1266. --------S-14---------------------------------
  1267. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  1268. Note:    the installation check for this driver is to determine whether the
  1269.       "~DOSXAM~" character device exists
  1270. Index:    installation check;Digiboard DigiCHANNEL
  1271. --------S-1400-------------------------------
  1272. INT 14 - SERIAL - INITIALIZE PORT
  1273.     AH = 00h
  1274.     AL = port parameters (see #0197)
  1275.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  1276. Return: AH = line status (see #0201)
  1277.         FFh if error on Digiboard XAPCM232.SYS
  1278.     AL = modem status (see #0202)
  1279. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  1280.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  1281.       bps will result in 4800 bps
  1282.     various network and serial-port drivers support the standard BIOS
  1283.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  1284.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  1285. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  1286. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  1287.  
  1288. Bitfields for serial port parameters:
  1289. Bit(s)    Description    (Table 0197)
  1290.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  1291.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  1292.  2    stop bits (set = 2, clear = 1)
  1293.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  1294. SeeAlso: #0199,#0204,#0205,#0206
  1295. --------S-1400-------------------------------
  1296. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  1297.     AH = 00h
  1298.     AL = initializing parameters
  1299.         7 - 6 - 5       4 - 3     2      1 - 0
  1300.         -BAUD RATE-       PARITY   STOP   WORD
  1301.                     BITS  LENGTH
  1302.         000 19200 bd   00 none  0: 1  00: 5
  1303.         001 38400 bd   01 odd   1: 2  01: 6
  1304.         010      300 bd   11 even      10: 7
  1305.         011      600 bd          11: 8
  1306.         100     1200 bd
  1307.         101     2400 bd
  1308.         110     4800 bd
  1309.         111     9600 bd (4800 on PCjr)
  1310.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  1311. Return: AH = RS-232 status code bits (see #0198)
  1312.     AL = modem status bits
  1313.         bit 3: always 1
  1314.         bit 7: DCD - carrier detect
  1315. SeeAlso: #0197,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  1316.  
  1317. Bitfields for FOSSIL RS-232 status:
  1318. Bit(s)    Description    (Table 0198)
  1319.  0    RDA - input data is available in buffer
  1320.  1    OVRN - data has been lost
  1321.  5    THRE - room is available in output buffer
  1322.  6    TSRE - output buffer empty
  1323. --------S-1400-------------------------------
  1324. INT 14 - MBBIOS - INITIALIZE PORT
  1325.     AH = 00h
  1326.     AL = port parameters (see #0199)
  1327.     DX = port number
  1328. Return: AH = line status (see #0201)
  1329.     AL = modem status (see #0202)
  1330. Note:    MBBIOS was written by H. Roy Engehausen
  1331. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  1332.  
  1333. Bitfields for MBBIOS port parameters:
  1334. Bit(s)    Description    (Table 0199)
  1335.  7-5    data rate
  1336.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  1337.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  1338.     if the high-speed option is set)
  1339.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  1340.  2    stop bits (set = 2, clear = 1)
  1341.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  1342. SeeAlso: #0197
  1343. --------N-1400--DXFFFF-----------------------
  1344. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  1345.     AH = 00h
  1346.     DX = FFFFh
  1347.     ES:DI -> vector string specifying new parameters
  1348. Return: AH = return code (00h,03h) (see #0200)
  1349. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1350.       serial ports over an IPX or NetBIOS-based network
  1351. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1352.       function, but redirects the port over the network; if DX is any other
  1353.       value, the call is chained
  1354. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  1355.  
  1356. (Table 0200)
  1357. Values for Connection Manager return code:
  1358.  00h    successful
  1359.  01h    no such connection
  1360.  02h    invalid connection ID
  1361.  03h    invalid subvector found
  1362.  04h    communication error (check BH)
  1363.  06h    insufficient resources, retry later
  1364.  FFh    no data available
  1365. --------S-1401-------------------------------
  1366. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  1367.     AH = 01h
  1368.     AL = character to write
  1369.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  1370. Return: AH bit 7 clear if successful
  1371.     AH bit 7 set on error
  1372.     AH bits 6-0 = port status (see #0201)
  1373. Notes:    various network and serial-port drivers support the standard BIOS
  1374.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  1375.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  1376. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  1377. --------N-1401--DXFFFF-----------------------
  1378. INT 14 - Connection Manager - SEND CHARACTER
  1379.     AH = 01h
  1380.     DX = FFFFh
  1381.     BH = character to send
  1382. Return: AH = return code (00h-02h,06h) (see #0200)
  1383. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1384.       function, but redirects the port over the network; if DX is any other
  1385.       value, the call is chained
  1386.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  1387.       is the preferred function because it provides better performance
  1388. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  1389. --------S-1402-------------------------------
  1390. INT 14 - SERIAL - READ CHARACTER FROM PORT
  1391.     AH = 02h
  1392.     AL = 00h (ArtiCom)
  1393.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  1394. Return: AH = line status (see #0201)
  1395.     AL = received character if AH bit 7 clear
  1396. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  1397.       data ready
  1398.     various network and serial-port drivers support the standard BIOS
  1399.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  1400.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  1401. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  1402. --------S-1402-------------------------------
  1403. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  1404.     AH = 02h
  1405.     DX = port number (0-3)
  1406. Return: AL = character received
  1407.     AH = 00h
  1408. SeeAlso: AH=01h,AH=02h"SERIAL"
  1409. --------N-1402--DXFFFF-----------------------
  1410. INT 14 - Connection Manager - RECEIVE CHARACTER
  1411.     AH = 02h
  1412.     DX = FFFFh
  1413.     BH = character to send
  1414. Return: AH = return code (00h-02h,04h,FFh) (see #0200)
  1415.     BH = line status (see #0201)
  1416.     AL = received character (if any)
  1417. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1418.       function, but redirects the port over the network; if DX is any other
  1419.       value, the call is chained
  1420.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  1421.       is the preferred function because it provides better performance
  1422. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  1423. --------S-1403-------------------------------
  1424. INT 14 - SERIAL - GET PORT STATUS
  1425.     AH = 03h
  1426.     AL = 00h (ArtiCom)
  1427.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  1428. Return: AH = line status (see #0201)
  1429.     AL = modem status (see #0202)
  1430.     AX = 9E00h if disconnected (ArtiCom)
  1431. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  1432. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  1433.  
  1434. Bitfields for serial line status:
  1435. Bit(s)    Description    (Table 0201)
  1436.  7    timeout
  1437.  6    transmit shift register empty
  1438.  5    transmit holding register empty
  1439.  4    break detected
  1440.  3    framing error
  1441.  2    parity error
  1442.  1    overrun error
  1443.  0    receive data ready
  1444. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  1445.       through a separate call (see AX=8000h"COMM-DRV")
  1446.  
  1447. Bitfields for modem status:
  1448. Bit(s)    Description    (Table 0202)
  1449.  7    carrier detect
  1450.  6    ring indicator
  1451.  5    data set ready
  1452.  4    clear to send
  1453.  3    delta carrier detect
  1454.  2    trailing edge of ring indicator
  1455.  1    delta data set ready
  1456.  0    delta clear to send
  1457. --------N-1403--DXFFFF-----------------------
  1458. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  1459.     AH = 03h
  1460.     DX = FFFFh
  1461.     AL = connection ID
  1462. Return: AH = return code (00h-02h) (see #0200)
  1463.     BH = line status (see #0203)
  1464.     BL = modem status (see #0202) (only bits 4,5,7; all others zero)
  1465. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1466.       function, but redirects the port over the network; if DX is any other
  1467.       value, the call is chained
  1468. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  1469.  
  1470. Bitfields for Connection Manager line status:
  1471. Bit(s)    Description    (Table 0203)
  1472.  7    CTS changed
  1473.  6    current CTS state
  1474.  5    timeout
  1475.  4    break
  1476.  3    framing error
  1477.  2    parity error
  1478.  1    overrun
  1479.  0    current carrier state (0 active, 1 no carrier)
  1480. --------S-1404-------------------------------
  1481. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  1482.     AH = 04h
  1483.     AL = break status
  1484.         00h if break
  1485.         01h if no break
  1486.     BH = parity (see #0204)
  1487.     BL = number of stop bits
  1488.         00h one stop bit
  1489.         01h two stop bits (1.5 if 5 bit word length)
  1490.     CH = word length (see #0205)
  1491.     CL = bps rate (see #0206)
  1492.     DX = port number
  1493. Return: AX = port status code (see #0201,#0202)
  1494. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  1495.  
  1496. (Table 0204)
  1497. Values for serial port parity:
  1498.  00h    no parity
  1499.  01h    odd parity
  1500.  02h    even parity
  1501.  03h    stick parity odd
  1502.  04h    stick parity even
  1503. SeeAlso: #0197,#0205,#0206,#0207
  1504.  
  1505. (Table 0205)
  1506. Values for serial port word length:
  1507.  00h    5 bits
  1508.  01h    6 bits
  1509.  02h    7 bits
  1510.  03h    8 bits
  1511. SeeAlso: #0197,#0204,#0206,#0242
  1512.  
  1513. (Table 0206)
  1514. Values for serial port bps rate:
  1515.  00h    110 (19200 if ComShare installed)
  1516.  01h    150 (38400 if ComShare installed)
  1517.  02h    300
  1518.  03h    600 (14400 if ComShare installed)
  1519.  04h    1200
  1520.  05h    2400
  1521.  06h    4800 (28800 if ComShare installed)
  1522.  07h    9600
  1523.  08h    19200
  1524. ---ComShare---
  1525.  09h    38400
  1526.  0Ah    57600
  1527.  0Bh    115200
  1528. SeeAlso: #0197,#0204,#0206,#0243,#0250,AH=36h,#0259,#0464,#1616
  1529. --------S-1404-------------------------------
  1530. INT 14 - FOSSIL - INITIALIZE DRIVER
  1531.     AH = 04h
  1532.     DX = port number
  1533.     optionally BX=4F50h
  1534.            ES:CX -> byte to be set upon ^C
  1535. Return: AX = 1954h (if successful)
  1536.     BL = maximum function number supported (excluding 7Eh and above)
  1537.     BH = revision of FOSSIL specification supported
  1538.     DTR is raised
  1539. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  1540.       following byte contains the maximum function number supported; this
  1541.       can serve as an installation check
  1542. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  1543. Index:    installation check;FOSSIL
  1544. --------S-1404-------------------------------
  1545. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  1546.     AH = 04h
  1547. Return: port initialized; if Hayes-compatible modem, a connection has been
  1548.       established
  1549. Note:    the port number is stored at offset BEh in the Task Control Block
  1550.       (see #0345 at INT 15/AH=13h"MultiDOS")
  1551. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  1552. --------S-1404-------------------------------
  1553. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  1554.     AH = 04h
  1555.     AL = initializing parameters (see #0207)
  1556.     BX = baud rate
  1557.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1558. Return: AH = status
  1559.         00h successful
  1560.         FFh error
  1561. SeeAlso: AH=05h"Digiboard"
  1562.  
  1563. Bitfields for Digiboard initializing parameters:
  1564. Bit(s)    Description    (Table 0207)
  1565.  7-5    unused
  1566.  4-3    parity (00 none, 01 odd, 11 even)
  1567.  2    stop bits (0 = one, 1 = two)
  1568.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  1569. SeeAlso: #0204,#0205
  1570. --------S-1404-------------------------------
  1571. INT 14 - MBBIOS - INSTALLATION CHECK
  1572.     AH = 04h
  1573.     DX = port number
  1574. Return: AX = AA55h if installed on specified port
  1575. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  1576. --------N-1404--DXFFFF-----------------------
  1577. INT 14 - Connection Manager - OPEN COMMUNICATION
  1578.     AH = 04h
  1579.     DX = FFFFh
  1580.     ES:DI -> Connection Request protocol vector (see #0208)
  1581. Return: AH = return code
  1582.         00h successful
  1583.         AL = connection ID
  1584.         BH = connection type
  1585.             00h direct connection or no dialing
  1586.             01h Connection Server dialed phone
  1587.         01h no response from Connection Server
  1588.         03h invalid request
  1589. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1590.       serial ports over an IPX or NetBIOS-based network
  1591. Desc:    initiate a connection to the Connection Server listed in the current
  1592.       Client parameter set
  1593. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1594.       function, but redirects the port over the network; if DX is any other
  1595.       value, the call is chained
  1596.     all subvectors of the Connection Request vector are optional; if
  1597.       missing, default values are provided by the default connection
  1598.       parameter set
  1599. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  1600. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  1601.  
  1602. Format of Connection Manager protocol command vector:
  1603. Offset    Size    Description    (Table 0208)
  1604.  00h    WORD    (big-endian) total length of command (including this word)
  1605.  02h    WORD    (big-endian) command code
  1606.         EF01h Connection Request
  1607.         EF06h Modify Connection Parameters
  1608.  04h  N BYTEs    list of subvectors (see #0210)
  1609.         allowable subvector types are 01h-04h,17h,18h for command code
  1610.           EF01h; 03h,04h for command code EF06h (see #0209)
  1611.  
  1612. (Table 0209)
  1613. Values for Connection Manager subvector type code:
  1614.  01h    Connection ID
  1615.  02h    Destination ID
  1616.  03h    Asynchronous line parameters
  1617.  04h    Data transfer parameters
  1618.  09h    Line speed
  1619.  0Ah    Serial coding
  1620.  0Bh    Packet size
  1621.  0Ch    Timers
  1622.  0Dh    Special characters
  1623.  0Eh    Target ID
  1624.  0Fh    Telephone number
  1625.  10h    ASCII destination ID
  1626.  11h    Parity
  1627.  12h    Bits per character
  1628.  13h    Number of stop bits
  1629.  14h    Packet timer
  1630.  15h    Intercharacter timer
  1631.  17h    Flags
  1632.  18h    Parameter ranges
  1633.  19h    Flow control
  1634.  
  1635. Format of Connection Manager subvector:
  1636. Offset    Size    Description    (Table 0210)
  1637.  00h    BYTE    length of subvector
  1638.  01h    BYTE    type code (see #0209)
  1639.  02h N-2 BYTEs    data, which may include subvectors
  1640. SeeAlso: #0211,#0212,#0213,#0214,#0215,#0216,#0217,#0218,#0219,#0220,#0221
  1641. SeeAlso: #0222,#0223,#0225,#0226,#0227,#0228,#0229,#0230
  1642.  
  1643. Format of Connection ID subvector:
  1644. Offset    Size    Description    (Table 0211)
  1645.  00h    BYTE    03h (length)
  1646.  01h    BYTE    01h (subvector "Connection ID")
  1647.  02h    BYTE    connection ID
  1648.  
  1649. Format of Destination ID subvector:
  1650. Offset    Size    Description    (Table 0212)
  1651.  00h    BYTE    length
  1652.  01h    BYTE    02h (subvector "Destination ID")
  1653.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  1654.  
  1655. Format of Asynchronous line parameters subvector:
  1656. Offset    Size    Description    (Table 0213)
  1657.  00h    BYTE    length
  1658.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  1659.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  1660.  
  1661. Format of Data transfer parameters subvector:
  1662. Offset    Size    Description    (Table 0214)
  1663.  00h    BYTE    length
  1664.  01h    BYTE    04h (subvector "Data transfer parameters")
  1665.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  1666.  
  1667. Format of Line speed subvector:
  1668. Offset    Size    Description    (Table 0215)
  1669.  00h    BYTE    04h (length)
  1670.  01h    BYTE    09h (subvector "Line speed")
  1671.  02h    WORD    bit map, highest set bit selects speed
  1672.         bit 0: 2400
  1673.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  1674.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  1675.  
  1676. Format of Serial coding subvector:
  1677. Offset    Size    Description    (Table 0216)
  1678.  00h    BYTE    length
  1679.  01h    BYTE    0Ah (subvector "Serial coding")
  1680.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  1681.  
  1682. Format of Packet size subvector:
  1683. Offset    Size    Description    (Table 0217)
  1684.  00h    BYTE    04h (length)
  1685.  01h    BYTE    0Bh (subvector "Packet size")
  1686.  02h    WORD    (big-endian) packet size, 1 to 1024
  1687.  
  1688. Format of Timers subvector:
  1689. Offset    Size    Description    (Table 0218)
  1690.  00h    BYTE    length
  1691.  01h    BYTE    0Ch (subvector "Timers")
  1692.  02h  8 BYTEs    subvector of type 14h or 15h
  1693.  
  1694. Format of Special characters subvector:
  1695. Offset    Size    Description    (Table 0219)
  1696.  00h    BYTE    length
  1697.  01h    BYTE    0Dh (subvector "Special characters")
  1698.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  1699.  
  1700. Format of Target ID:
  1701. Offset    Size    Description    (Table 0220)
  1702.  00h    BYTE    length
  1703.  01h    BYTE    0Eh (subvector "Target ID")
  1704.  02h  N BYTEs    target ID, 1-16 bytes
  1705.  
  1706. Format of Telephone number subvector:
  1707. Offset    Size    Description    (Table 0221)
  1708.  00h    BYTE    length
  1709.  01h    BYTE    0Fh (subvector "Telephone number")
  1710.  02h  N BYTEs    telephone number
  1711.  
  1712. Format of ASCII destination ID subvector:
  1713. Offset    Size    Description    (Table 0222)
  1714.  00h    BYTE    length
  1715.  01h    BYTE    10h (subvector "ASCII destination ID")
  1716.  02h  N BYTEs    destination ID
  1717.  
  1718. Format of Parity subvector:
  1719. Offset    Size    Description    (Table 0223)
  1720.  00h    BYTE    03h (length)
  1721.  01h    BYTE    11h (subvector "Parity")
  1722.  02h    BYTE    parity type (see #0224)
  1723.  
  1724. Bitfields for Connection Manager parity type:
  1725. Bit(s)    Description    (Table 0224)
  1726.  7    odd
  1727.  6    even
  1728.  5    mark
  1729.  4    space
  1730.  3    none
  1731.  
  1732. Format of Bits per character subvector:
  1733. Offset    Size    Description    (Table 0225)
  1734.  00h    BYTE    03h (length)
  1735.  01h    BYTE    12h (subvector "Bits per character")
  1736.  02h    BYTE    bits per character
  1737.         bit 7: seven
  1738.         bit 6: eight
  1739.  
  1740. Format of Number of stop bits subvector:
  1741. Offset    Size    Description    (Table 0226)
  1742.  00h    BYTE    03h (length)
  1743.  01h    BYTE    13h (subvector "Number of stop bits")
  1744.  02h    BYTE    stop bits
  1745.         bit 7: one
  1746.         bit 6: 1.5
  1747.         bit 5: two
  1748.  
  1749. Format of Packet timer and Intercharacter timer subvectors:
  1750. Offset    Size    Description    (Table 0227)
  1751.  00h    BYTE    04h (length)
  1752.  01h    BYTE    subvector type
  1753.         14h Packet timer
  1754.         15h Intercharacter timer
  1755.  02h    WORD    (big-endian) unit of value representing 20ms
  1756.  
  1757. Format of Flags subvector:
  1758. Offset    Size    Description    (Table 0228)
  1759.  00h    BYTE    03h (length)
  1760.  01h    BYTE    17h (subvector "Flags")
  1761.  02h    BYTE    flags
  1762.         bit 7: queueing requested
  1763.  
  1764. Format of Parameter ranges subvector:
  1765. Offset    Size    Description    (Table 0229)
  1766.  00h    BYTE    length
  1767.  01h    BYTE    18h (subvector "Parameter ranges")
  1768.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  1769.  
  1770. Format of Flow control subvector:
  1771. Offset    Size    Description    (Table 0230)
  1772.  00h    BYTE    length (02h-04h)
  1773.  01h    BYTE    19h (subvector "Flow control")
  1774.  02h    BYTE    XOFF character
  1775.  03h    BYTE    XON character
  1776. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  1777.       character will be accepted as XON after an XOFF
  1778. --------S-140400-----------------------------
  1779. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  1780.     AX = 0400h
  1781. Return: AX = 0FF0h
  1782. SeeAlso: AX=0401h,AX=0408h
  1783. --------S-140401-----------------------------
  1784. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  1785.     AX = 0401h
  1786.     CX = mode
  1787. SeeAlso: AX=0400h,AX=0402h
  1788. --------S-140402-----------------------------
  1789. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  1790.     AX = 0402h
  1791.     CL = parameters
  1792. SeeAlso: AX=0400h,AX=0401h
  1793. --------S-140403-----------------------------
  1794. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  1795.     AX = 0403h
  1796.     CX = timeout
  1797. SeeAlso: AX=0400h
  1798. --------S-140404-----------------------------
  1799. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  1800.     AX = 0404h
  1801. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  1802. --------S-140405-----------------------------
  1803. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  1804.     AX = 0405h
  1805. Return: AX = number of characters in buffer
  1806. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  1807. --------S-140406-----------------------------
  1808. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  1809.     AX = 0406h
  1810. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  1811. --------S-140407-----------------------------
  1812. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  1813.     AX = 0407h
  1814. Return: AX = number of characters in the buffer
  1815. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  1816. --------S-140408-----------------------------
  1817. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  1818.     AX = 0408h
  1819. SeeAlso: AX=0400h
  1820. --------S-1405-------------------------------
  1821. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  1822.     AH = 05h
  1823.     AL = function
  1824.         00h read modem control register
  1825.           Return: BL = modem control register (see #0231)
  1826.               AH = status
  1827.         01h write modem control register
  1828.           BL = modem control register (see #0231)
  1829.           Return: AX = status
  1830.     DX = port number
  1831. Note:    also supported by ArtiCom
  1832. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  1833.  
  1834. Bitfields for modem control register:
  1835. Bit(s)    Description    (Table 0231)
  1836.  0    data terminal ready
  1837.  1    request to send
  1838.  2    OUT1
  1839.  3    OUT2
  1840.  4    LOOP
  1841.  5-7    reserved
  1842. --------S-1405-------------------------------
  1843. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  1844.     AH = 05h
  1845.     DX = port number
  1846. Return: none
  1847.     DTR is not affected
  1848. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  1849. --------S-1405-------------------------------
  1850. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  1851.     AH = 05h
  1852.     AL = timeout in seconds (00h = never)
  1853. Return: AL = status
  1854.         00h successful
  1855.         AH = character read
  1856.         01h read error
  1857.         02h timed out
  1858.         other modem status (CTS, DSR) changed
  1859. Note:    the port number is stored at offset BEh in the Task Control Block
  1860. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  1861. SeeAlso: INT 15/AH=13h"MultiDOS"
  1862. --------S-1405-------------------------------
  1863. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  1864.     AH = 05h
  1865.     AL = protocol (see #0232)
  1866.     BH = new XOFF character (00h = current)
  1867.     BL = new XON character (00h = current)
  1868.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1869. Return: AH = status
  1870.         00h successful
  1871.         FFh error
  1872. SeeAlso: AH=04h"Digiboard"
  1873.  
  1874. Bitfields for Digiboard protocol:
  1875. Bit(s)    Description    (Table 0232)
  1876.  7-4    unused
  1877.  3    RTS/CTS
  1878.  2    DSR
  1879.  1,0    XON/XOFF
  1880. --------S-1405-------------------------------
  1881. INT 14 - MBBIOS - DROP DTR AND RTS
  1882.     AH = 05h
  1883.     DX = port number
  1884. Return: none
  1885. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  1886. --------S-1405-------------------------------
  1887. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  1888.     AH = 05h
  1889.     AL = new port protocol (see #0233)
  1890.     BH = new XOFF character
  1891.     BL = new XON character
  1892.     DX = port number
  1893. Return: AH = FFh if invalid protocol
  1894. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  1895.  
  1896. Bitfields for PC-MOS/386 serial port protocol:
  1897. Bit(s)    Description    (Table 0233)
  1898.  7    set to enable/disable CD monitoring, clear to set protocol
  1899. ---bit 7 set---
  1900.  4    CD monitoring enabled
  1901.  5    automatic restart enabled
  1902. ---bit 7 clear---
  1903.  0    receive XON/XOFF
  1904.  1    transmit XON/XOFF
  1905.  2    DTR/DSR
  1906.  3    RTS/CTS
  1907. --------N-1405--DXFFFF-----------------------
  1908. INT 14 - Connection Manager - CLOSE COMMUNICATION
  1909.     AH = 05h
  1910.     DX = FFFFh
  1911.     AL = connection ID
  1912. Return: AH = return code
  1913.         00h successful
  1914.         01h no such connection
  1915.         02h invalid connection ID
  1916.         AL = correct connection ID
  1917. Desc:    terminate existing connection to allow another one to be established
  1918. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1919.       function, but redirects the port over the network; if DX is any other
  1920.       value, the call is chained
  1921. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  1922. --------S-1406-------------------------------
  1923. INT 14 - FOSSIL - RAISE/LOWER DTR
  1924.     AH = 06h
  1925.     DX = port
  1926.     AL = DTR state to be set
  1927.         00h = lower
  1928.         01h = raise
  1929. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  1930. --------S-1406-------------------------------
  1931. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  1932.     AH = 06h
  1933.     AL = character
  1934. Return: AL = status
  1935.         00h successful
  1936. Notes:    the port number is stored at offset BEh in the Task Control Block
  1937.     if output queue is full, the calling task is blocked until the
  1938.       character can be stored
  1939. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  1940. SeeAlso: INT 15/AH=13h"MultiDOS"
  1941. --------S-1406-------------------------------
  1942. INT 14 - MBBIOS - RAISE DTR AND RTS
  1943.     AH = 06h
  1944.     DX = port number
  1945. Return: none
  1946. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  1947. --------S-1406-------------------------------
  1948. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  1949.     AH = 06h
  1950.     DX = port number
  1951. Return: AH bit 7 set
  1952.     AL = number of highest function supported by driver
  1953. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1954.       operating system by The Software Link, Inc.
  1955. SeeAlso: AH=18h"PC-MOS"
  1956. --------N-1406-------------------------------
  1957. INT 14 - TelAPI - WRITE BLOCK
  1958.     AH = 06h
  1959.     CX = number of characters to write
  1960.     DX = port number
  1961.     ES:DI -> buffer containing data
  1962. Return: AX = number of characters actually sent??? (negative on error)
  1963.     CX = ???
  1964. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI"
  1965. --------N-1406--DXFFFF-----------------------
  1966. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  1967.     AH = 06h
  1968.     DX = FFFFh
  1969.     AL = connection ID
  1970.     CX = number of characters to send
  1971.     ES:DI -> buffer containing data to be sent
  1972. Return: AH = return code (see #0200)
  1973. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1974.       serial ports over an IPX or NetBIOS-based network
  1975. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  1976. --------S-1407-------------------------------
  1977. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  1978.     AH = 07h
  1979. Return: AL = timer tick interrupt number
  1980.     AH = ticks per second on interrupt number in AL
  1981.     DX = approximate number of milliseconds per tick
  1982. SeeAlso: AH=16h
  1983. --------S-1407-------------------------------
  1984. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  1985.     AH = 07h
  1986. Return: CL = modem status (see #0202)
  1987.     CH = character at head of input queue (if any)
  1988.     DX = number of characters in input queue
  1989. Note:    the port number is stored at offset BEh in the Task Control Block
  1990. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  1991. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  1992. --------S-1407-------------------------------
  1993. INT 14 - MBBIOS - SEND BREAK
  1994.     AH = 07h
  1995.     DX = port number
  1996. Return: none
  1997. SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
  1998. --------S-1407-------------------------------
  1999. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  2000.     AH = 07h
  2001.     BX = duration of break in clock ticks
  2002.     DX = port number
  2003. Return: nothing
  2004. --------N-1407-------------------------------
  2005. INT 14 - TelAPI - READ BLOCK
  2006.     AH = 07h
  2007.     CX = number of characters to read
  2008.     DX = port number
  2009.     ES:DI -> buffer for data
  2010. Return: AX = number of characters actually read??? (negative on error)
  2011.     CX = ???
  2012. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI"
  2013. --------N-1407--DXFFFF-----------------------
  2014. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  2015.     AH = 07h
  2016.     DX = FFFFh
  2017.     AL = connection ID
  2018.     BL = flag
  2019.         00h wait for data
  2020.         nonzero do not wait if no data avaiable
  2021.     CX = size of receive buffer
  2022.     ES:DI -> buffer for received characters
  2023. Return: AH = return code (00h-02h,04h,FFh) (see #0200)
  2024.     BH = line status (see #0203)
  2025.     CX = number of characters received
  2026. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2027.       serial ports over an IPX or NetBIOS-based network
  2028. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  2029. --------S-1408-------------------------------
  2030. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  2031.     AH = 08h
  2032.     DX = port number
  2033. SeeAlso: AH=09h"FOSSIL"
  2034. --------S-1408-------------------------------
  2035. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  2036.     AH = 08h
  2037. Return: AL = line status (see #0201)
  2038.     AH destroyed
  2039. Notes:    the port number is stored at offset BEh in the Task Control Block
  2040.     on every line status change, the line status is ORed with the line
  2041.       status accumulator; this function returns the accumulator and clears
  2042.       it
  2043. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  2044. --------S-1408-------------------------------
  2045. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  2046.     AH = 08h
  2047.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2048. Return: AH = RS232 status bits (see #0201 at AH=03h)
  2049.     ZF set if no characters queued
  2050.     ZF clear if character available
  2051.         AL = next character
  2052. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  2053. --------S-1408-------------------------------
  2054. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  2055.     AH = 08h
  2056.     DX = port number
  2057. Return: AL = character (if AH bit 0 set)
  2058.     AH = status (see #0201)
  2059. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  2060. --------S-1408-------------------------------
  2061. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  2062.     AH = 08h
  2063.     DX = port number
  2064. Return: CF set if carrier loss detected
  2065.     ZF set if input buffer empty
  2066.     ZF clear if characters available
  2067.         AL = next character dequeued
  2068. --------N-1408--DXFFFF-----------------------
  2069. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  2070.     AH = 08h
  2071.     DX = FFFFh
  2072.     CX = size of buffer for parameters or 0000h to get length
  2073.     ES:DI -> buffer for parameter vector (see #0208)
  2074. Return: AH = return code
  2075.         00h successful
  2076.         CX = number of bytes required (if CX=0000h on entry)
  2077.         CX = number of bytes omitted for lack of space (if CX nonzero)
  2078.         nonzero invalid request
  2079. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2080.       serial ports over an IPX or NetBIOS-based network
  2081. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  2082. --------S-1409-------------------------------
  2083. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  2084.     AH = 09h
  2085.     DX = port number
  2086. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  2087. --------S-1409-------------------------------
  2088. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  2089.     AH = 09h
  2090. Return: modem status byte cleared
  2091. Note:    the port number is stored at offset BEh in the Task Control Block
  2092. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  2093. --------S-1409-------------------------------
  2094. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  2095.     AH = 09h
  2096.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2097. Return: AH = status
  2098.         00h successful
  2099.         FFh error
  2100. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  2101. --------S-1409-------------------------------
  2102. INT 14 - MBBIOS - GET/SET OPTIONS
  2103.     AH = 09h
  2104.     AL = option byte (see #0234)
  2105.     DX = port number???
  2106. Return: AL = old option byte
  2107. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  2108.  
  2109. Bitfields for MBBIOS option byte:
  2110. Bit(s)    Description    (Table 0234)
  2111.  0    transmit buffering enabled
  2112.  2    hardware handshaking enabled
  2113.  5    high-speed option enabled (see AH=00h"MBBIOS",#0199)
  2114.  other    reserved
  2115. --------S-1409-------------------------------
  2116. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  2117.     AH = 09h
  2118.     DX = port number
  2119. Return: nothing
  2120. SeeAlso: AH=13h"PC-MOS"
  2121. --------N-1409--DXFFFF-----------------------
  2122. INT 14 - Connection Manager - SEND BREAK
  2123.     AH = 09h
  2124.     DX = FFFFh
  2125.     AL = connection ID
  2126. Return: AH = return code (00h-02h) (see #0200 at AH=00h/DX=FFFFh)
  2127. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2128.       serial ports over an IPX or NetBIOS-based network
  2129. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  2130. --------S-140A-------------------------------
  2131. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  2132.     AH = 0Ah
  2133.     DX = port number
  2134. SeeAlso: AH=09h"FOSSIL",AH=85h
  2135. --------S-140A-------------------------------
  2136. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  2137.     AH = 0Ah
  2138.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2139. Return: AX = number of characters available in buffer
  2140. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  2141. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  2142. --------S-140A-------------------------------
  2143. INT 14 - MBBIOS - WRITE BUFFER
  2144.     AH = 0Ah
  2145.     CX = count
  2146.     ES:DI -> buffer (see #0235)
  2147. Return: AX = status (see #0201,#0202)
  2148.     CX = unsent character count
  2149.     DI updated
  2150. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  2151.       contains the segment of a buffer containing the packet to be sent,
  2152.       which by default will be freed once the packet has been sent.     Use
  2153.       AH=0Ch"MBBIOS" to allocate the buffer.
  2154. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  2155.  
  2156. Format of MBBIOS PACCOM buffer:
  2157. Offset    Size    Description    (Table 0235)
  2158.  00h 504 BYTEs    data area
  2159. 1F8h    WORD    length of data in data area
  2160. 1FAh    BYTE    flags/status
  2161.         bit 7: don't discard buffer after transmitting data
  2162.         bit 6: buffer has been transmitted
  2163. 1FBh    BYTE    reserved (0) for additional flags/status
  2164. 1FCh    WORD    user data
  2165. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  2166. --------N-140A--DXFFFF-----------------------
  2167. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  2168.     AH = 0Ah
  2169.     DX = FFFFh
  2170.     ES:DI -> vector string containing new parameters (see #0208)
  2171. Return: AH = return code (00h-03h,06h) (see #0200)
  2172. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2173.       serial ports over an IPX or NetBIOS-based network
  2174. Note:    any subvectors valid for the Change Parameters command replace the
  2175.       existing values in the current set
  2176. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  2177. --------S-140B-------------------------------
  2178. INT 14 - FOSSIL - TRANSMIT NO WAIT
  2179.     AH = 0Bh
  2180.     AL = character
  2181.     DX = port number
  2182. Return: AX = result
  2183.         0000h character not accepted
  2184.         0001h character accepted
  2185. SeeAlso: AH=01h
  2186. --------S-140B-------------------------------
  2187. INT 14 - MBBIOS - READ BUFFER
  2188.     AH = 0Bh
  2189.     CX = size of buffer
  2190.     ES:DI -> buffer
  2191. Return: AH = composite line status (see #0201) formed by ORing all statuses
  2192.           on receive interrupts; bit 0 set if additional characters
  2193.           available
  2194.     AL = composite modem status (see #0202) formed by ORing all statuses
  2195.     CX = number of characters actually read
  2196.     DI updated
  2197. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  2198.       instead returning ES set to the segment of the buffer containing a
  2199.       received packet, or 0000h if no packets available; the buffer may
  2200.       be freed with AH=0Ch"MBBIOS"
  2201. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  2202. --------N-140B--DXFFFF-----------------------
  2203. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  2204.     AH = 0Bh
  2205.     DX = FFFFh
  2206.     AL = service name
  2207.         00h use parameter file or default
  2208.         01h use specified name
  2209.         ES:DI -> 16-byte blank-padded name
  2210.     BH = connection notification
  2211.         00h program awaiting connection, don't notify user
  2212.         01h notify user on connecting
  2213.     BL = connection type
  2214.         00h connection will use Connection Manager API
  2215. Return: AH = return code (00h-02h) (see #0200 at AH=00h/DX=FFFFh)
  2216.     AL = connection ID if AH=00h
  2217. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2218.       serial ports over an IPX or NetBIOS-based network
  2219. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  2220. --------S-140C-------------------------------
  2221. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  2222.     AH = 0Ch
  2223.     DX = port number
  2224. Return: AX = FFFFh character not available
  2225.     AX = 00xxh character xx available
  2226. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  2227. --------S-140C-------------------------------
  2228. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  2229.     AH = 0Ch
  2230.     ES = segment of buffer to free, or 0000h to allocate new buffer
  2231. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  2232. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  2233.       AH=0Ah and AH=0Bh
  2234. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  2235. --------N-140C--DXFFFF-----------------------
  2236. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  2237.     AH = 0Ch
  2238.     DX = FFFFh
  2239.     AL = connection ID from AH=0Bh/DX=FFFFh
  2240. Return: AH = return code (00h-03h) (see also #0200 at AH=00h/DX=FFFFh)
  2241.         03h not prepared for inbound connection
  2242.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  2243. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2244.       serial ports over an IPX or NetBIOS-based network
  2245. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  2246. --------S-140D-------------------------------
  2247. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  2248.     AH = 0Dh
  2249. Return: AX = result
  2250.         FFFFh character not available
  2251.         xxyyh standard IBM-style scan code
  2252. SeeAlso: AH=0Eh
  2253. --------S-140D-------------------------------
  2254. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  2255.     AH = 0Dh
  2256.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2257. Return: ES:BX -> CH_KEY_RDY flag (see #0236)
  2258. SeeAlso: AH=0Ah"Digiboard"
  2259.  
  2260. (Table 0236)
  2261. Values for Digiboard CH_KEY_RDY flag:
  2262.  00h    receive buffer empty
  2263.  FFh    characters available
  2264. --------S-140D-------------------------------
  2265. INT 14 - MBBIOS PACCOM support - SET TXD
  2266.     AH = 0Dh
  2267.     AL = new setting (FFh = 1.0)
  2268. Desc:    specify the time from RTS to start or packet
  2269. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  2270. --------N-140D--DXFFFF-----------------------
  2271. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  2272.     AH = 0Dh
  2273.     DX = FFFFh
  2274. Return: AH = return code
  2275.         00h successful
  2276.         nonzero operation not terminated
  2277. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2278.       serial ports over an IPX or NetBIOS-based network
  2279. Desc:    end all Connection Client TSR activity to allow it to be removed from
  2280.       memory
  2281. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  2282. --------S-140D00-----------------------------
  2283. INT 14 - MBBIOS - GET AVAILABLE BYTES
  2284.     AX = 0D00h
  2285. Return: AX = bytes in transmit buffer
  2286.     CX = bytes in receive buffer
  2287. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  2288. --------S-140D01-----------------------------
  2289. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  2290.     AX = 0D01h
  2291. Note:    this function lowers DTR, RTS, etc.
  2292. SeeAlso: AX=0D02h
  2293. --------S-140D02-----------------------------
  2294. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  2295.     AX = 0D02h
  2296. Note:    this function raises DTR, RTS, etc.
  2297. SeeAlso: AX=0D01h
  2298. --------S-140D03-----------------------------
  2299. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  2300.     AX = 0D03h
  2301.     CL = new handshake byte
  2302. Return: CL = previous handshake byte
  2303. Note:    this function lowers DTR, RTS, etc.
  2304. --------S-140E-------------------------------
  2305. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  2306.     AH = 0Eh
  2307. Return: AX = xxyyh standard IBM-style scan code
  2308. SeeAlso: AH=0Dh"FOSSIL"
  2309. --------S-140E-------------------------------
  2310. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  2311.     AH = 0Eh
  2312.     CX = number of characters to write
  2313.     ES:BX -> string
  2314.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2315. Return: AX = number of characters actually written
  2316.     ZF clear if successful
  2317.     ZF set on error
  2318. SeeAlso: AH=0Fh"Digiboard"
  2319. --------S-140E-------------------------------
  2320. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  2321.     AH = 0Eh
  2322.     AL = new setting (FFh = 1.0)
  2323. Desc:    specify the time from end of DCD to RTS
  2324. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  2325. --------N-140E--DXFFFF-----------------------
  2326. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  2327.     AH = 0Eh
  2328.     DX = FFFFh
  2329.     AL = connection ID from AH=04h/DX=FFFFh
  2330.     BL = RTS state (00h off, 01h on)
  2331. Return: AH = return code (00h-03h) (see also #0200 at AH=00h/DX=FFFFh)
  2332.         03h invalid request (BL not 00h or 01h)
  2333. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2334.       serial ports over an IPX or NetBIOS-based network
  2335. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  2336. --------S-140F-------------------------------
  2337. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  2338.     AH = 0Fh
  2339.     AL = bit mask describing requested flow control (see #0237)
  2340.     DX = port number
  2341. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  2342.  
  2343. Bitfields for FOSSIL requested flow control:
  2344. Bit(s)    Description    (Table 0237)
  2345.  0    XON/XOFF on transmit (watch for XOFF while sending)
  2346.  1    CTS/RTS (CTS on transmit/RTS on receive)
  2347.  2    reserved
  2348.  3    XON/XOFF on receive (send XOFF when buffer near full)
  2349.  4-7    all 1
  2350. --------S-140F-------------------------------
  2351. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  2352.     AH = 0Fh
  2353.     CX = number of characters to read
  2354.     ES:BX -> buffer
  2355.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2356. Return: AX = number of characters read
  2357.     ZF clear if successful
  2358.     ZF set on error (line status or wrong number of characters)
  2359. SeeAlso: AH=0Eh"Digiboard"
  2360. --------S-140F-------------------------------
  2361. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  2362.     AH = 0Fh
  2363.     AL = new setting in clock ticks
  2364. Desc:    specify the time from end of DCD to RTS
  2365. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  2366. --------N-140F--DXFFFF-----------------------
  2367. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  2368.     AH = 0Fh
  2369.     DX = FFFFh
  2370.     AL = connection ID
  2371.     CX = size of buffer or 0000h to get length of returned vector
  2372.     ES:DI -> buffer for connection parameter vector (see #0208)
  2373. Return: AH = return code (00h-02h,06h) (see #0200 at AH=00h/DX=FFFFh)
  2374.     CX = number of bytes which could not be returned because the given
  2375.           buffer was too small
  2376. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2377.       serial ports over an IPX or NetBIOS-based network
  2378. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  2379. --------S-1410-------------------------------
  2380. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  2381.     AH = 10h
  2382.     AL = bit mask
  2383.         bit 0: enable/disable ^C/^K checking
  2384.         bit 1: enable/disable the transmitter
  2385.     DX = port number
  2386. SeeAlso: AH=0Fh"FOSSIL"
  2387. --------S-1410-------------------------------
  2388. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  2389.     AH = 10h
  2390.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2391. Return: AH = status
  2392.         00h successful
  2393.         FFh error
  2394. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  2395. --------S-1410-------------------------------
  2396. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  2397.     AH = 10h
  2398.     AL = new setting in clock ticks (should be at least 5 character times)
  2399. Desc:    specify the time from start of last character to dropping RTS
  2400. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  2401. --------N-1410--DXFFFF-----------------------
  2402. INT 14 - Connection Manager - QUERY SERVICE NAMES
  2403.     AH = 10h
  2404.     DX = FFFFh
  2405.     CL = subfunction
  2406.         00h search first
  2407.         01h search next
  2408.     ES:DI -> pattern buffer (see #0238)
  2409. Return: AH = return code (00h,01h,03h,06h) (see also #0200 at AH=00h/DX=FFFFh)
  2410.         01h no (more) matching names
  2411.         03h invalid request
  2412.     ES:DI buffer filled with reply buffer (see #0238) containing matched
  2413.           name if AH=00h
  2414. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2415.       serial ports over an IPX or NetBIOS-based network
  2416. Desc:    obtain the names of groups and lines available for connection requests,
  2417.       and the names of active Connection Servers
  2418. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  2419.  
  2420. Format of Connection Manager pattern/reply buffer:
  2421. Offset    Size    Description    (Table 0238)
  2422.  00h    WORD    length of pattern (30h or 32h)
  2423.  02h 16 BYTEs    server pattern or name
  2424.  12h 16 BYTEs    group pattern or name
  2425.  22h 16 BYTEs    line pattern or name
  2426.  23h    BYTE    (optional) ???
  2427.  24h    BYTE    (optional, returned) current line status
  2428.         00h available
  2429.         01h out of service
  2430.         02h currently allocated to a connection
  2431. Note:    pattern may include '?' wildcard to match any character
  2432. --------S-1411-------------------------------
  2433. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  2434.     AH = 11h
  2435.     DH = row
  2436.     DL = column
  2437. Note:    this is the same as INT 10/AH=02h
  2438. SeeAlso: AH=12h"FOSSIL"
  2439. --------S-1411-------------------------------
  2440. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  2441.     AH = 11h
  2442.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2443. Return: AH = status
  2444.         00h successful
  2445.         FFh error
  2446. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  2447. --------S-1411-------------------------------
  2448. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  2449.     AH = 11h
  2450.     DX = port number
  2451. Return: AL = status
  2452.         00h successful
  2453.         01h IRQ for port is shared
  2454.         02h IRQ was reserved
  2455. SeeAlso: AH=04h,AH=05h,AH=12h"PC-MOS"
  2456. --------S-1412-------------------------------
  2457. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  2458.     AH = 12h
  2459. Return: DH = row
  2460.     DL = column
  2461. Note:    this is the same as INT 10/AH=03h
  2462. SeeAlso: AH=11h"FOSSIL"
  2463. --------S-1412-------------------------------
  2464. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  2465.     AH = 12h
  2466.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2467. Return: AX = number of bytes free
  2468. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  2469. --------S-1412-------------------------------
  2470. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  2471.     AH = 12h
  2472.     DX = port number
  2473. Return: AH = status
  2474.         FFh port number invalid
  2475.     AL = line parameters (see #0201)
  2476.     AH = flow control configuration (see #0233 at AH=05h"PC-MOS")
  2477.     CX:BX = bps rate
  2478.     DL = XOFF character or 00h for none
  2479.     DH = XON character or 00h for none
  2480. --------S-1413-------------------------------
  2481. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  2482.     AH = 13h
  2483.     AL = character
  2484. Note:    should not be called if it is unsafe to call DOS
  2485. SeeAlso: AH=15h
  2486. --------S-1413-------------------------------
  2487. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  2488.     AH = 13h
  2489.     DX = port number
  2490. Return: AH = status
  2491.         FFh port number invalid
  2492.         else
  2493.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  2494. SeeAlso: AH=17h"PC-MOS"
  2495. --------S-1414-------------------------------
  2496. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  2497.     AH = 14h
  2498.     AL = 01h enable watchdog
  2499.          00h disable watchdog
  2500.     DX = port number
  2501. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  2502. --------S-1414-------------------------------
  2503. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  2504.     AH = 14h
  2505.     CX = number of characters in string
  2506.     DX = port number
  2507.     ES:BX -> string to be sent
  2508.     SI = timeout in timer ticks or 0000h for default
  2509. Return: AX = number of bytes actually sent
  2510.     ZF clear if successful
  2511.     ZF set on timeout
  2512. SeeAlso: AH=01h,AH=15h"PC-MOS"
  2513. --------S-1414-------------------------------
  2514. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  2515.     AH = 14h
  2516. Return: AX = number of boards installed
  2517. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  2518. --------S-1415-------------------------------
  2519. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  2520.     AH = 15h
  2521.     AL = character
  2522. SeeAlso: AH=13h"FOSSIL"
  2523. --------S-1415-------------------------------
  2524. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  2525.     AH = 15h
  2526.     CX = size of buffer
  2527.     DX = port number
  2528.     ES:BX -> buffer for received characters
  2529.     SI = timeout in clock ticks or 0000h for default
  2530. Return: AX = number of characters actually read
  2531.     ZF set on timeout (no data available)
  2532. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  2533. --------S-1415-------------------------------
  2534. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  2535.     AH = 15h
  2536.     AL = new state (00h disabled, 01h enabled)
  2537. Return: AH = status
  2538.         00h successful
  2539.         80h error
  2540.         FFh error
  2541. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  2542. --------S-1416-------------------------------
  2543. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  2544.     AH = 16h
  2545.     AL = function
  2546.         00h = delete
  2547.         01h = add
  2548.     ES:DX -> routine to call
  2549. Return: AX = status
  2550.         0000h successful
  2551.         0001h unsuccessful
  2552. SeeAlso: AH=07h"FOSSIL"
  2553. --------S-1416-------------------------------
  2554. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  2555.     AH = 16h
  2556.     ES:BX -> calling driver's INT 14 entry point
  2557. Return: nothing
  2558. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  2559.       operating system by The Software Link, Inc.
  2560. --------S-1416-------------------------------
  2561. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  2562.     AH = 16h
  2563.     AL = CCB command number (see #0239) (see also following entries)
  2564.     BL = byte 2
  2565.     BH = byte 3
  2566.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  2567.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2568. Return: AH = status
  2569.         00h successful
  2570.         80h error
  2571.         FFh error
  2572. SeeAlso: AX=1646h,AH=18h"Digiboard"
  2573.  
  2574. (Table 0239)
  2575. Values for Digiboard CCB command number:
  2576.  40h    Set Receive Mid Water Mark
  2577.  41h    Set Receive High Water Mark
  2578.  42h    Flush Receive Buffer
  2579.  43h    Flush Transmit Buffer
  2580.  44h    Transmit Pause
  2581.  45h    Transmit Resume
  2582.  46h    Set Interrupt to Host Mask
  2583.  47h    Set Baud, Data, Stop and Parity
  2584.  48h    Send Break
  2585.  49h    Set Modem Lines
  2586.  4Ah    Set Break Count
  2587.  4Bh    Set Handshake
  2588.  4Ch    Set Xon/Xoff Characters
  2589.  4Dh    Set Transmit Mid Water Mark
  2590.  4Eh    IRQ Polling Timer to Host
  2591.  4Fh    Buffer Set All
  2592.  50h    Port On
  2593.  51h    Port Off
  2594.  52h    Receive Pause
  2595.  53h    Special Character Interrupt
  2596.  54h    RS-422 Enable
  2597. --------S-141646-----------------------------
  2598. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  2599.     AX = 1646h
  2600.     BL = bits to set
  2601.     BH = bits to clear
  2602.     CL = byte 1
  2603.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2604. Return: AH = status
  2605.         00h successful
  2606.         80h error
  2607.         FFh error
  2608. SeeAlso: AH=16h"Digiboard",AX=1647h
  2609. --------S-141647-----------------------------
  2610. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  2611.     AX = 1647h
  2612.     BL = baud
  2613.     BH = datatype
  2614.     CL = byte 1
  2615.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2616. Return: AH = status
  2617.         00h successful
  2618.         80h error
  2619.         FFh error
  2620. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  2621. --------S-141649-----------------------------
  2622. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  2623.     AX = 1649h
  2624.     BL = bits to set
  2625.     BH = bits to clear
  2626.     CL = byte 1
  2627.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2628. Return: AH = status
  2629.         00h successful
  2630.         80h error
  2631.         FFh error
  2632. SeeAlso: AH=16h"Digiboard",AX=1647h
  2633. --------S-14164A-----------------------------
  2634. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  2635.     AX = 164Ah
  2636.     BL = break count
  2637.     CL = byte 1
  2638.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2639. Return: AH = status
  2640.         00h successful
  2641.         80h error
  2642.         FFh error
  2643. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  2644. --------S-14164B-----------------------------
  2645. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  2646.     AX = 164Bh
  2647.     BL = bits to set
  2648.     BH = bits to clear
  2649.     CL = byte 1
  2650.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2651. Return: AH = status
  2652.         00h successful
  2653.         80h error
  2654.         FFh error
  2655. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  2656. --------S-14164C-----------------------------
  2657. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  2658.     AX = 164Ch
  2659.     BL = XON character
  2660.     BH = XOFF character
  2661.     CL = byte 1
  2662.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2663. Return: AH = status
  2664.         00h successful
  2665.         80h error
  2666.         FFh error
  2667. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  2668. --------S-14164D-----------------------------
  2669. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  2670.     AX = 164Dh
  2671.     BX = new mid-water mark
  2672.     CL = byte 1
  2673.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2674. Return: AH = status
  2675.         00h successful
  2676.         80h error
  2677.         FFh error
  2678. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  2679. --------S-14164E-----------------------------
  2680. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  2681.     AX = 164Eh
  2682.     BL = ticks
  2683.     BH = ???
  2684.     CL = mode
  2685.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2686. Return: AH = status
  2687.         00h successful
  2688.         80h error
  2689.         FFh error
  2690. SeeAlso: AH=16h"Digiboard",AX=164Dh
  2691. --------S-14164F-----------------------------
  2692. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  2693.     AX = 164Fh
  2694.     BL = size
  2695.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2696. Return: AH = status
  2697.         00h successful
  2698.         80h error
  2699.         FFh error
  2700. SeeAlso: AH=16h"Digiboard",AX=164Dh
  2701. --------S-141653-----------------------------
  2702. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  2703.     AX = 1653h
  2704.     BL = enable/disable
  2705.     BH = special character
  2706.     CL = byte 1
  2707.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2708. Return: AH = status
  2709.         00h successful
  2710.         80h error
  2711.         FFh error
  2712. SeeAlso: AH=16h"Digiboard",AX=1646h
  2713. --------S-1417-------------------------------
  2714. INT 14 - FOSSIL - REBOOT SYSTEM
  2715.     AH = 17h
  2716.     AL = method
  2717.         00h = cold boot
  2718.         01h = warm boot
  2719. SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
  2720. --------S-1417-------------------------------
  2721. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  2722.     AH = 17h
  2723.     AL = new value for UART's modem control register
  2724.     DX = port number
  2725. Return: nothing
  2726. --------S-1418-------------------------------
  2727. INT 14 - FOSSIL - READ BLOCK
  2728.     AH = 18h
  2729.     CX = maximum number of characters to transfer
  2730.     DX = port number
  2731.     ES:DI -> user buffer
  2732. Return: AX = number of characters transferred
  2733. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  2734. --------S-1418-------------------------------
  2735. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  2736.     AH = 18h
  2737.     ES:BX -> 16-byte command string
  2738.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2739. Return: AH = status
  2740.         00h successful
  2741.         80h timeout
  2742.     AL = mailbox status
  2743.         00h no errors
  2744.         8Xh BIOS error
  2745.     ES:BX buffer filled in with mailbox string
  2746.     ZF clear if no errors
  2747.     ZF set if either status byte contains an error code
  2748. SeeAlso: AH=16h"Digiboard"
  2749. --------S-1418-------------------------------
  2750. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  2751.     AH = 18h
  2752.     DX = port number
  2753. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  2754.         driver
  2755. SeeAlso: AH=06h"PC-MOS"
  2756. --------S-1419-------------------------------
  2757. INT 14 - FOSSIL - WRITE BLOCK
  2758.     AH = 19h
  2759.     CX = maximum number of characters to transfer
  2760.     DX = port number
  2761.     ES:DI -> user buffer
  2762. Return: AX = number of characters transferred
  2763. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  2764. --------S-1419-------------------------------
  2765. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  2766.     AH = 19h
  2767.     BL = flag
  2768.         00h disable special character interrupt
  2769.         FFh enable interrupt
  2770.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2771. Return: AH = status
  2772.         00h successful
  2773.         FFh failed
  2774. SeeAlso: AH=1Ah"Digiboard"
  2775. --------S-1419-------------------------------
  2776. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  2777.     AH = 19h
  2778.     AL = what to flush
  2779.         bit 0: input buffer
  2780.         bit 1: output buffer
  2781.     DX = port number
  2782. Return: nothing
  2783. SeeAlso: AH=09h"PC-MOS"
  2784. --------S-141A-------------------------------
  2785. INT 14 - FOSSIL - BREAK BEGIN OR END
  2786.     AH = 1Ah
  2787.     AL = 00h stop sending 'break'
  2788.          01h start sending 'break'
  2789.     DX = port number
  2790. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  2791. --------S-141A-------------------------------
  2792. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  2793.     AH = 1Ah
  2794.     BX = subfunction
  2795.         00h return pointer to special character flag byte
  2796.         01h return pointer to special character counter word
  2797.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2798. Return: ES:BX -> special character flag or counter
  2799. Notes:    flag is FFh if one or more special characters are in the receive
  2800.       buffer; it is 00h and the counter is invalid if no special characters
  2801.       are in the receive buffer
  2802.     counter (if valid) contains the number of characters in the receive
  2803.       buffer up to and including the last-received special character
  2804. --------S-141B-------------------------------
  2805. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  2806.     AH = 1Bh
  2807.     DX = port number
  2808.     CX = size of user buffer
  2809.     ES:DI -> user buffer for driver info (see #0240)
  2810. Return: AX = number of characters transferred
  2811.     CX = 3058h ("0X") (X00 FOSSIL only)
  2812.     DX = 2030h (" 0") (X00 FOSSIL only)
  2813.  
  2814. Format of FOSSIL driver info:
  2815. Offset    Size    Description    (Table 0240)
  2816.  00h    WORD    size of structure in bytes
  2817.  02h    BYTE    FOSSIL spec driver conforms to
  2818.  03h    BYTE    revision level of this specific driver
  2819.  04h    DWORD    pointer to ASCIZ identification string
  2820.  08h    WORD    size of the input buffer
  2821.  0Ah    WORD    number of bytes left in buffer
  2822.  0Ch    WORD    size of the output buffer
  2823.  0Eh    WORD    number of bytes left in buffer
  2824.  10h    BYTE    width of screen
  2825.  11h    BYTE    length of screen
  2826.  12h    BYTE    actual baud rate, computer to modem
  2827. --------S-141C-------------------------------
  2828. INT 14 - X00 FOSSIL - ACTIVATE PORT
  2829.     AH = 1Ch
  2830.     DX = port number
  2831. Return: AX = 1954h if successful
  2832.     BL = maximum function number supported (not including 7Eh and above)
  2833.     BH = revision of FOSSIL specification supported
  2834. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  2835.       with the PS/2 BIOS in a future release
  2836. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  2837. --------S-141D-------------------------------
  2838. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  2839.     AH = 1Dh
  2840.     DX = port number
  2841. Return: none
  2842. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  2843.       with the PS/2 BIOS in a future release
  2844.     ignored if the port was never activated with AH=04h or AH=1Ch
  2845. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  2846. --------S-141E-------------------------------
  2847. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  2848.     AH = 1Eh
  2849.     AL = break status
  2850.         00h if break
  2851.         01h if no break
  2852.     BH = parity (see #0241)
  2853.     BL = number of stop bits
  2854.         00h one stop bit
  2855.         01h two stop bits (1.5 if 5 bit word length)
  2856.     CH = word length (see #0242)
  2857.     CL = bps rate (see #0243)
  2858.     DX = port number
  2859. Return: AX = port status code (see #0201,#0202)
  2860. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  2861.     if the port was locked at X00 load time, the appropriate parameters are
  2862.       ignored
  2863. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  2864.  
  2865. (Table 0241)
  2866. Values for X00 FOSSIL parity:
  2867.  00h    no parity
  2868.  01h    odd parity
  2869.  02h    even parity
  2870.  03h    stick parity odd
  2871.  04h    stick parity even
  2872. SeeAlso: #0204,#0242,#0243
  2873.  
  2874. (Table 0242)
  2875. Values for X00 FOSSIL word length:
  2876.  00h    5 bits
  2877.  01h    6 bits
  2878.  02h    7 bits
  2879.  03h    8 bits
  2880. SeeAlso: #0205,#0241,#0243
  2881.  
  2882. (Table 0243)
  2883. Values for X00 FOSSIL bps rate:
  2884.  00h    110
  2885.  01h    150
  2886.  02h    300
  2887.  03h    600
  2888.  04h    1200
  2889.  05h    2400
  2890.  06h    4800
  2891.  07h    9600
  2892.  08h    19200
  2893. SeeAlso: #0206,#0241,#0242
  2894. --------S-141E------------------------------------
  2895. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  2896.     AH = 1Eh
  2897.     CX = channel number (00h COM1, 01h COM2, ...)
  2898.     DS:BX -> buffer for communications parameters (see #0244)
  2899. Return: DS:BX buffer filled
  2900. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  2901.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  2902. SeeAlso: AH=20h"HUNTER"
  2903.  
  2904. Format of HUNTER 16 communications parameters:
  2905. Offset    Size    Description    (Table 0244)
  2906.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  2907.  01h    BYTE    port number (00h COM1, 01h COM2)
  2908.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  2909.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  2910.  03h    BYTE    data bits (01h seven, 02h eight)
  2911.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  2912.  05h    BYTE    stop bits (00h one, 01h two)
  2913.  06h    BYTE    handshake (see #0245)
  2914.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  2915.  08h    BYTE    Nulls after CR (0-20)
  2916.  09h    BYTE    LF (00h off, 01h on)
  2917.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  2918.                80h: Serig off
  2919.  0Bh    BYTE    echo (00h off, 01h on)
  2920.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  2921.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  2922.  0Eh  5 BYTEs    reserved
  2923.  
  2924. Bitfields for HUNTER 16 handshake:
  2925. Bit(s)    Description    (Table 0245)
  2926.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  2927.  2    DTR enabled
  2928.  4    CTS enabled
  2929.  5    DSR enabled
  2930.  6    DCD enabled
  2931. --------S-141F-------------------------------
  2932. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  2933.     AH = 1Fh
  2934.     AL = 00h read modem control register
  2935.           Return: BL = modem control register (see #0246)
  2936.               AH = status
  2937.     AL = 01h write modem control register
  2938.           BL = modem control register (see #0246)
  2939.           Return: AX = status
  2940.     DX = port number
  2941. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  2942.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  2943. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  2944.  
  2945. Bitfields for X00 FOSSIL modem control register:
  2946. Bit(s)    Description    (Table 0246)
  2947.  0    data terminal ready
  2948.  1    request to send
  2949.  2    OUT1
  2950.  3    OUT2 (interrupts) enabled
  2951.  4    LOOP
  2952.  5-7    reserved
  2953. --------S-1420-------------------------------
  2954. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  2955.     AH = 20h
  2956.     DX = port number
  2957. Return: AH = 00h if character was available
  2958.         AL = next character (removed from receive buffer)
  2959.     AX = FFFFh if no character available
  2960. SeeAlso: AH=0Ch,AH=21h"X00"
  2961. --------S-1420-------------------------------
  2962. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  2963.     AH = 20h
  2964.     AL = logical port (01h COM1, 02h COM2)
  2965.     DX = physical port number
  2966. Return: AX = status
  2967.         0000h successful
  2968.         FFFFh failed
  2969. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  2970. --------S-1420-------------------------------
  2971. INT 14 - MultiDOS Plus - INITIALIZE PORT
  2972.     AH = 20h
  2973.     AL = port parameters (see #0197 at AH=00h"SERIAL")
  2974.     DX = port number (0-3)
  2975. Return: AH = status
  2976.         00h successful
  2977.         41h no such port
  2978.         64h monitor mode already active
  2979. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  2980. --------S-1420-------------------------------
  2981. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  2982.     AH = 20h
  2983.     DX = port number
  2984. Return: AX = number of bytes in output buffer
  2985. SeeAlso: AH=0Ah"PC-MOS"
  2986. --------S-1420------------------------------------
  2987. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  2988.     AH = 20h
  2989.     CX = channel number (00h COM1, 01h COM2, ...)
  2990.     DS:BX -> buffer with communications parameter (see #0244)
  2991. Return: AX = status
  2992.         0000h successful
  2993.         0001h invalid parameter
  2994. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  2995. --------S-1421-------------------------------
  2996. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  2997.     AH = 21h
  2998.     AL = character
  2999.     DX = port number
  3000. Notes:    the given character is inserted at the end of the receive buffer as if
  3001.       it had just arrived from the serial port; all normal receive
  3002.       processing (XON/XOFF, ^C/^K) is performed on the character
  3003.     fully re-entrant
  3004. SeeAlso: AH=20h"X00"
  3005. --------S-1421-------------------------------
  3006. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  3007.     AH = 21h
  3008.     DX = physical port number
  3009. Return: AX = status
  3010.         0000h successful
  3011.         FFFFh failed
  3012. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  3013. --------S-1421-------------------------------
  3014. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  3015.     AH = 21h
  3016.     AL = character to send
  3017.     DX = port number
  3018. Return: AH = status (see #0247)
  3019. Note:    monitor mode must have been turned on with AH=24h before calling
  3020. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  3021.  
  3022. (Table 0247)
  3023. Values for MultiDOS Plus status:
  3024.  00h    successful
  3025.  39h    no DSR or CTS
  3026.  3Ch    no DSR
  3027.  3Bh    no CTS
  3028.  41h    no such port
  3029.  42h    monitor mode not active
  3030.  97h    timed out
  3031. --------S-1421-------------------------------
  3032. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  3033.     AH = 21h
  3034.     AL = char to send
  3035.     DX = port number
  3036.     SI = timeout in timer ticks (0000h = default)
  3037. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3038.       operating system by The Software Link, Inc.
  3039. SeeAlso: AH=01h,AH=0Eh"PC/MOS",AH=22h"PC-MOS"
  3040. --------S-1421------------------------------------
  3041. INT 14 - HUNTER 16 - EXTENDED CONTROL
  3042.     AH = 21h
  3043.     AL = command
  3044.         01h force transmission of buffer
  3045.         02h clear transmit buffer
  3046.         03h clear receive buffer
  3047.     DX = port (00h COM1, 01h COM2)
  3048. Return: AH = extended status
  3049. Desc:    executes the command on the selected port
  3050. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  3051. --------S-1422-------------------------------
  3052. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  3053.     AH = 22h
  3054.     AL = logical port (01h COM1, 02h COM2)
  3055. Return: AX = status (0000h successful)
  3056. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  3057. --------S-1422-------------------------------
  3058. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  3059.     AH = 22h
  3060.     DX = port number
  3061. Return: AH = status (see also AH=21h"MultiDOS")
  3062.         00h successful
  3063.         AL = character
  3064.         3Dh framing and parity error
  3065.         3Eh overrun error
  3066.         3Fh framing error
  3067.         40h parity error
  3068.         96h ring buffer overflow
  3069. Note:    if no character is available, this function waits until a character
  3070.       arrives or an implementation-dependent timeout elapses
  3071. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  3072. --------S-1422-------------------------------
  3073. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  3074.     AH = 22h
  3075.     DX = port number
  3076.     SI = timeout in timer ticks (0000h = default)
  3077. Return: AH = port status (see also #0201 at AH=03h)
  3078.          bit 7 = 1 indicates time-out
  3079.     AL = character received
  3080. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3081.       operating system by The Software Link, Inc.
  3082. SeeAlso: AH=02h,AH=0Fh"PC-MOS",AH=21h"PC-MOS"
  3083. --------S-1422------------------------------------
  3084. INT 14 - HUNTER 16 - EXTENDED STATUS
  3085.     AH = 22h
  3086.     DX = port (00h COM1, 01h COM2)
  3087. Return: AH = extended status
  3088.     BX = number of characters in input buffer
  3089.     CX = number of characters in output buffer
  3090. Desc:    returns the most recent Extended Status code for the port
  3091. SeeAlso: AH=21h"HUNTER"
  3092. --------S-1423-------------------------------
  3093. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  3094.     AH = 23h
  3095.     AL = logical port (01h COM1, 02h COM2)
  3096.     DH = user ID
  3097.     DL = process ID (DH,DL both FFh for current task)
  3098. Return: AL = MW386 port mode (see #0248)
  3099.     CX = MW386 port number
  3100.     DH = owner's user ID
  3101.     DL = owner's task ID
  3102. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  3103.  
  3104. Bitfields for MW386 port mode:
  3105. Bit(s)    Description    (Table 0248)
  3106.  0    port is shared (spooler only)
  3107.  1    port is spooled instead of direct (spooler only)
  3108.  2    port is assigned as logical COM device, not in spooler
  3109.  3    port is free
  3110. --------S-1423-------------------------------
  3111. INT 14 - MultiDOS Plus - GET PORT STATUS
  3112.     AH = 23h
  3113.     DX = port number
  3114. Return: AH = line status (see #0201 at AH=03h)
  3115.     AL = modem status (see #0202 at AH=03h)
  3116. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  3117. --------S-1423-------------------------------
  3118. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  3119.     AH = 23h
  3120.     DX = port number
  3121.     BX = TCB segment/selector address of owner task
  3122. Return: nothing
  3123. SeeAlso: AH=0Dh"PC-MOS"
  3124. --------S-1423------------------------------------
  3125. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  3126.     AH = 23h
  3127.     BH = handshake line to set (00h RTS, 01h DTR)
  3128.     BL = new level (00h low, 01h high)
  3129. Desc:    sets the handshake lines of COM1 to the desired level
  3130. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  3131. --------S-1424-------------------------------
  3132. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  3133.     AH = 24h
  3134.     CX = physical I/O port number
  3135.     DS:DX -> configuration table (see #0249)
  3136. Return: AH = 00h
  3137. Note:    invalid port numbers are merely ignored
  3138. SeeAlso: INT 17/AH=96h
  3139.  
  3140. Format of Alloy MW386 configuration table:
  3141. Offset    Size    Description    (Table 0249)
  3142.  00h    BYTE    baud rate (see #0250)
  3143.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  3144.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  3145.  03h    BYTE    stop bits (00h=1, 01h=2)
  3146.  04h    BYTE    receive flow control
  3147.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  3148.  05h    BYTE    transmit flow control (as for receive)
  3149.  
  3150. (Table 0250)
  3151. Values for Alloy MW386 baud rate:
  3152.  00h    38400
  3153.  01h    19200
  3154.  02h    9600
  3155.  03h    7200
  3156.  04h    4800
  3157.  05h    3600
  3158.  06h    2400
  3159.  07h    2000
  3160.  08h    1200
  3161.  09h    600
  3162.  0Ah    300
  3163.  0Bh    150
  3164.  0Ch    134.5
  3165. SeeAlso: #0206
  3166. --------S-1424-------------------------------
  3167. INT 14 - MultiDOS Plus - SET MONITOR MODE
  3168.     AH = 24h
  3169.     AL = port status storage
  3170.         00h single status for entire receive buffer
  3171.         01h separate status kept for each byte in receive buffer
  3172.     DX = port number
  3173. Return: AH = status
  3174.         00h successful
  3175.         3Ah invalid status storage specified
  3176.         41h no such port
  3177.         64h monitor mode already active
  3178. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  3179.       port
  3180. SeeAlso: AH=20h"MultiDOS",AH=25h
  3181. --------S-1424-------------------------------
  3182. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  3183.     AH = 24h
  3184. Return: ???
  3185. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3186.       operating system by The Software Link, Inc.
  3187. --------S-1424------------------------------------
  3188. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  3189.     AH = 24h
  3190.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  3191. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  3192. --------S-1425-------------------------------
  3193. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  3194.     AH = 25h
  3195.     AL = function
  3196.         00h only clear buffers
  3197.         01h clear buffers and deactivate
  3198.     DX = port number
  3199. Return: AH = status
  3200.         00h successful
  3201.         3Ah invalid function
  3202.         41h no such port
  3203.         42h monitor mode not active
  3204. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  3205. --------S-1425------------------------------------
  3206. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  3207.     AH = 25h
  3208.     AL = new state of RS232 drivers (00h off, 01h on)
  3209. Note:    this function can be used to save power by turning off the RS232
  3210.       drivers.  It can also be used to turn on the RS232 drivers before
  3211.       connecting to a remote system to avoid "garbage" while the drivers
  3212.       turn on.
  3213. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  3214. --------S-1426------------------------------------
  3215. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  3216.     AH = 26h
  3217.     AL = 00h enable RI power up
  3218.         else disable RI power up
  3219. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  3220. --------S-1427-------------------------------
  3221. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  3222.     AH = 27h
  3223.     DX = port number
  3224. Return: AH = status
  3225.         00h successful
  3226.         41h no such port
  3227.         42h monitor mode not active
  3228.     AL = number of characters in receive buffer
  3229. --------S-1427------------------------------------
  3230. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  3231.     AH = 27h
  3232.     AL = number of extended protocols installed (since last call)
  3233. Return: AL = total number installed, including new ones
  3234. Desc:    Returns the number of extended communication protocols installed
  3235. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  3236. --------S-1428------------------------------------
  3237. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  3238.     AH = 28h
  3239.     AL = protocol handle
  3240.     DS:BX -> 8 character buffer for protocol name
  3241. Return:    AH = status
  3242.         00h successful
  3243.         DS:BX buffer filled with the protocol name
  3244.         FFh failed
  3245. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  3246. --------S-1429------------------------------------
  3247. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  3248.     AH = 29h
  3249.     DS:BX -> buffer containing the protocol name
  3250. Return: AH = status
  3251.         00h successful
  3252.         AL = handle
  3253.         FFh failed
  3254. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  3255. --------S-142A------------------------------------
  3256. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  3257.     AH = 2Ah
  3258.     AL = protocol handle
  3259. Return: AH = status
  3260.         00h successful
  3261.         FFh failed
  3262.     AL = menu handle
  3263. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  3264. --------S-142B------------------------------------
  3265. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  3266.     AH = 2Bh
  3267.     AL = protocol handle
  3268.     DS:BX -> buffer for extended protocol parameters
  3269. Return: AH = status
  3270.         00h successful
  3271.         DS:BX buffer filled with extended parameters
  3272.         FFh failed
  3273. SeeAlso: AH=2Ah"HUNTER"
  3274. --------S-142C00----------------------------------
  3275. INT 14 - HUNTER 16 - GET DTR
  3276.     AX = 2C00h
  3277. Return: AH = 00h
  3278.     BL = current state
  3279.         00h     normal DTR operation
  3280.         else DTR is forced high
  3281. Desc:    Indicates whether the DTR signal on COM1 is forced high
  3282. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  3283.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  3284. SeeAlso: AH=2Ch"SET DTR"
  3285. --------S-142C------------------------------------
  3286. INT 14 - HUNTER 16 - SET DTR
  3287.     AH = 2Ch
  3288.     AL nonzero
  3289.     BL = new state
  3290.         00h     normal operation
  3291.         else force DTR high
  3292. Return: AH = 00h
  3293. Desc:    determine whether the DTR signal on COM1 should be forced high
  3294. SeeAlso: AX=2C00h
  3295. --------N-1436-------------------------------
  3296. INT 14 - ComShare - INSTALLATION CHECK
  3297.     AH = 36h
  3298. Return: AX = 4353h ('CS') if installed
  3299.         BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
  3300.         CX reserved for future use
  3301.         WORD DX:[0100h] = ComShare version number
  3302. Program: The ComShare System is a modem-sharing program for NetBIOS and
  3303.       NetWare-based networks by NashaKala Corporation
  3304. Note:    ComShare supports the standard BIOS INT 14h calls with a slight
  3305.       change in the interpretation of speed values (see #0206 at AH=04h)
  3306. SeeAlso: AH=00h,AH=04h,AX=F4FFh
  3307. --------S-1456-------------------------------
  3308. INT 14 U - BWCOM14 - INSTALLATION CHECK
  3309.     AH = 56h
  3310. Return: CX = 0001h if installed
  3311. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  3312.       connected to the serial port) distributed as part of the
  3313.       Beame&Whiteside BW-NFS package
  3314. SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
  3315. --------S-1457-------------------------------
  3316. INT 14 U - BWCOM14 - INITIALIZE
  3317.     AH = 57h
  3318.     DL = port number
  3319. Return: AL = initialization status (00h successful, 01h already initialized)
  3320.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  3321. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  3322.       port will be handled by BWCOM14 until AH=58h is called
  3323. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  3324. --------S-1458-------------------------------
  3325. INT 14 U - BWCOM14 - SHUTDOWN
  3326.     AH = 58h
  3327. Return: CX = status (0001h successful, 0002h not initialized)
  3328. Note:    after this call, BWCOM14 will no longer redirect the COM port
  3329. SeeAlso: AH=56h,AH=57h
  3330. --------N-146F--BXFFFE-----------------------
  3331. INT 14 U - Connection Manager - ???
  3332.     AH = 6Fh
  3333.     BX = FFFEh
  3334.     ???
  3335. Return: ???
  3336. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3337.       serial ports over an IPX or NetBIOS-based network
  3338. --------N-146F--BXFFFF-----------------------
  3339. INT 14 - Connection Manager - INSTALLATION CHECK
  3340.     AH = 6Fh
  3341.     BX = FFFFh
  3342. Return: DX:BX -> Connection Manager Communication Table if installed
  3343.     BX = FFFFh if not installed
  3344. SeeAlso: AH=0Dh/DX=FFFFh
  3345. --------S-146F00-----------------------------
  3346. INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
  3347.     AX = 6F00h
  3348.     BX <> 4850h (usually set to 0000h for simplicity)
  3349. Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
  3350.     AX destroyed
  3351. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3352. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
  3353. SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
  3354. --------S-146F01-----------------------------
  3355. INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
  3356.     AX = 6F01h
  3357.     BX = port attributes (see #0251)
  3358.     DX = port number (0-3)
  3359. Return: AH = line status (see #0201)
  3360.     AL = modem status (see #0202)
  3361. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3362. SeeAlso: AX=6F00h
  3363.  
  3364. Bitfields for HP Vectra Extended BIOS serial port attributes:
  3365. Bit(s)    Description    (Table 0251)
  3366.  8-5    data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
  3367.  4-3    parity
  3368.     00 none
  3369.     01 odd
  3370.     10 none
  3371.     11 even
  3372.  2    stop bits (0 = one, 1 = two)
  3373.  1-0    bits per character
  3374.     10 seven-bit characters
  3375.     11 eight-bit characters
  3376.     0x undefined
  3377. --------S-146F02-----------------------------
  3378. INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
  3379.     AX = 6F02h
  3380.     CX = number of characters in buffer
  3381.     DX = port number (0-3)
  3382.     ES:DI -> buffer containing characters
  3383. Return: AH = line status (see #0201)
  3384.     AL = modem status (see #0202)
  3385.     CX = number of bytes actually sent
  3386.     ES:DI -> next byte to be transferred (unchanged if all bytes sent)
  3387. Desc:    send characters from the specified buffer until all characters have
  3388.       been sent or an error/timeout is encountered
  3389. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3390. SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
  3391. --------S-146F03-----------------------------
  3392. INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
  3393.     AX = 6F03h
  3394.     CX = size of buffer
  3395.     DX = port number (0-3)
  3396.     ES:DI -> buffer for received characters
  3397. Return: AH = line status (see #0201)
  3398.     ---on error (AH bit 7 set)---
  3399.        AL = 00h
  3400.        ES:DI -> next byte to be transferred
  3401.     ---if successful---
  3402.        AL = last byte read
  3403.        ES:DI unchanged
  3404.     CX = number of bytes read
  3405. Desc:    read characters into the specified buffer until the buffer is filled
  3406.       or a timeout occurs
  3407. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3408.     polls the Data Set Ready modem status and Data Ready line status bits
  3409.       to determine when characters are available
  3410. SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
  3411. --------S-146F04-----------------------------
  3412. INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
  3413.     AX = 6F04h
  3414.     BL = lowest termination character
  3415.     BH = highest termination character
  3416.     CX = size of buffer
  3417.     DX = port number (0-3)
  3418.     ES:DI -> buffer for received characters
  3419. Return: AH = line status (see #0201)
  3420.     ---on error (AH bit 7 set)---
  3421.        AL = 00h
  3422.        ES:DI -> next byte to be transferred
  3423.     ---if successful---
  3424.        AL = last byte read
  3425.        ES:DI unchanged
  3426.     CX = number of bytes read
  3427. Desc:    read characters into the specified buffer until the buffer is filled,
  3428.       a character in the specified range is received, or a timeout occurs
  3429. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3430.     polls the Data Set Ready modem status and Data Ready line status bits
  3431.       to determine when characters are available
  3432. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
  3433. --------S-147E-------------------------------
  3434. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  3435.     AH = 7Eh
  3436.     AL = code assigned to external application (80h-BFh)
  3437.         80h reserved for communications FOSSIL
  3438.         81h video FOSSIL
  3439.         82h reserved for keyboard FOSSIL
  3440.         83h reserved for system FOSSIL
  3441.     ES:DX -> entry point
  3442. Return: AX = 1954h
  3443.     BL = code assigned to application (same as input AL)
  3444.     DH = 00h failed
  3445.          01h successful
  3446. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  3447. --------S-147F-------------------------------
  3448. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  3449.     AH = 7Fh
  3450.     AL = code assigned to external application
  3451.     ES:DX -> entry point
  3452. Return: AX = 1954h
  3453.     BL = code assigned to application (same as input AL)
  3454.     DH = 00h failed
  3455.          01h successful
  3456. SeeAlso: AH=7Eh
  3457. --------S-1480-------------------------------
  3458. INT 14 - COMMUNICATIONS FOSSIL
  3459.     AH = 80h
  3460. SeeAlso: AH=7Eh
  3461. --------S-1480-------------------------------
  3462. INT 14 - COURIERS.COM - INSTALLATION CHECK
  3463.     AH = 80h
  3464. Return: AH = E8h if loaded
  3465. Program: COURIERS is a TSR utility by PC Magazine
  3466. --------S-148000-----------------------------
  3467. INT 14 - ARTICOM - INSTALLATION CHECK
  3468.     AX = 8000h
  3469. Return: AL = FFh if installed
  3470.         BH = major version
  3471.         BL = minor version
  3472. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  3473.       works on top of NetBIOS and allows modem/serial-port sharing by
  3474.       programs using INT 14 for serial I/O.
  3475. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  3476.       drivers
  3477. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  3478. --------S-148000-----------------------------
  3479. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  3480.     AX = 8000h
  3481.     DX = port number
  3482. Return: AX = code for last error (see #0252)
  3483.     BX = number of characters in output buffer
  3484.     CX = nubmer of characters in input buffer
  3485.     DX = state flag (see #0253)
  3486. Program: COMM-DRV is a universal serial communications driver by Willies'
  3487.       Computer Software Company, which supports standard INT 14 and
  3488.       FOSSIL calls as well as its own interfaces
  3489. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  3490.  
  3491. (Table 0252)
  3492. Values for COMM-DRV error code:
  3493.  00h    no error
  3494.  01h    buffer not set or attempted to change buffer for active port
  3495.  02h    port not active
  3496.  03h    transmit buffer full
  3497.  04h    receive buffer full
  3498.  05h    syntax error
  3499.  06h    invalid buffer size
  3500.  07h    invalid port
  3501.  08h    handler changed
  3502.  09h    invalid baud rate
  3503.  0Ah    invalid parity setting
  3504.  0Bh    invalid data length
  3505.  0Ch    invalid number of stop bits
  3506.  0Dh    invalid protocol number
  3507.  0Eh    IRQ changed
  3508.  0Fh    port changged
  3509.  10h    invalid threshold setting
  3510.  11h    invalid IRQ number
  3511.  12h    interrupts not enabled
  3512.  13h    invalid break syntax
  3513.  14h    fatal error
  3514.  15h    CTS error
  3515.  16h    invalid RS232 I/O port address
  3516.  17h    environment variable not set
  3517.  18h    error on IOCTL call
  3518.  19h    error during atexit cleanup
  3519.  1Ah    error mapping for direct calls
  3520.  1Bh    error opening device
  3521.  1Ch    unable to allocate memory
  3522.  1Dh    error on external micro card
  3523.  1Eh    card changed error
  3524.  1Fh    card type error
  3525.  20h    not supported
  3526.  21h    parent port error
  3527.  22h    card command buffer full
  3528.  23h    no subdevice for this port
  3529.  24h    unknown error
  3530.  25h    external card busy
  3531.  26h    no more timers available
  3532.  27h    INT 14 vector changed
  3533.  28h    INT 08 vector changed
  3534.  29h    DPMI error
  3535.  2Ah    TSR buffer too small (or nonexistent)
  3536.  2Bh    out of asynchronous resources
  3537.  2Ch    out of timer resources
  3538.  2Dh    out of "other" timer resources
  3539.  2Eh    file I/O error
  3540.  2Fh    hardware memory > 64K
  3541.  
  3542. Bitfields for state flag :
  3543. Bit(s)    Description    (Table 0253)
  3544.  0    port is active
  3545.  1    output throttled (XOFF received, or DSR or CTS reset)
  3546.  2    input throttled (XOFF sent, or DTR or RTS reset)
  3547. --------S-148001-----------------------------
  3548. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  3549.     AX = 8001h
  3550. Return: AX = error code, if error (see #0255)
  3551. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  3552. Index:    uninstall;ARTICOM
  3553. --------S-148001-----------------------------
  3554. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  3555.     AX = 8001h
  3556.     DX = port number
  3557. Return: BX:DI -> Port Control Block (see #0262)
  3558. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  3559. --------S-148002-----------------------------
  3560. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  3561.     AX = 8002h
  3562.     ES:DI -> buffer for redirector status structure (see #0254)
  3563. Return: AX = error code, if error (see #0255)
  3564. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  3565.  
  3566. Format of ARTICOM redirector status:
  3567. Offset    Size    Description    (Table 0254)
  3568.  00h    WORD    redirector major and minor version numbers
  3569.  02h    WORD    redirectable ports found
  3570.  04h    WORD    redirectable ports + local ports found
  3571.  06h    WORD    redirector internal buffer size
  3572.  08h    WORD    maximum servers maintained
  3573.  0Ah    WORD    number of adapters found
  3574. --------S-148002-----------------------------
  3575. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  3576.     AX = 8002h
  3577.     DX = port number
  3578. Return: AH bit 7 set on error
  3579.     AH bit 7 clear if successful
  3580.         BX:DI -> Port Control Block (see #0262) (modifyable portion only)
  3581. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  3582. --------S-148003-----------------------------
  3583. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  3584.     AX = 8003h
  3585.     CX = error number to translate (see #0255)
  3586. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  3587. SeeAlso: AX=8000h
  3588.  
  3589. (Table 0255)
  3590. Values for ARTICOM error codes:
  3591.  00h    "No error"
  3592.  01h    "An invalid port number was specified"
  3593.  02h    "Port is already redirected"
  3594.  03h    "Too many ports redirected"
  3595.  04h    "Cannot locate the server"
  3596.  05h    "Server is busy"
  3597.  06h    "Access denied"
  3598.  07h    "Resource in use"
  3599.  08h    "Resource in use - request queued"
  3600.  09h    "No such resource"
  3601.  0Ah    "Invalid username/password pair"
  3602.  0Bh    "Noncompatible version number"
  3603.  0Ch    "Can't remove from memory"
  3604.  0Dh    "Bad NETBIOS adapter number"
  3605.  0Eh    "No more entries in list"
  3606.  0Fh    "Resource is not available at this time"
  3607.  10h    "Invalid value to INT 14 call"
  3608. --------S-148003-----------------------------
  3609. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  3610.     AX = 8003h
  3611.     DX = port number
  3612. Return: AX = number of characters in input buffer
  3613.     BX = input buffer size
  3614.     CX = number of characters in output buffer
  3615.     DX = output buffer size
  3616. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  3617. --------S-148004-----------------------------
  3618. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  3619.     AX = 8004h
  3620.     DX = port to redirect (COM1=0, COM2=1, ...)
  3621.     CH = attach type
  3622.     CL = adapter to use for attach, 0FFh to search all
  3623.     ES:DI -> attachment structure (see #0256)
  3624. Return: AX = error code, if error (see #0255)
  3625. Note:    The wildcard '*' is supported in the server and resource fields.  If
  3626.       wild cards are used then the first matching available server is
  3627.       attached.
  3628. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  3629.  
  3630. Format of ARTICOM attachment structure:
  3631. Offset    Size    Description    (Table 0256)
  3632.  00h 16 BYTEs    server to look for attach
  3633.  10h 16 BYTEs    attach to resource name
  3634.  20h 16 BYTEs    username for attach
  3635.  30h 16 BYTEs    password for username or resource
  3636.  40h    BYTE    attach type
  3637.         00h normal
  3638.         01h queue if resource is in use (not yet supported in v1.00)
  3639. --------S-148005-----------------------------
  3640. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  3641.     AX = 8005h
  3642.     DX = port to detach (COM1=0, COM2=1, ...)
  3643. Return: AX = error code, if error (see #0255)
  3644. Note:    only a previously attached resource can be detached
  3645. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  3646. --------S-148006-----------------------------
  3647. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  3648.     AX = 8006h
  3649.     BX = remote port (COM1=0, COM2=1, ...)
  3650.     CL = adapter number, FFh to try all adapters
  3651.     ES:DI -> resource information structure (see #0257)
  3652.     DS:SI -> 16 byte server name. See note.
  3653. Return: AX = error code, if error (see #0255)
  3654.     BX = next remote port, recall to get next resource info
  3655. Note:    Wild cards supported in both the resource field and server name
  3656.       string DS:SI. If wild cards used then first matching available
  3657.       resource information is searched. Set the resource field to FFh to
  3658.       return all resources.
  3659. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  3660.  
  3661. Format of ARTICOM resource information structure:
  3662. Offset    Size    Description    (Table 0257)
  3663.  00h    BYTE    00h = free, else used
  3664.  01h 16 BYTEs    resource name
  3665.  11h 16 BYTEs    username of resource user
  3666.  21h    WORD    amount of time used
  3667.  23h    WORD    amount of time remaining
  3668.  53h 48 BYTEs    description of resource
  3669.  93h 64 BYTEs    initialization string for modem
  3670.  B3h 32 BYTEs    dial string for modem
  3671.  D3h 32 BYTEs    hang-up string for modem
  3672. --------S-148007-----------------------------
  3673. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  3674.     AX = 8007h
  3675.     DX = port index (COM1=0, COM2=1, ...)
  3676.     ES:DI -> buffer for port information structure (see #0258)
  3677. Return: CF clear if redirection info returned and port is redirected
  3678.     CF set if not a redirected port
  3679.     AX = error code, if error (see #0255)
  3680. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  3681.  
  3682. Format of ARTICOM port information structure:
  3683. Offset    Size    Description    (Table 0258)
  3684.  00h 16 BYTEs    server name resource is on
  3685.  10h    BYTE    adapter number server is on
  3686.  11h 16 BYTEs    resource name
  3687.  21h    WORD    remote port index, use to get additional information
  3688.  23h    WORD    buffer size
  3689.  25h    WORD    baud rate (see #0259)
  3690.  26h    BYTE    modem status register
  3691.  27h    BYTE    modem control register
  3692.  28h    BYTE    line status register
  3693.  29h    BYTE    line control register
  3694.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  3695.  2Bh    WORD    send timeout in ticks
  3696.  2Dh    WORD    receive timeout in ticks
  3697.  2Fh    WORD    time used on remote port
  3698.  31h    WORD    time left before timeout
  3699.  33h    BYTE    if server changes allowed?
  3700.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  3701.  
  3702. (Table 0259)
  3703. Values for ARTICOM baud rate:
  3704.  00h    110
  3705.  01h    150
  3706.  02h    300
  3707.  03h    600
  3708.  04h    1200
  3709.  05h    2400
  3710.  06h    4800
  3711.  07h    9600
  3712.  08h    19200
  3713.  09h    38400
  3714.  0Ah    57600
  3715.  0Bh    115200
  3716.  0Ch    134.5
  3717.  0Dh    1800
  3718.  0Eh    2000
  3719.  0Fh    3600
  3720.  10h    7200
  3721. SeeAlso: #0206
  3722. --------S-148008-----------------------------
  3723. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  3724.     AX = 8008h
  3725.     BX = server index (0,1,...)
  3726.     ES:DI -> server name structure (see #0260)
  3727. Return: AX = error code, if error (see #0255)
  3728.     BX = next remote port, repeat call to get next available server
  3729. Note:    the wildcard '*' is supported in the server name field.     Set the
  3730.       server name to FFh to search for all servers.
  3731. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  3732.  
  3733. Format of ARTICOM server name structure:
  3734. Offset     Size      Description    (Table 0260)
  3735.   00h 16 BYTEs      (call) ASCIZ server name
  3736.   10h     BYTE      (ret) the adapter server is found
  3737. --------S-148009-----------------------------
  3738. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  3739.     AX = 8009h
  3740.     BX = send timeout in ticks
  3741.     CX = receive timeout in ticks
  3742.     DX = port index (COM1=0, COM2=1, ...)
  3743. Return: nothing
  3744. SeeAlso: AX=8000h,AX=800Ah
  3745. --------S-14800A-----------------------------
  3746. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  3747.     AX = 800Ah
  3748.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  3749.     DX = port index (COM1=0, COM2=1, ...)
  3750. Return: AX = error code, if error (see #0255)
  3751. Note:    for attached ports only!
  3752. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  3753. --------S-148025-----------------------------
  3754. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  3755.     AX = 8025h
  3756.     DS:DX -> address of trap function (see #0261) to call on read/write
  3757. Note:    setting the vector to a user function allows the redirector's activity
  3758.       to be monitored.
  3759. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  3760.  
  3761. (Table 0261)
  3762. Values ARTICOM trap function is called with:
  3763.     AH = operation
  3764.         80h reading character
  3765.         81h writing character
  3766.     AL = character
  3767. Return: AX must be preserved
  3768.     far JUMP to old trap function (see AX=8035h)
  3769. --------S-148035-----------------------------
  3770. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  3771.     AX = 8035h
  3772. Return: ES:BX -> address of current send/receive routine
  3773. Note:    this function returns the address of the routine which is called
  3774.       inside A-REDIR.EXE each time a character is received or sent on the
  3775.       active COM port.
  3776. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  3777. --------S-1481-------------------------------
  3778. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  3779.     AH = 81h
  3780.     AL = port number (1-4)
  3781. Return: AH = 00h port available
  3782.          01h port exists but already in use
  3783.          02h port nonexistent
  3784. Program: COURIERS is a TSR utility by PC Magazine
  3785. SeeAlso: AH=83h,AH=8Dh
  3786. --------S-1481-------------------------------
  3787. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  3788.     AH = 81h
  3789.     BX:DI -> port control block (see #0262)
  3790.     DX = port number
  3791. Return: AH = line status register (see #0201)
  3792.         error if bit 7 set
  3793.     AL = modem status register (see #0202)
  3794. Program: COMM-DRV is a universal serial communications driver by Willies'
  3795.       Computer Software Company, which supports standard INT 14 and
  3796.       FOSSIL calls as well as its own interfaces
  3797. Note:    AX=8001h should be called first to fill in the port control block
  3798. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  3799.  
  3800. Format of COMM-DRV port control block:
  3801. Offset    Type    Description    (Table 0262)
  3802.  00h    WORD    port IO address
  3803.  02h    WORD    port IRQ
  3804.  04h    WORD    baud rate
  3805.  06h    WORD    parity
  3806.  08h    WORD    data bits
  3807.  0Ah    WORD    stop bits
  3808.  0Ch    WORD    break status (0000h off)
  3809.  0Eh    WORD    flow control protocol
  3810.  10h    BYTE    input block
  3811.  11h    BYTE    output block
  3812.  12h    WORD    low threshold
  3813.  14h    WORD    high threshold
  3814.  16h    WORD    segment of buffer
  3815.  18h    WORD    offset of buffer
  3816.  1Ah    WORD    input buffer length
  3817.  1Ch    WORD    output buffer length
  3818.  1Eh    BYTE    auxiliary address
  3819.  1Fh    BYTE    spare
  3820.  20h  4 WORDs    spares
  3821. --------V-148100-----------------------------
  3822. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  3823.     AX = 8100h
  3824.     ES:DI -> buffer for VFOSSIL information (see #0263)
  3825. Return: AX = 1954h if installed
  3826. SeeAlso: AH=7Eh,AX=8101h
  3827.  
  3828. Format of VFOSSIL information:
  3829. Offset    Size    Description    (Table 0263)
  3830.  00h    WORD    size of information in bytes, including this field
  3831.  02h    WORD    VFOSSIL major version
  3832.  04h    WORD    VFOSSIL revision level
  3833.  06h    WORD    highest VFOSSIL application function supported
  3834. --------V-148101-----------------------------
  3835. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  3836.     AX = 8101h
  3837.     ES:DI -> buffer for application function table (see #0264)
  3838.     CX = length of buffer in bytes
  3839. Return: AX = 1954h if installed
  3840.         BH = highest VFOSSIL application function supported
  3841. Note:    the number of initialized pointers in the application function table
  3842.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  3843.       will be initialized
  3844. SeeAlso: AX=8102h
  3845.  
  3846. Format of VFOSSIL application function table:
  3847. Offset    Size    Description    (Table 0264)
  3848.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0269)
  3849.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0270)
  3850.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0271)
  3851.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0272)
  3852.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0273)
  3853.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0274)
  3854.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  3855.           (see #0275)
  3856.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0276)
  3857.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0277)
  3858.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0278)
  3859.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0279)
  3860.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0280)
  3861.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  3862.           (see #0281)
  3863.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  3864.           (see #0282)
  3865.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  3866.           (see #0283)
  3867.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  3868.           (see #0284)
  3869.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  3870.           (see #0285)
  3871.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  3872.           (see #0286)
  3873.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  3874.           (see #0287)
  3875.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  3876.           (see #0288)
  3877.  
  3878. Format of VFOSSIL video mode data structure:
  3879. Offset    Size    Description    (Table 0265)
  3880.  00h    WORD    length of structure including this field
  3881.  02h    BYTE    mode characteristics
  3882.         bit 0: clear if MDA, set otherwise
  3883.         bit 1: graphics mode
  3884.         bit 2: color disabled (black-and-white)
  3885.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  3886.  04h    WORD    number of text columns
  3887.  06h    WORD    number of text rows
  3888.  08h    WORD    reserved
  3889.  0Ah    WORD    reserved
  3890.  0Ch    DWORD    reserved
  3891.  
  3892. Format of VFOSSIL video configuration data:
  3893. Offset    Size    Description    (Table 0266)
  3894.  00h    WORD    structure length including this field
  3895.  02h    WORD    adapter type
  3896.         00h monochrome/printer
  3897.         01h CGA
  3898.         02h EGA
  3899.         03h VGA
  3900.         07h 8514/A
  3901.  04h    WORD    display type
  3902.         00h monochrome
  3903.         01h color
  3904.         02h enhanced color
  3905.         09h 8514
  3906.  06h    DWORD    adapter memory size
  3907.  
  3908. Format of VFOSSIL cursor type record:
  3909. Offset    Size    Description    (Table 0267)
  3910.  00h    WORD    cursor start line
  3911.  02h    WORD    cursor end line
  3912.  04h    WORD    cursor width (always 01h)
  3913.  06h    WORD    cursor attribute (FFFFh = hidden)
  3914.  
  3915. (Table 0268)
  3916. Values for VFOSSIL error code:
  3917.  0000h    successful
  3918.  0074h    internal VIO failure
  3919.  0163h    unsupported mode
  3920.  0166h    invalid row value
  3921.  0167h    invalid column value
  3922.  017Eh    buffer too small
  3923.  01A5h    invalid VIO parameter
  3924.  01B4h    invalid VIO handle
  3925.  
  3926. (Table 0269)
  3927. Call VioGetMode with:
  3928.     STACK:    WORD    VIO handle (must be 00h)
  3929.         DWORD    pointer to video mode data structure (see #0265)
  3930. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0268)
  3931. SeeAlso: #0270
  3932.  
  3933. (Table 0270)
  3934. Call VioSetMode with:
  3935.     STACK:    WORD    VIO handle (must be 00h)
  3936.         DWORD    pointer to video mode data structure (see #0265)
  3937. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0268)
  3938. SeeAlso: #0269
  3939.  
  3940. (Table 0271)
  3941. Call VioGetConfig with:
  3942.     STACK:    WORD    VIO handle (must be 00h)
  3943.         DWORD    pointer to video configuration data buffer (see #0266)
  3944. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0268)
  3945.  
  3946. (Table 0272)
  3947. Call VioWrtTTY with:
  3948.     STACK:    WORD    VIO handle (must be 00h)
  3949.         WORD    length of string
  3950.         DWORD    pointer to character string to be written to screen
  3951. Return: AX = error code (00h, 74h, 1B4h) (see #0268)
  3952. Notes:    write wraps at end of line and terminates if it reaches end of screen
  3953.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  3954.       not required to be reentrant; in non-ANSI mode, the function is
  3955.       reentrant and may be called from within an MS-DOS function call
  3956.  
  3957. (Table 0273)
  3958. Call VioGetANSI with:
  3959.     STACK:    WORD    VIO handle (must be 00h)
  3960.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  3961.             or 01h if ANSI is on
  3962. Return: AX = error code (00h, 74h, 1B4h) (see #0268)
  3963. SeeAlso: #0274
  3964.  
  3965. (Table 0274)
  3966. Call VioSetANSI with:
  3967.     STACK:    WORD    VIO handle (must be 00h)
  3968.         DWORD    pointer to WORD indicating new state of ANSI
  3969.             00h off, 01h on
  3970. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0268)
  3971. SeeAlso: #0273
  3972.  
  3973. (Table 0275)
  3974. Call VioGetCurPos with:
  3975.     STACK:    WORD    VIO handle (must be 00h)
  3976.         DWORD    pointer to WORD to hold current cursor column (0-based)
  3977.         DWORD    pointer to WORD to hold current cursor row (0-based)
  3978. Return: AX = error code (00h, 74h, 1B4h) (see #0268)
  3979. SeeAlso: #0276
  3980.  
  3981. (Table 0276)
  3982. Call VioSetCurPos with:
  3983.     STACK:    WORD    VIO handle (must be 00h)
  3984.         WORD    cursor column
  3985.         WORD    cursor row
  3986. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3987. Note:    if either coordinate is invalid, the cursor is not moved
  3988. SeeAlso: #0275
  3989.  
  3990. (Table 0277)
  3991. Call VioGetCurType with:
  3992.     STACK:    WORD    VIO handle (must be 00h)
  3993.         DWORD    pointer to cursor type record (see #0267)
  3994. Return: AX = error code (00h, 74h, 1B4h) (see #0268)
  3995. SeeAlso: #0278
  3996.  
  3997. (Table 0278)
  3998. Call VioSetCurType with:
  3999.     STACK:    WORD    VIO handle (must be 00h)
  4000.         DWORD    pointer to cursor type record (see #0267)
  4001. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0268)
  4002. SeeAlso: #0279
  4003.  
  4004. (Table 0279)
  4005. Call VioScrollUp with:
  4006.     STACK:    WORD    VIO handle (must be 00h)
  4007.         DWORD    pointer to char/attr cell for filling emptied rows
  4008.         WORD    number or rows to scroll (FFFFh = clear area)
  4009.         WORD    right column of scroll area
  4010.         WORD    bottom row of scroll area
  4011.         WORD    left column of scroll area
  4012.         WORD    top row of scroll area
  4013. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  4014. SeeAlso: #0280,INT 10/AH=06h
  4015.  
  4016. (Table 0280)
  4017. Call VioScrollDn with:
  4018.     STACK:    WORD    VIO handle (must be 00h)
  4019.         DWORD    pointer to char/attr cell for filling emptied rows
  4020.         WORD    number or rows to scroll (FFFFh = clear area)
  4021.         WORD    right column of scroll area
  4022.         WORD    bottom row of scroll area
  4023.         WORD    left column of scroll area
  4024.         WORD    top row of scroll area
  4025. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  4026. SeeAlso: #0279,INT 10/AH=07h
  4027.  
  4028. (Table 0281)
  4029. Call VioReadCellStr with:
  4030.     STACK:    WORD    VIO handle (must be 00h)
  4031.         WORD    column at which to start reading
  4032.         WORD    row at which to start reading
  4033.         DWORD    pointer to WORD containing length of buffer in bytes
  4034.             on return, WORD contains number of bytes actually read
  4035.         DWORD    pointer to buffer for cell string
  4036. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0268)
  4037.  
  4038. (Table 0282)
  4039. Call VioReadCharStr with:
  4040.     STACK:    WORD    VIO handle (must be 00h)
  4041.         WORD    column at which to start reading
  4042.         WORD    row at which to start reading
  4043.         DWORD    pointer to WORD containing length of buffer in bytes
  4044.             on return, WORD contains number of bytes actually read
  4045.         DWORD    pointer to buffer for character string
  4046. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0268)
  4047.  
  4048. (Table 0283)
  4049. Call VioWrtCellStr with:
  4050.     STACK:    WORD    VIO handle (must be 00h)
  4051.         WORD    column at which to start writing
  4052.         WORD    row at which to start writing
  4053.         WORD    length of cell string in bytes
  4054.         DWORD    pointer to cell string to write
  4055. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  4056. Note:    write wraps at end of line and terminates if it reaches end of screen
  4057.  
  4058. (Table 0284)
  4059. Call VioWrtCharStr with:
  4060.     STACK:    WORD    VIO handle (must be 00h)
  4061.         WORD    column at which to start writing
  4062.         WORD    row at which to start writing
  4063.         WORD    length of character string
  4064.         DWORD    pointer to character string to write
  4065. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  4066. Note:    write wraps at end of line and terminates if it reaches end of screen
  4067.  
  4068. (Table 0285)
  4069. Call VioWrtCharStrAttr with:
  4070.     STACK:    WORD    VIO handle (must be 00h)
  4071.         DWORD    pointer to attribute to be applied to each character
  4072.         WORD    column at which to start writing
  4073.         WORD    row at which to start writing
  4074.         WORD    length of character string
  4075.         DWORD    pointer to character string to write
  4076. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  4077. Note:    write wraps at end of line and terminates if it reaches end of screen
  4078.  
  4079. (Table 0286)
  4080. Call VioWrtNAttr with:
  4081.     STACK:    WORD    VIO handle (must be 00h)
  4082.         WORD    column at which to start writing
  4083.         WORD    row at which to start writing
  4084.         WORD    number of times to write attribute
  4085.         DWORD    pointer to display attribute to replicate
  4086. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  4087. Note:    write wraps at end of line and terminates if it reaches end of screen
  4088.  
  4089. (Table 0287)
  4090. Call VioWrtNCell with:
  4091.     STACK:    WORD    VIO handle (must be 00h)
  4092.         WORD    column at which to start writing
  4093.         WORD    row at which to start writing
  4094.         WORD    number of times to write cell
  4095.         DWORD    pointer to cell to replicate
  4096. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  4097. Note:    write wraps at end of line and terminates if it reaches end of screen
  4098.  
  4099. (Table 0288)
  4100. Call VioWrtNChar with:
  4101.     STACK:    WORD    VIO handle (must be 00h)
  4102.         WORD    column at which to start writing
  4103.         WORD    row at which to start writing
  4104.         WORD    number of times to write character
  4105.         DWORD    pointer to character to replicate
  4106. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  4107. Note:    write wraps at end of line and terminates if it reaches end of screen
  4108. --------V-148102-----------------------------
  4109. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  4110.     AX = 8102h
  4111. Return: AX = 1954h
  4112. Note:    terminates all operations; after this call, the video FOSSIL may either
  4113.       be removed from memory or reinitialized
  4114. SeeAlso: AX=8101h,AX=8103h
  4115. --------V-148103-----------------------------
  4116. INT 14 - VIDEO FOSSIL - UNINSTALL
  4117.     AX = 8103h
  4118. Return: AX = 1954h
  4119. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  4120. --------K-1482-------------------------------
  4121. INT 14 - KEYBOARD FOSSIL
  4122.     AH = 82h
  4123. SeeAlso: AH=7Eh
  4124. --------S-1482-------------------------------
  4125. INT 14 - COURIERS.COM - CONFIGURE PORT
  4126.     AH = 82h
  4127.     AL = port number (1-4)
  4128.     BX = speed (bps)
  4129.     CX = bit flags
  4130.         bit 0: enable input flow control
  4131.         bit 1: enable output flow control
  4132.         bit 2: use X.PC protocol (not yet implemented)
  4133. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  4134. --------S-1482-------------------------------
  4135. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  4136.     AH = 82h
  4137.     DX = port number
  4138. Return: AH bit 7 set on error
  4139.     AH bit 7 clear if successful
  4140. Desc:    reset the port to its state before the AH=81h initialization and unhook
  4141.       any interrupts used by the port
  4142. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  4143. ----------1483-------------------------------
  4144. INT 14 - SYSTEM FOSSIL
  4145.     AH = 83h
  4146. SeeAlso: AH=7Eh
  4147. --------S-1483-------------------------------
  4148. INT 14 - COURIERS.COM - START INPUT
  4149.     AH = 83h
  4150.     ES:BX -> circular input buffer
  4151.     CX = length of buffer
  4152.         (should be at least 128 bytes if input flow control enabled)
  4153. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  4154. --------S-1483-------------------------------
  4155. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  4156.     AH = 83h
  4157.     DX = port number
  4158.     AL = subfunction
  4159.         00h flush input buffer
  4160.         01h flush output buffer
  4161.         02h flush both buffers
  4162. Return: AH bit 7 set on error
  4163.     AH bit 7 clear if successful
  4164. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  4165. --------S-1484-------------------------------
  4166. INT 14 - COURIERS.COM - READ CHARACTER
  4167.     AH = 84h
  4168. Return: ZF set if no characters available
  4169.     ZF clear
  4170.        AL = character
  4171.        AH = modem status bits
  4172.         bit 7: set on input buffer overflow
  4173. SeeAlso: AH=02h,AH=86h,AH=89h
  4174. --------S-1484-------------------------------
  4175. INT 14 - COMM-DRV v14.0 - SEND PACKET
  4176.     AH = 84h
  4177.     CX = packet length in bytes
  4178.     DX = port number
  4179.     ES:DI -> packet to be sent
  4180. Return: AH = line status (see #0201)
  4181.         bit 7 set on error
  4182.     AL destroyed
  4183. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  4184. --------S-1485-------------------------------
  4185. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  4186.     AH = 85h
  4187. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  4188. --------S-1485-------------------------------
  4189. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  4190.     AH = 85h
  4191.     CX = length of packet in bytes
  4192.     DX = port number
  4193.     ES:DI -> buffer for packet
  4194. Return: AH = line status (see #0201)
  4195.         bit 7 set on error
  4196.     AL destroyed
  4197. Note:    this call requires that at least the requested number of bytes are
  4198.       already present in the input buffer, and will fail if there are
  4199.       fewer bytes available
  4200. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  4201. --------S-1486-------------------------------
  4202. INT 14 - COURIERS.COM - START OUTPUT
  4203.     AH = 86h
  4204.     ES:BX -> output buffer
  4205.     CX = length of output buffer
  4206. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  4207. --------S-1486-------------------------------
  4208. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  4209.     AH = 86h
  4210.     BL = maximum clock ticks to wait before signalling error on input func
  4211.     BH = maximum clock ticks to wait before signalling error on output
  4212.     DX = port number
  4213.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  4214.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  4215. Return: AH bit 7 set on error
  4216.     AH bit 7 clear if successful
  4217. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  4218.       returning an error when no data is available; functions 01h and 84h
  4219.       will wait for the output timeout before returning an error if there
  4220.       is no space to output the data
  4221. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  4222. --------S-1487-------------------------------
  4223. INT 14 - COURIERS.COM - OUTPUT STATUS
  4224.     AH = 87h
  4225. Return: AX = number of unsent characters
  4226. SeeAlso: AX=88h"COURIERS"
  4227. --------S-1487-------------------------------
  4228. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  4229.     AH = 87h
  4230.     DX = port number
  4231. Return: AH bit 7 set on error
  4232.     AH bit 7 clear if successful
  4233. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  4234. --------S-1488-------------------------------
  4235. INT 14 - COURIERS.COM - ABORT OUTPUT
  4236.     AH = 88h
  4237. SeeAlso: AH=09h,AH=85h"COURIERS"
  4238. --------S-1488-------------------------------
  4239. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  4240.     AH = 88h
  4241.     DX = port number
  4242. Return: AH bit 7 set on error
  4243.     AH bit 7 clear if successful
  4244. Program: COMM-DRV is a universal serial communications driver by Willies'
  4245.       Computer Software Company, which supports standard INT 14 and
  4246.       FOSSIL calls as well as its own interfaces
  4247. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  4248. --------S-1489-------------------------------
  4249. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  4250.     AH = 89h
  4251.     CL = character to send
  4252. SeeAlso: AH=01h,AH=84h"COURIERS"
  4253. --------S-1489-------------------------------
  4254. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  4255.     AH = 89h
  4256.     DX = port number
  4257. Return: AH bit 7 set on error
  4258.     AH bit 7 clear if successful
  4259. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  4260. --------S-148A-------------------------------
  4261. INT 14 - COURIERS.COM - SEND BREAK
  4262.     AH = 8Ah
  4263. SeeAlso: AH=89h"COURIERS",AH=FAh
  4264. --------S-148A-------------------------------
  4265. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  4266.     AH = 8Ah
  4267.     DX = port number
  4268. Return: AH bit 7 set on error
  4269.     AH bit 7 clear if successful
  4270. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  4271. --------S-148B-------------------------------
  4272. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  4273.     AH = 8Bh
  4274.     CX = bitmask of interrupt to process
  4275.         00h = deinstall
  4276.     BX:DI -> DWORD containing address of function to be called
  4277. Return: AH bit 7 clear if successful
  4278.     AH bit 7 set on error
  4279. --------S-148C-------------------------------
  4280. INT 14 - COURIERS.COM - SET SPEED
  4281.     AH = 8Ch
  4282.     BX = speed in bps
  4283. SeeAlso: AH=00h,AH=82h"COURIERS"
  4284. --------S-148C-------------------------------
  4285. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  4286.     AH = 8Ch
  4287.     AL = register offset
  4288.     DX = port number
  4289. Return: AH bit 7 set on error
  4290.     AH bit 7 clear if successful
  4291.         AL = contents of UART register
  4292. SeeAlso: AH=8Dh"COMM-DRV"
  4293. --------S-148D-------------------------------
  4294. INT 14 - COURIERS.COM - DECONFIGURE PORT
  4295.     AH = 8Dh
  4296. SeeAlso: AH=82h"COURIERS"
  4297. --------S-148D-------------------------------
  4298. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  4299.     AH = 8Dh
  4300.     AL = register offset
  4301.     BL = new value for UART register
  4302.     DX = port number
  4303. Return: AH bit 7 set on error
  4304.     AH bit 7 clear if successful
  4305. SeeAlso: AH=8Ch"COMM-DRV"
  4306. --------S-148E-------------------------------
  4307. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  4308.     AH = 8Eh
  4309.     CX = length of packet in bytes
  4310.     DX = port number
  4311.     ES:DI -> buffer for packet
  4312. Return: AH = line status (see #0201)
  4313.         bit 7 set on error (see AX=8000h"COMM-DRV")
  4314.     AL destroyed
  4315. Program: COMM-DRV is a universal serial communications driver by Willies'
  4316.       Computer Software Company, which supports standard INT 14 and
  4317.       FOSSIL calls as well as its own interfaces
  4318. Desc:    retrieve a packet from the input buffer without removing it from the
  4319.       buffer
  4320. Note:    this call requires that at least the requested number of bytes are
  4321.       already present in the input buffer, and will fail if there are
  4322.       fewer bytes available
  4323. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  4324. --------S-14A0-------------------------------
  4325. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  4326.     AH = A0h
  4327.     ES:BX -> ASCIZ internet host name
  4328.     CX = length of name
  4329. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0289)
  4330.     CL = session ID
  4331. Program: the Bridge Application Program Interface is a set of functions which
  4332.       makes many of the details of LAN communications transparent
  4333. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  4334. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  4335.  
  4336. (Table 0289)
  4337. Values for 3com BAPI return code:
  4338.  00h    successful
  4339.  01h    no characters written
  4340.  02h    no characters read
  4341.  03h    no such session
  4342.  04h    clearinghouse name not found
  4343.  05h    no response from host
  4344.  06h    no more sessions available
  4345.  07h    session aborted
  4346.  08h    invalid clearinghouse name
  4347.  09h    not supported
  4348.  0Ah    internal (general) network error
  4349.  0Bh    out of memory
  4350.  0Ch    invalid IP address
  4351. --------S-14A0--CXFFFF-----------------------
  4352. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  4353.     AH = A0h
  4354.     CX = FFFFh
  4355. Return: CF clear if successful
  4356.         AX = 5445h ('TE')
  4357.         CX <> FFFFh
  4358.         DX = port number
  4359.     CF set on error
  4360. Program: TES is a network serial port emulation program
  4361. SeeAlso: AH=A1h"TES"
  4362. --------S-14A1-------------------------------
  4363. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  4364.     AH = A1h
  4365.     DH = session ID (00h for external session managment)
  4366. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0289)
  4367.     AL destroyed (Novell TELAPI.EXE)
  4368. SeeAlso: AH=A0h"BAPI"
  4369. --------S-14A1-------------------------------
  4370. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  4371.     AH = A1h
  4372. Return: CX = number of active sessions
  4373.     ES:SI -> status array (see #0290)
  4374. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  4375.  
  4376. Format of Interconnections TES status array entry:
  4377. Offset    Size    Description    (Table 0290)
  4378.  00h    BYTE    status
  4379.  01h    WORD    offset of name
  4380. --------S-14A2-------------------------------
  4381. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  4382.     AH = A2h
  4383.     AL = character
  4384.     DH = session ID (00h for external session managment)
  4385. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0289)
  4386. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  4387. --------S-14A2-------------------------------
  4388. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  4389.     AH = A2h
  4390. Return: CX = number of servers
  4391.     ES:SI -> array of offsets from ES for server names
  4392. SeeAlso: AH=A1h"TES"
  4393. --------S-14A3-------------------------------
  4394. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  4395.     AH = A3h
  4396.     DH = session ID (00h for external session managment)
  4397. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0289)
  4398.     AL = character read or 00h if none available
  4399. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  4400. --------S-14A3-------------------------------
  4401. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  4402.     AH = A3h
  4403.     ES:SI -> ???
  4404. Return: CF clear if successful
  4405.         AX = 5445h ('TE')
  4406.         CX <> FFFFh
  4407.         DX = port number
  4408.     CF set on error
  4409. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  4410. --------S-14A4-------------------------------
  4411. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  4412.     AH = A4h
  4413.     CX = length of buffer in bytes
  4414.     DH = session ID (00h for external session managment)
  4415.     ES:BX -> buffer containing data
  4416. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0289)
  4417.     CX = number of bytes actually sent
  4418. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  4419. --------S-14A4-------------------------------
  4420. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  4421.     AH = A4h
  4422.     ???
  4423. Return: ???
  4424. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4425. --------S-14A5-------------------------------
  4426. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  4427.     AH = A5h
  4428.     CX = length of buffer
  4429.     DH = session ID (00h for external session managment)
  4430.     ES:BX -> buffer for data
  4431. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0289)
  4432.     CX = number of bytes actually read
  4433. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  4434. SeeAlso: AH=A7h"BAPI",AX=FF02h
  4435. --------S-14A5-------------------------------
  4436. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  4437.     AH = A5h
  4438.     AL = session number
  4439. Return: ???
  4440. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  4441. --------S-14A6-------------------------------
  4442. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  4443.     AH = A6h
  4444.     DH = session ID (00h for external session managment)
  4445. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0289)
  4446. Desc:    generate a short break signal; if data delivery was turned off by the
  4447.       break, wait for the host to turn it on again
  4448. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  4449. --------S-14A6-------------------------------
  4450. INT 14 - Interconnections Inc. TES - DROP A SESSION
  4451.     AH = A6h
  4452.     AL = session number
  4453. Return: AH = status
  4454.         00h successful
  4455.         else error
  4456. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4457. --------S-14A7-------------------------------
  4458. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  4459.     AH = A7h
  4460.     DH = session ID (00h for external session managment)
  4461. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0289)
  4462.     CX = number of bytes available for reading
  4463. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  4464. SeeAlso: AH=A5h"BAPI"
  4465. --------S-14A7-------------------------------
  4466. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  4467.     AH = A7h
  4468.     ???
  4469. Return: ???
  4470. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4471. --------S-14A8-------------------------------
  4472. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  4473.     AH = A8h
  4474.     AL = 00h no visible response
  4475.     ES:SI -> ASCIZ command
  4476. Return: ???
  4477. --------N-14A8-------------------------------
  4478. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  4479.     AH = A8h
  4480.     DH = session ID???
  4481.     CH = subfunction
  4482.         02h ???
  4483.         0Dh ???
  4484.         0Fh ???
  4485.         10h ???
  4486.         11h ???
  4487.         28h ???
  4488.         else
  4489.         Return: AH = 09h (not supported)
  4490. Return: AH = return code (see #0289)
  4491.         00h successful
  4492.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  4493.         CL = ??? (7Fh/FFh) (subfunction 28h)
  4494.         CX = ??? (subfunction 11h)
  4495. SeeAlso: AH=A9h"TelAPI"
  4496. --------N-14A9-------------------------------
  4497. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  4498.     AH = A9h
  4499.     DH = session ID???
  4500.     CH = subfunction
  4501.         02h ???
  4502.         0Dh ???
  4503.         0Fh ???
  4504.         10h ???
  4505.         11h ???
  4506.         28h ???
  4507.         else
  4508.         Return: AH = 09h (not supported)
  4509.     ???
  4510. Return: AH = return code (see #0289)
  4511.     ???
  4512. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  4513. --------V-14AA01-----------------------------
  4514. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  4515.     AX = AA01h
  4516. Return: AX = FFFFh if installed, unchanged
  4517.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  4518.     CX = resident segment (v3.1+)
  4519. Program: DimVGA is a public domain screen saver by Menno Pieters
  4520. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  4521. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  4522. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  4523. SeeAlso: INT 2F/AX=E300h
  4524. Index:    screen saver;DimVGA
  4525. --------V-14AA02-----------------------------
  4526. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  4527.     AX = AA02h
  4528.     BX = number of clock ticks
  4529. Return: AX = FFFFh
  4530. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  4531.       when more than 256 colors can be used DimVGA will blank the screen.
  4532. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  4533. Index:    screen saver;DimVGA
  4534. --------V-14AA03-----------------------------
  4535. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  4536.     AX = AA03h
  4537.     BX = percentage remaining visible (1-99)
  4538. Return: AX = FFFFh
  4539. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  4540. Index:    screen saver;DimVGA
  4541. --------V-14AA04-----------------------------
  4542. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  4543.     AX = AA04h
  4544. Return: AX = FFFFh
  4545.     BX = current time-out in clock ticks
  4546. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  4547. Index:    screen saver;DimVGA
  4548. --------V-14AA05-----------------------------
  4549. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  4550.     AX = AA05h
  4551. Return: AX = FFFFh
  4552.     BX = current dimming factor
  4553. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  4554. Index:    screen saver;DimVGA
  4555. --------V-14AA06-----------------------------
  4556. INT 14 - DimVGA v2.0+ - DISABLE
  4557.     AX = AA06h
  4558. Return: AX = FFFFh
  4559. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  4560. Index:    screen saver;DimVGA
  4561. --------V-14AA07-----------------------------
  4562. INT 14 - DimVGA v2.0+ - ENABLE
  4563.     AX = AA07h
  4564. Return: AX = FFFFh
  4565. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  4566. Index:    screen saver;DimVGA
  4567. --------V-14AA08-----------------------------
  4568. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  4569.     AX = AA08h
  4570. Return: AX = FFFFh
  4571. Note:    this function will dim the screen immediately, even if DimVGA is
  4572.       currently disabled
  4573. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  4574. Index:    screen saver;DimVGA
  4575. --------V-14AA09-----------------------------
  4576. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  4577.     AX = AA09h
  4578. Return: AX = FFFFh
  4579. Note:    this function will undim the screen immediately, even if DimVGA is
  4580.       currently disabled
  4581. SeeAlso: AX=AA01h,AX=AA08h
  4582. Index:    screen saver;DimVGA
  4583. --------V-14AA0A-----------------------------
  4584. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  4585.     AX = AA0Ah
  4586. Return: AX = FFFFh
  4587.     BX = current state (0000h disabled, 0001h enabled)
  4588. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  4589. Index:    screen saver;DimVGA
  4590. --------V-14AA0B-----------------------------
  4591. INT 14 - DimVGA v2.1+ - SET HOTKEY
  4592.     AX = AA0Bh
  4593.     BH = shift state (see #0291)
  4594.     BL = keyboard scancode
  4595. Return: AX = FFFFh
  4596. SeeAlso: AX=AA01h,AX=AA0Ch
  4597. Index:    screen saver;DimVGA
  4598.  
  4599. Bitfields for DimVGA hotkey shift state:
  4600. Bit(s)    Description    (Table 0291)
  4601.  7-4    unused
  4602.  3    Alt key pressed
  4603.  2    Ctrl key pressed
  4604.  1    Left shift key pressed
  4605.  0    Right shift key pressed
  4606. --------V-14AA0C-----------------------------
  4607. INT 14 - DimVGA v2.1+ - GET HOTKEY
  4608.     AX = AA0Ch
  4609. Return: AX = FFFFh
  4610.     BH = shift state (see #0291)
  4611.     BL = keyboard scancode
  4612. SeeAlso: AX=AA01h,AX=AA0Bh
  4613. Index:    screen saver;DimVGA
  4614. --------V-14AA0D-----------------------------
  4615. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  4616.     AX = AA0Dh
  4617.     BX = new mouse check status
  4618.         0000h mouse checking off
  4619.         0001h mouse checking on
  4620. Return: AX = FFFFh
  4621. Note:    before switching mouse checking on, a mouse driver should be
  4622.       found in memory. If no mouse driver is found, mouse checking
  4623.       should be switched off (resident DimVGA does not check by itself).
  4624. SeeAlso: AX=AA01h,AX=AA0Eh
  4625. Index:    screen saver;DimVGA
  4626. --------V-14AA0E-----------------------------
  4627. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  4628.     AX = AA0Eh
  4629. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  4630. SeeAlso: AX=AA01h,AX=AA0Dh
  4631. Index:    screen saver;DimVGA
  4632. --------V-14AA0F-----------------------------
  4633. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  4634.     AX = AA0Fh
  4635.     BX = locking status
  4636.         0000h disabled
  4637.         0001h enabled
  4638. Return: AX = FFFFh
  4639. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  4640. Index:    screen saver;DimVGA
  4641. --------V-14AA10-----------------------------
  4642. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  4643.     AX = AA10h
  4644. Return: BX = locking status (0000h disabled, 0001h enabled)
  4645. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  4646. Index:    screen saver;DimVGA
  4647. --------S-14AF00BXAAAA-----------------------
  4648. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  4649.     AX = AF00h
  4650.     BX = AAAAh
  4651. Return: AX = AF01h if installed
  4652.         BH = protocol type (if BX=AAAAh on entry)
  4653.         01h NetManage TCP/IP
  4654.         BL = version for protocol type (if BX=AAAAh on entry)
  4655. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  4656.       behavior is used to determine whether the newer functions (AH=B0h,
  4657.       AH=B1h,etc) are available
  4658. SeeAlso: AH=A0h"BAPI"
  4659. --------S-14B0-------------------------------
  4660. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  4661.     AH = B0h
  4662.     AL = new state (00h disabled, 01h enabled)
  4663. Return: AH = return code (00h,07h,0Ah) (see #0289)
  4664. Note:    disabling the ECM character allows applications to send data which
  4665.       includes the ECM character
  4666. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  4667. --------S-14B1-------------------------------
  4668. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  4669.     AH = B1h
  4670. Return: AH = return code (00h,07h,0Ah) (see #0289)
  4671. Desc:    provide a means for the application or terminal emulator to perform
  4672.       the same action normally caused by the ECM character
  4673. SeeAlso: AH=B0h,AH=B2h
  4674. --------S-14B2-------------------------------
  4675. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  4676.     AH = B2h
  4677. Return: AH = return code (00h,07h,0Ah) (see #0289)
  4678.     AL = watch flag (00h disabled, 01h enabled)
  4679. Desc:    determine whether the ECM character is enabled
  4680. SeeAlso: AH=B0h,AH=B1h
  4681. --------S-14B3-------------------------------
  4682. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  4683.     AH = B3h
  4684.     AL = direction (00h get, 01h set)
  4685.     DH = session ID (00h for external session managment)
  4686.     DL = configuration item (00h = end-of-line mapping)
  4687.     CX = new configuration item value (if AL=01h)
  4688.         ---if DL=00h---
  4689.         CH = application EOL type (app to Telnet client)
  4690.         01h application will send lone CR
  4691.         02h application will send CR-? pair
  4692.         CL = driver EOL type (Telnet client to Telnet server)
  4693.         01h driver should send CR-NUL pair
  4694.         02h driver should send CR-LF pair
  4695. Return: AH = return code (00h,03h,09h-0Bh) (see #0289)
  4696.     ---if AL=00h---
  4697.     CX = configuration item value (see above)
  4698. SeeAlso: AH=B2h
  4699. --------N-14E0-------------------------------
  4700. INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
  4701.     AH = E0h
  4702.     BX = port number to connect with (default 0017h used if <= 0)
  4703.     CX:DX = Internet address of remote host
  4704.     DS:DI -> 2-byte remote host (session) identifier
  4705.     ES:SI -> 1700-byte buffer for Telnet state record
  4706.         0000h:0000h to use TelAPI internally-allocated space
  4707. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #2621)
  4708.     ES:SI buffer filled with state record
  4709.     ES:SI -> internally-allocated state record in some versions
  4710. Note:    the remote host identifier may be used to refer to this connection
  4711. SeeAlso: AH=E1h,AH=ECh,AX=FF00h
  4712.  
  4713. (Table 2621)
  4714. Values for TelAPI status:
  4715.  0000h-7FFFh    successful (session number)
  4716.  FED3h    (-301)    no session allocated, or out of TelAPI data space
  4717.  FF37h    (-201)    all sessions in use
  4718.  FFBDh    (-67)    unknown hostname
  4719.  FFC0h    (-64)    host not functioning
  4720.  FFC3h    (-61)    connection attempt refused
  4721.  FFC4h    (-60)    connection attempt timed out
  4722.  FFC8h    (-56)    socket already connected
  4723.  FFCDh    (-51)    network is unreachable
  4724.  FFDDh    (-35)    operation would block
  4725. --------S-14E000-----------------------------
  4726. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  4727.     AX = E000h
  4728.     DX = port number (0-3)
  4729. Return: ES:BX -> status block (see #0292)
  4730. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  4731.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  4732.       the .DRV extension)
  4733. SeeAlso: AX=E006h
  4734.  
  4735. Format of MX5 Extended FOSSIL status block:
  4736. Offset    Size    Description    (Table 0292)
  4737.  00h    BYTE    flag: active (00h no, 01h yes)
  4738.  01h    BYTE    MNP level (2,4,5)
  4739.  02h    BYTE    series ID from remote MNP
  4740.  03h    DWORD    total packets transmitted
  4741.  07h    DWORD    duplicate packets transmitted
  4742.  0Bh    DWORD    maximum speed
  4743.  0Fh    DWORD    total packets received
  4744.  13h    DWORD    duplicate packets received
  4745.  17h    DWORD    maximum speed
  4746. --------S-14E001-----------------------------
  4747. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  4748.     AX = E001h
  4749.     BH = function
  4750.         00h get MNP level
  4751.         01h set MNP level
  4752.         BL = new level (00h none, 02h/04h/05h MNP level N)
  4753.     DX = port number (0-3)
  4754. Return: BL = MNP level
  4755. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  4756. --------S-14E002-----------------------------
  4757. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  4758.     AX = E002h
  4759.     BH = function
  4760.         00h get answer/originate mode
  4761.         01h set mode
  4762.         BL = new mode (00h originate [default], 01h answer)
  4763.     DX = port number (0-3)
  4764. Return: BL = answer/originate mode
  4765. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  4766. --------S-14E003-----------------------------
  4767. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  4768.     AX = E003h
  4769.     BH = function
  4770.         00h get wait ticks
  4771.         01h set wait ticks
  4772.         BL = MNP wait ticks (default 0Eh)
  4773.     DX = port number (0-3)
  4774. Return: BL = wait ticks
  4775. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  4776. --------S-14E004-----------------------------
  4777. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  4778.     AX = E004h
  4779.     BH = function
  4780.         00h get sound level
  4781.         01h set sound level
  4782.         BL = new sound level (00h off, 01h on [default])
  4783.     DX = port number
  4784. Return: BL = sound state
  4785. Desc:    specify whether MX5 should generate beeps after an MNP connection
  4786.       (three high beeps if successful, high then low on connection failure)
  4787. SeeAlso: AX=E002h,AX=E006h
  4788. --------S-14E005-----------------------------
  4789. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  4790.     AX = E005h
  4791. Return: BX = segment of MX5's memory block or 0000h on failure
  4792. Note:    caller must free the returned memory block to complete the uninstall
  4793. SeeAlso: AX=E006h
  4794. --------S-14E006BX0000-----------------------
  4795. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  4796.     AX = E006h
  4797.     BX = 0000h
  4798. Return: BX = 4D58h ('MX') if installed
  4799.         AH = major version
  4800.         AL = minor version
  4801. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  4802. --------S-14E007-----------------------------
  4803. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  4804.     AX = E007h
  4805.     CX = number of ticks to wait
  4806. Return: nothing
  4807. SeeAlso: AX=E006h
  4808. --------N-14E1-------------------------------
  4809. INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
  4810.     AH = E1h
  4811.     BX = connection ID
  4812. Return: AX = status (0000h,FFF7h,maybe others) (see #2621)
  4813. Note:    flushes and releases all buffers and data space used by the connection
  4814. SeeAlso: AH=E0h,AH=E6h,AX=FF00h
  4815. --------N-14E2-------------------------------
  4816. INT 14 - TelAPI - "telread" - BUFFERED READ
  4817.     AH = E2h
  4818.     BX = connection ID (see AH=E0h"TelAPI")
  4819.     CX = length of buffer in bytes
  4820.     ES:SI -> buffer for data
  4821. Return: AX > 0000h number of characters actually read
  4822.     AX = 0000h host has closed connection
  4823.     AX < 0000h error code (see #2621)
  4824. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  4825.       negotiates various Telnet options, and immediately executes several
  4826.       different Telnet action commands
  4827. SeeAlso: AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
  4828. --------N-14E3-------------------------------
  4829. INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
  4830.     AH = E3h
  4831.     BX = connection ID
  4832.     CX = length of buffer in bytes
  4833.     ES:SI -> buffer containing data
  4834. Return: AX > 0000h number of characters actually written
  4835.     AX < 0000h error code (see #2621)
  4836. Note:    translates local EOL into CRLF if the connection is in ASCII mode,
  4837.       sends the appropriate Telnet commands for the characters selected
  4838.       for IP, AYT, AO, EC, EL, and Break
  4839. SeeAlso: AH=07h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
  4840. --------N-14E4-------------------------------
  4841. INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
  4842.     AH = E4h
  4843.     BX = connection ID (see AH=E0h"TelAPI")
  4844.     CX = Telnet command/option identifier (see #2628)
  4845.     ES:SI -> buffer containing command/option argument (see #2627)
  4846. Return: AX = status (0000h, etc.) (see #2621)
  4847. Desc:    start filter control, initiate Telnet option negotiation, or get filter
  4848.       control status
  4849. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  4850.  
  4851. Format of TelAPI Telnet command/option argument:
  4852. Offset    Size    Description    (Table 2627)
  4853.  00h  5 WORD    numeric arguments
  4854.  0Ah    DWORD    -> ASCIZ string
  4855. SeeAlso: #2628
  4856.  
  4857. (Table 2628)
  4858. Values for TelAPI Telnet command/option identifier:
  4859.  01h    ASCII        args: none
  4860.  02h    BINARY        args: none
  4861.  03h    LOCALECHO    args: none        client echos data
  4862.  04h    REMOTEECHO    args: none        server echos data
  4863.  05h    SGA        args: none        Suppress Go-Ahead signal
  4864.  07h    CHARMODE    args: none        no line-buffering
  4865.  08h    LINEMODE    args: -> erase-line ch    perform line-buffering
  4866.  09h    RECVEOL        args: EOL type
  4867.  0Ah    SENDEOL        args: EOL type
  4868.  0Bh    EOR        args: none        enable end-of-record sequence
  4869.  0Dh    BREAK        args: -> break char
  4870.  0Eh    VERBOSE        args: verbosity        display Telnet negotiations?
  4871.  0Fh    AYT        args: -> AYT escape ch
  4872.  10h    AO        args: -> AO escape char
  4873.  11h    IP        args: -> IP escape char
  4874.  12h    EC        args: -> escape char
  4875.  13h    EL        args: -> escape char
  4876.  14h    STATUS        args: type; returns data in structure
  4877.  18h    TERMTYPE    args: -> terminal type
  4878.  19h    ATTACHPORT    args: port number ; returns session number
  4879.  1Bh    TRANSMIT_EOR    args: EOR enabled    append EOR to every telwrite?
  4880. SeeAlso: #2627
  4881. --------N-14E5-------------------------------
  4882. INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
  4883.     AH = E5h
  4884. Return: AX = status (0000h,other) (see also #2621)
  4885.         FFFFh unable to reset
  4886. Desc:    close all sessions and reset TelAPI to defaults
  4887. SeeAlso: AH=E1h,AH=E6h,AX=FF00h
  4888. --------N-14E6-------------------------------
  4889. INT 14 - TelAPI - "telunload" - UNINSTALL
  4890.     AH = E6h
  4891. Return: AX = status
  4892.         0000h successful
  4893.         FFFFh unable to uninstall
  4894. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  4895.     this function invokes AH=E5h internally
  4896. SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  4897. --------N-14E7-------------------------------
  4898. INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
  4899.     AH = E7h
  4900.     ES:SI -> 10-word buffer for session list
  4901. Return: AX = 0000h (successful)
  4902.     ES:SI buffer filled
  4903. Desc:    determine, for each of the ten allowable sessions, whether the session
  4904.       is currently available
  4905. Note:    each word in the buffer is filled with either 0000h to indicate that
  4906.      the corresponding sesion is unavailable, or 0001h if available
  4907. SeeAlso: AH=E0h,AH=E5h,AX=FF00h
  4908. --------N-14E8-------------------------------
  4909. INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
  4910.     AH = E8h
  4911.     BX = connection ID (see AH=E0h"TelAPI")
  4912.     CX = serial port number (0000h-0003h = COM1-COM4)
  4913.     DX = ??? (ignored by Novell TELAPI v4.01)
  4914. Return: AX = status
  4915.         0000h successful
  4916.         FFFFh failed
  4917. SeeAlso: AH=E0h,AH=E9h,AX=FF00h
  4918. --------N-14E9-------------------------------
  4919. INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
  4920.     AH = E9h
  4921.     DX = serial port number (0000h-0003h = COM1-COM4)
  4922. Return: AX >= 0000h session number
  4923.     AX < 0000h error code (see #2621)
  4924. SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
  4925. --------N-14EA-------------------------------
  4926. INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
  4927.     AH = EAh
  4928.     BX = connection ID (see AH=E0h"TelAPI")
  4929.     ES:SI -> buffer for status info (see #2629)
  4930. Return: AX = status (0000h,FFFFh,etc.)
  4931. SeeAlso: AH=E9h,AH=EBh,AX=FF00h
  4932.  
  4933. Format of TelAPI Telnet connection status information:
  4934. Offset    Size    Description    (Table 2629)
  4935.  00h  4 BYTEs    remote host IP address
  4936.  04h 20 BYTEs    reserved
  4937.  18h    WORD    local port number
  4938.  1Ah    BYTE    connection mode (00h = ASCII, 01h = Binary)
  4939.  1Bh    BYTE    echo flag (00h local, 01h remote)
  4940.  1Ch    BYTE    SGA flag (00h will, 01h won't)
  4941.  1Dh    BYTE    EOR negotation flag (00h do negotiate, 01h don't)
  4942.  1Eh    BYTE    buffering (00h line mode, 01h character mode)
  4943.  1Fh    BYTE    reserved
  4944.  20h    BYTE    verbose flag (00h no, 01h verbose mode)
  4945.  21h    BYTE    received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
  4946.  22h    BYTE    sent EOL (00h no translation, 01h CR, 02h LF)
  4947.  23h    BYTE    break character
  4948.  24h    BYTE    IP escape character
  4949.  25h    BYTE    AO escape character
  4950.  26h    BYTE    AYT escape character
  4951.  27h    BYTE    EC escape character
  4952.  28h    BYTE    EL escape character
  4953.  29h 41 BYTEs    ASCIZ Telnet-negotiated terminal type
  4954.  52h  9 BYTEs    session ID
  4955. SeeAlso: #2630
  4956. --------N-14EB-------------------------------
  4957. INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
  4958.     AH = EBh
  4959.     ES:SI -> buffer for session statuses (see #2630)
  4960. Return: ES:SI buffer filled
  4961. SeeAlso: AH=E9h,AH=EAh,AX=FF00h
  4962.  
  4963. Format of TelAPI session status information [array]:
  4964. Offset    Size    Description    (Table 2630)
  4965.  00h    BYTE    session state (00h available, 01h connected)
  4966.  01h  9 BYTEs    session ID if connected
  4967.  0Ah    WORD    attached COM port if connected, FFFFh if not
  4968. SeeAlso: #2629
  4969. --------N-14EC-------------------------------
  4970. INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
  4971.     AH = ECh
  4972.     BX = port number to connect with (default 0017h used if <= 0)
  4973.     CX:DX = Internet address of remote host
  4974.     DS:DI -> 2-byte remote host (connection) identifier
  4975.     ES:SI -> 1700-byte buffer for Telnet state record
  4976.         0000h:0000h to use TelAPI internally-allocated space
  4977. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #2621)
  4978.     ES:SI buffer filled with state record
  4979.     ES:SI -> internally-allocated state record in some versions
  4980. Notes:    the remote host identifier may be used to refer to this connection
  4981.     this function returns immediately; use AH=EDh to check whether the
  4982.       connection has been established yet
  4983.     this function is not supported by the Microdyne TelAPI v3.7
  4984. SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
  4985. --------N-14ED-------------------------------
  4986. INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
  4987.     AH = EDh
  4988.     BX = connection ID (see AH=ECh)
  4989. Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #2621)
  4990.         0000h session now connected
  4991.         0001h connection still in progress
  4992. Note:    this function is not supported by the Microdyne TelAPI v3.7
  4993. SeeAlso: AH=EDh,AX=FF00h
  4994. --------a-14F0F0-----------------------------
  4995. INT 14 - ASAP v1.0 - ???
  4996.     AX = F0F0h
  4997.     DX = ???
  4998.     ???
  4999. Return: ???
  5000. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  5001.       MicroTalk
  5002. SeeAlso: AX=F0F1h
  5003. --------a-14F0F1DX0000-----------------------
  5004. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  5005.     AX = F0F1h
  5006.     DX = 0000h
  5007. Return: DX = segment of resident code
  5008.         0000h if not installed
  5009. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  5010.       MicroTalk
  5011. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  5012. --------S-14F4FF-----------------------------
  5013. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  5014.     AX = F4FFh
  5015.     DX = port (00h-03h)
  5016. Return: CF clear if present
  5017.         AX = 0000h
  5018.     CF set if not present
  5019.         AX <> 0000h
  5020. SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
  5021. --------S-14F9-------------------------------
  5022. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  5023.     AH = F9h
  5024.     DX = port (00h-03h)
  5025. SeeAlso: AX=F4FFh
  5026. --------S-14FA-------------------------------
  5027. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  5028.     AH = FAh
  5029.     DX = port (00h-03h)
  5030. SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
  5031. --------S-14FB-------------------------------
  5032. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  5033.     AH = FBh
  5034.     AL = modem control register (see #0231 at AH=05h)
  5035.     DX = port (00h-03h)
  5036. SeeAlso: AH=05h"SERIAL"
  5037. --------S-14FC-------------------------------
  5038. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  5039.     AH = FCh
  5040.     DX = port (00h-03h)
  5041. Return: AH = RS232 status bits (see #0201 at AH=03h)
  5042.     AL = character
  5043. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  5044. --------S-14FD02-----------------------------
  5045. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  5046.     AX = FD02h
  5047. Return: CX = number of characters available
  5048. --------N-14FF00-----------------------------
  5049. INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
  5050.     AX = FF00h
  5051. Return: AX = 00FFh if installed
  5052.         BX = version number * 100 (decimal)
  5053. SeeAlso: AH=E6h,AX=F4FFh
  5054. --------S-14FF01-----------------------------
  5055. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  5056.     AX = FF01h
  5057.     CX = length of buffer (0000h to cancel buffer assignment)
  5058.     DX = port (00h-03h)
  5059.     ES:BX -> send buffer
  5060. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  5061. --------S-14FF02-----------------------------
  5062. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  5063.     AX = FF02h
  5064.     CX = length of buffer (0000h to cancel buffer assignment)
  5065.     DX = port (00h-03h)
  5066.     ES:BX -> receive buffer
  5067. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF03h
  5068. --------S-14FFF8-----------------------------
  5069. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  5070.     AX = FFF8h
  5071.     BX = card type (sub-device number)
  5072.     CX = new baudrate divisor
  5073.     DX = index to baud rate
  5074. Return: AH bit 7 set on error
  5075.     AH bit 7 clear if successful
  5076. Program: COMM-DRV is a universal serial communications driver by Willies'
  5077.       Computer Software Company, which supports standard INT 14 and
  5078.       FOSSIL calls as well as its own interfaces
  5079. SeeAlso: AX=8000h"COMM-DRV"
  5080. --------S-14FFFB-----------------------------
  5081. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  5082.     AX = FFFBh
  5083.     DX = port number
  5084. Return: AH bit 7 set on error
  5085.     AH bit 7 clear if successful
  5086.         BX = highest port number
  5087. --------S-14FFFC-----------------------------
  5088. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  5089.     AX = FFFCh
  5090.     DX = port number
  5091. Return: AH bit 7 set on error
  5092.     AH bit 7 clear if successful
  5093.         BX = flags (see #0293)
  5094. SeeAlso: AX=FFFDh
  5095.  
  5096. Bitfields for INT 14h flags:
  5097. Bit(s)    Description    (Table 0293)
  5098.  0    port active for INT 14h
  5099.  1    interface behaving like a FOSSIL driver
  5100. --------S-14FFFD-----------------------------
  5101. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  5102.     AX = FFFDh
  5103.     BX = flags (see #0293)
  5104.     DX = port number
  5105. Return: AH bit 7 set on error
  5106.     AH bit 7 clear if successful
  5107. SeeAlso: AX=FFFCh
  5108. --------S-14FFFE-----------------------------
  5109. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  5110.     AX = FFFEh
  5111. Return: AH bit 7 set on error
  5112.     AH bit 7 clear if successful
  5113. --------S-14FFFF-----------------------------
  5114. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  5115.     AX = FFFFh
  5116.     BX:SI -> DWORD buffer for address of information area (see #0294)
  5117.           (initialized to zeros)
  5118. Return: BX:SI buffer filled with nonzero value if installed
  5119. Program: COMM-DRV is a universal serial communications driver by Willies'
  5120.       Computer Software Company, which supports standard INT 14 and
  5121.       FOSSIL calls as well as its own interfaces
  5122. Index:    installation check;COMM-DRV
  5123.  
  5124. Format of COMM-DRV information area:
  5125. Offset    Size    Description    (Table 0294)
  5126.  00h  8 BYTEs    signature "COMM-DRV"
  5127.  08h  2 BYTEs    00h,00h
  5128.  0Ah    DWORD    -> direct address mapping table
  5129.  0Eh    DWORD    previous INT 14 vector
  5130. --------t-15---------------------------------
  5131. INT 15 - Microsoft TSR Specification
  5132.     No additional information available at this time.
  5133. --------B-1500-------------------------------
  5134. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  5135.     AH = 00h
  5136. Return: CF set on error
  5137.         AH = 86h no cassette present
  5138.     CF clear if successful
  5139. SeeAlso: AH=01h"CASSETTE"
  5140. --------M-1500-------------------------------
  5141. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  5142.     AH = 00h
  5143. Return: CX = signed X count
  5144.     DX = signed Y count
  5145. --------O-1500-------------------------------
  5146. INT 15 - VMiX v2+ - INSTALLATION CHECK
  5147.     AH = 00h
  5148. Return: DX = 0798h if installed
  5149.         AX = version (AH = major, AL = minor)
  5150. --------T-1500-------------------------------
  5151. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  5152.     AH = 00h
  5153. Note:    if issued by the highest-priority task while MultiDOS is using
  5154.       priority-based rather than round-robin scheduling, control will be
  5155.       returned to the caller immediately
  5156. SeeAlso: AH=03h"MultiDOS",AX=1000h
  5157. --------B-1501-------------------------------
  5158. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  5159.     AH = 01h
  5160. Return: CF set on error
  5161.         AH = 86h no cassette present
  5162.     CF clear if successful
  5163. SeeAlso: AH=00h"CASSETTE"
  5164. --------b-1501-------------------------------
  5165. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  5166.     AH = 01h
  5167.     AL = NVRAM location (00h to 3Fh) (see #0295)
  5168.     BL = NVRAM data value
  5169. Return: AH = return code
  5170.         00h OK
  5171.         01h address bad
  5172.         02h write error
  5173. SeeAlso: AH=02h"Amstrad"
  5174.  
  5175. Format of Amstrad NVRAM:
  5176. Offset    Size    Description    (Table 0295)
  5177.  00h    BYTE    time of day: seconds
  5178.  01h    BYTE    alarm time: seconds
  5179.  02h    BYTE    time of day: minutes
  5180.  03h    BYTE    alarm time: minutes
  5181.  04h    BYTE    time of day: hours
  5182.  05h    BYTE    alarm time: hours
  5183.  06h    BYTE    day of week, 1 = Sunday
  5184.  07h    BYTE    day of month
  5185.  08h    BYTE    month
  5186.  09h    BYTE    year mod 100
  5187.  0Ah    BYTE    RTC status register A (see #0296)
  5188.  0Bh    BYTE    RTC status register B (see #0297)
  5189.  0Ch    BYTE    RTC status register C (read-only) (see #0298)
  5190.  0Dh    BYTE    RTC status register D
  5191.         bit 7: battery good
  5192.  0Eh  6 BYTEs    time and date machine last used
  5193.  14h    BYTE    user RAM checksum
  5194.  15h    WORD    Enter key scancode/ASCII code
  5195.  17h    WORD    Forward delete key scancode/ASCII code
  5196.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  5197.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  5198.  1Dh    WORD    mouse button 1 scancode/ASCII code
  5199.  1Fh    WORD    mouse button 2 scancode/ASCII code
  5200.  21h    BYTE    mouse X scaling factor
  5201.  22h    BYTE    mouse Y scaling factor
  5202.  23h    BYTE    initial VDU mode and drive count
  5203.  24h    BYTE    initial VDU character attribute
  5204.  25h    BYTE    size of RAM disk in 2K blocks
  5205.  26h    BYTE    initial system UART setup byte
  5206.  27h    BYTE    initial external UART setup byte
  5207.  28h 24 BYTEs    available for user application
  5208. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  5209.       the clock chip
  5210.  
  5211. Bitfields for RTC status register A:
  5212. Bit(s)    Description    (Table 0296)
  5213.  7    set if date/time being updated
  5214.  6-4    time base speed, default 010 = 32768 Hz
  5215.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  5216.  
  5217. Bitfields for RTC status register B:
  5218. Bit(s)    Description    (Table 0297)
  5219.  7    clear if normal update, set if abort update
  5220.  6    periodic interrupt enable
  5221.  5    alarm interrupt enable
  5222.  4    update end interrupt enable
  5223.  3    square wave enable
  5224.  2    date mode (clear = BCD, set = binary)
  5225.  1    24-hour format
  5226.  0    daylight saving time enable
  5227.  
  5228. Bitfields for RTC status register C:
  5229. Bit(s)    Description    (Table 0298)
  5230.  7    IRQF flag
  5231.  6    PF flag
  5232.  5    AF flag
  5233.  4    UF flag
  5234. --------O-1501-------------------------------
  5235. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  5236.     AH = 01h
  5237.     STACK:    WORD    object ID of requestor
  5238.         DWORD    pointer to ASCIZ name of requested method
  5239.             "assign" assign channel to object
  5240.             "deassign" deassign channel
  5241.             "cursor" set cursor on/off
  5242.             "init" initialize comm port
  5243.             "open" open I/O channel
  5244.             "position" set cursor position
  5245.             "receive" get buffered packet from comm port
  5246.             "send" send buffered packet to comm port
  5247.             "vio" set current virtual I/O to specified channel
  5248.             "window" make window at cursor position
  5249.         ---if "assign"---
  5250.          WORD    object UID
  5251.          WORD    caller UID/PID
  5252.          DWORD    CSL with port
  5253.         ---if "deassign"---
  5254.          WORD    channel ID
  5255.         ---if "cursor"---
  5256.          WORD    channel ID (must be a SRCSINK)
  5257.          WORD    new state (0000h off, 0001h on)
  5258.         ---if "init"---
  5259.          WORD    channel ID (must be a SRCSINK)
  5260.          WORD    comm port number (00h-03h)
  5261.          WORD    UART init code
  5262.         ---if "open"---
  5263.          WORD    channel ID
  5264.         ---if "position"---
  5265.          WORD    channel ID (must be a SRCSINK)
  5266.          WORD    position (high byte = row, low byte = column)
  5267.         ---if "receive"---
  5268.          DWORD    pointer to buffer
  5269.         ---if "send"---
  5270.          WORD    length of buffer
  5271.          DWORD    pointer to buffer
  5272.         ---if "vio"---
  5273.          WORD    channel ID (must be a SRCSINK)
  5274.         ---if "window"---
  5275.          WORD    top left (high byte = row, low byte = column)
  5276.          WORD    bottom right (high byte = row, low byte = column)
  5277. Return: DX:AX -> IRP structure or 0000h:0000h
  5278. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  5279. --------T-1501-------------------------------
  5280. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  5281.     AH = 01h
  5282.     AL = semaphore number (00h-3Fh)
  5283. Return: AH = status
  5284.         00h successful
  5285.         02h invalid semaphore number
  5286. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  5287.       task and the call returns immediately
  5288.     if the semaphore is already owned by another task, the calling task
  5289.       is placed on a queue for the semaphore and suspended until it can
  5290.       become owner of the semaphore
  5291.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  5292. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  5293. --------B-1502-------------------------------
  5294. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  5295.     AH = 02h
  5296.     CX = number of bytes to read
  5297.     ES:BX -> buffer
  5298. Return: CF clear if successful
  5299.         DX = number of bytes read
  5300.         ES:BX -> byte following last byte read
  5301.     CF set on error
  5302.     AH = status (see #0299)
  5303. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  5304.  
  5305. (Table 0299)
  5306. Values for Cassette status:
  5307.  00h    successful
  5308.  01h    CRC error
  5309.  02h    bad tape signals
  5310.  04h    no data
  5311.  80h    invalid command
  5312.  86h    no cassette present
  5313. --------b-1502-------------------------------
  5314. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  5315.     AH = 02h
  5316.     AL = NVRAM location (00h to 3Fh)
  5317. Return: AH = return code
  5318.         00h OK
  5319.         01h address bad
  5320.         02h checksum error
  5321.     AL = NVRAM data value
  5322. SeeAlso: AH=01h"Amstrad"
  5323. --------O-1502-------------------------------
  5324. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  5325.     AH = 02h
  5326.     STACK:    WORD    object ID of requestor
  5327.         DWORD    pointer to ASCIZ name of requested method
  5328.             "assign" allocate low memory block
  5329.             "assign extended" allocate extended memory pages
  5330.             "assign gdt" allocate GDT selector
  5331.             "paged" allocate low paged memory
  5332.             "paged extended" alllocate extended memory pages
  5333.             "deassign" free memory block
  5334.             "deassign gdt" free GDT selector
  5335.             "getvpage" get physical address for virtual page
  5336.             "setvpage" set physical address for virtual page
  5337.             "info" get VMiX memory usage info block
  5338.             "move" move contents of 32-bit memory
  5339.             "newmcb" make new DOS memory control block
  5340.             "owner" get process ID of MCB or PSP owner
  5341.             "umb" allocate upper memory block
  5342.             "video" toggle system use of vidoe memory and get stat
  5343.         ---if "assign"---
  5344.          WORD    number of objects
  5345.          WORD    size in bytes (multiple of 512 bytes)
  5346.         ---if "assign extended"---
  5347.          WORD    number of objects
  5348.          WORD    size in bytes (multiple of 4K)
  5349.         ---if "assign gdt"---
  5350.          WORD    access type (low byte)
  5351.          WORD    segment size in paragraphs
  5352.          DWORD    pointer to start of physical segment
  5353.         ---if "paged"---
  5354.          WORD    number of 512-byte pages
  5355.         ---if "paged extended"
  5356.          WORD    number of 4K pages
  5357.         ---if "deassign"---
  5358.          DWORD    pointer returned by previous allocation call
  5359.         ---if "deassign gdt"---
  5360.          WORD    GDT selector
  5361.         ---if "getvpage"---
  5362.          WORD    owner's process ID
  5363.          DWORD    pointer to buffer for page structure (struct VPGE)
  5364.         ---if "setvpage"---
  5365.          WORD    owner's process ID
  5366.          DWORD    pointer to new page structure (struct VPGE)
  5367.         ---if "info"---
  5368.          no additional arguments
  5369.         ---if "move"
  5370.          DWORD    32-bit source address
  5371.          DWORD    32-bit destination address
  5372.          WORD    number of words to move
  5373.         ---if "newmcb"---
  5374.          DWORD    pointer to new MCB's location
  5375.          WORD    size of memory block
  5376.          DWORD    pointer to ASCIZ name string (max 8 chars)
  5377.         ---if "owner"---
  5378.          WORD    MCB or PSP segment
  5379.         ---if "umb"---
  5380.          WORD    size in paragraphs
  5381.         ---if "video"---
  5382.          no additional arguments
  5383. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  5384. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  5385. --------T-1502-------------------------------
  5386. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  5387.     AH = 02h
  5388.     AL = semaphore number (00h-3Fh)
  5389. Return: AH = status
  5390.         00h successful
  5391.         01h not semaphore owner
  5392.         02h invalid semaphore number
  5393. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  5394.       queue will become the new owner and be reawakened
  5395.     do not use within an interrupt handler
  5396. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  5397. --------B-1503-------------------------------
  5398. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  5399.     AH = 03h
  5400.     CX = number of bytes to write
  5401.     ES:BX -> data buffer
  5402. Return: CF clear if successful
  5403.         ES:BX -> byte following last byte written
  5404.     CF set on error
  5405.     AH = status (see #0299)
  5406.     CX = 0000h
  5407. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  5408. --------V-1503-------------------------------
  5409. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  5410.     AH = 03h
  5411.     AL = value (I,R,G,B bits)
  5412. SeeAlso: AH=04h"Amstrad"
  5413. --------O-1503-------------------------------
  5414. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  5415.     AH = 03h
  5416.     STACK:    DWORD    pointer to ASCII prompt
  5417.         WORD    field outline character
  5418.         WORD    length of input field (max 7Fh)
  5419.         DWORD    address of pointer to input buffer
  5420. Return: AX = length of input (input buffer is padded with blanks)
  5421. SeeAlso: AH=04h"VMiX"
  5422. --------T-1503-------------------------------
  5423. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  5424.     AH = 03h
  5425.     DX = number of time slices to remain suspended
  5426. Return: after specified interval has elapsed
  5427. Note:    when priority-based scheduling is in use, high-priority tasks should
  5428.       use this function to yield the processor
  5429. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  5430. --------B-1504-------------------------------
  5431. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  5432.     AH = 04h
  5433.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0300)
  5434.     DS = segment containing ABIOS RAM extensions (zero if none)
  5435. Return: CF clear if successful
  5436.         AH = 00h success
  5437.         ES:DI buffer filled
  5438.         AL destroyed
  5439.     CF set on failure
  5440.         AX destroyed
  5441.         AH = 80h/86h if not supported
  5442. SeeAlso: AH=05h"ABIOS",AH=C1h
  5443.  
  5444. Format of ABIOS System Parameter Table:
  5445. Offset    Size    Description    (Table 0300)
  5446.  00h    DWORD    FAR address of ABIOS Common Start Routine
  5447.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  5448.  08h    DWORD    FAR address of ABIOS Time-out Routine
  5449.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  5450.  0Eh 16 BYTEs    reserved
  5451.  1Eh    WORD    number of entries in initialization table
  5452. --------V-1504-------------------------------
  5453. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  5454.     AH = 04h
  5455.     AL = value (RDSEL1 and RDSEL0)
  5456. SeeAlso: AH=03h"Amstrad",05h"Amstrad"
  5457. --------O-1504-------------------------------
  5458. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  5459.     AH = 04h
  5460.     STACK:    DWORD    control string
  5461.         DWORD    array of arguments
  5462. SeeAlso: AH=03h"VMiX"
  5463. --------T-1504-------------------------------
  5464. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  5465.     AH = 04h
  5466.     AL = mailbox number (00h-3Fh)
  5467.     CX = message length in bytes
  5468.     DS:SI -> message
  5469. Return: AH = status
  5470.         00h successful
  5471.         01h out of message memory
  5472.         02h invalid mailbox number
  5473. Note:    the message is copied into a system buffer; the caller may immediately
  5474.       reuse its buffer
  5475. SeeAlso: AH=05h"MultiDOS"
  5476. --------B-1505-------------------------------
  5477. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  5478.     AH = 05h
  5479.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0301)
  5480.     DS = segment containing ABIOS RAM extensions (zero if none)
  5481. Return: CF clear if successful
  5482.         AH = 00h success
  5483.         ES:DI buffer filled
  5484.         AL destroyed
  5485.     CF set on failure
  5486.         AX destroyed
  5487.         AH = 80h/86h if not supported
  5488. SeeAlso: AH=04h"ABIOS",AH=C1h
  5489.  
  5490. Format of one entry of ABIOS Initialization Table:
  5491. Offset    Size    Description    (Table 0301)
  5492.  00h    WORD    device ID (see #0302)
  5493.  02h    WORD    number of Logical IDs
  5494.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  5495.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  5496.  0Ah    WORD    request block length
  5497.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  5498.  0Eh    WORD    Data Pointers length (in Common Data Area)
  5499.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  5500.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  5501.  12h  6 BYTEs    reserved
  5502.  
  5503. (Table 0302)
  5504. Values for ABIOS device ID:
  5505.  00h    ABIOS internal calls
  5506.  01h    floppy disk
  5507.  02h    hard disk
  5508.  03h    video
  5509.  04h    keyboard
  5510.  05h    parallel port
  5511.  06h    serial port
  5512.  07h    system timer
  5513.  08h    real-time clock
  5514.  09h    system services
  5515.  0Ah    NMI
  5516.  0Bh    mouse
  5517.  0Eh    CMOS RAM
  5518.  0Fh    DMA
  5519.  10h    Programmable Option Select (POS)
  5520.  16h    keyboard password
  5521. --------V-1505-------------------------------
  5522. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  5523.     AH = 05h
  5524.     AL = value (I,R,G,B bits)
  5525. SeeAlso: AH=04h"Amstrad"
  5526. --------O-1505-------------------------------
  5527. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  5528.     AH = 05h
  5529. Return: AX = process ID
  5530. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  5531. --------T-1505-------------------------------
  5532. INT 15 - MultiDOS Plus - CHECK MAILBOX
  5533.     AH = 05h
  5534.     AL = mailbox number (00h-3Fh)
  5535. Return: AH = status
  5536.         00h successful
  5537.         DX = length of first message in queue, 0000h if no message
  5538.         02h invalid mailbox number
  5539. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  5540. --------b-1506-------------------------------
  5541. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  5542.     AH = 06h
  5543. Return: BX = version number
  5544. --------O-1506-------------------------------
  5545. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  5546.     AH = 06h
  5547.     STACK:    WORD    process ID
  5548. Return: DX:AX -> process control block
  5549. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  5550. --------T-1506-------------------------------
  5551. INT 15 - MultiDOS Plus - READ MAILBOX
  5552.     AH = 06h
  5553.     AL = mailbox number (00h-3Fh)
  5554.     CX = size of buffer in bytes
  5555.     ES:DI -> buffer for message
  5556. Return: AH = status
  5557.         00h successful
  5558.         CX = number of bytes copied
  5559.         DX = actual length of message
  5560.         02h invalid mailbox number
  5561. Note:    if the caller's buffer is not large enough, the message is truncated
  5562.       and the remainder is lost
  5563. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  5564. --------O-1507-------------------------------
  5565. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  5566.     AH = 07h
  5567.     STACK:    WORD    object type
  5568. Return: DX:AX -> object control block
  5569. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  5570. --------T-1507-------------------------------
  5571. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  5572.     AH = 07h
  5573.     BX:CX = entry point of new task
  5574.     DX = stack size in paragraphs
  5575. Return: AH = status
  5576.         00h successful
  5577.         01h no free task control blocks
  5578.         02h no free memory for task's stack
  5579. Note:    execution returns immediately to calling task
  5580. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  5581. --------O-1508-------------------------------
  5582. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  5583.     AH = 08h
  5584.     STACK:    WORD    channel ID
  5585. Return: DX:AX -> channel control block
  5586. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  5587. --------T-1508-------------------------------
  5588. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  5589.     AH = 08h
  5590. Return: calling task terminated, so execution never returns to caller
  5591. Notes:    an internal task must be terminated with this function rather than a
  5592.       DOS termination function
  5593.     task's stack space is returned to parent task's memory pool
  5594. SeeAlso: AH=07h"MultiDOS"
  5595. --------O-1509-------------------------------
  5596. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  5597.     AH = 09h
  5598.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  5599.         WORD    subqueue ID
  5600. Return: AX = queue ID
  5601. SeeAlso: AH=0Ah"VMiX"
  5602. --------T-1509-------------------------------
  5603. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  5604.     AH = 09h
  5605.     AL = new priority
  5606. Note:    the priority has different meanings depending on whether priority-
  5607.       based or round-robin scheduling is used
  5608. SeeAlso: AH=07h"MultiDOS"
  5609. --------O-150A-------------------------------
  5610. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  5611.     AH = 0Ah
  5612.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  5613.         WORD    ID of current element in queue chain
  5614. Return: AX = ID of next element
  5615. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  5616. --------T-150A-------------------------------
  5617. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  5618.     AH = 0Ah
  5619.     AL = new interval
  5620.         00h = 55.0 ms (default)
  5621.         80h = 27.5 ms
  5622.         40h = 13.75 ms
  5623.         20h = 6.88 ms
  5624.         10h = 3.44 ms
  5625.         08h = 1.72 ms
  5626. SeeAlso: AH=03h"MultiDOS"
  5627. --------O-150B-------------------------------
  5628. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  5629.     AH = 0Bh
  5630.     STACK:    WORD    caller's UID
  5631.         DWORD    pointer to ASCIZ name of requested method
  5632.             "abort" abort current send/receive on comm port
  5633.             "block" start/end critical section
  5634.             "close" terminate interrupt-drive comm I/O
  5635.             "open" prepare comm port for interrupt-driven I/O
  5636.             "delay" set delay timer and wait
  5637.             "hibernate" put process to sleep
  5638.             "ints" enable/disable interrupt-driven INT 14h
  5639.             "length" get current send/receive buffer offsets
  5640.             "kswitch" switch stacks
  5641.             "numproc" get number of active processes
  5642.             "protocol" set protocol function for comm interrupts
  5643.             "relocate" set/reset VMiX flag for relocating to himem
  5644.             "status" get current open comm port status
  5645.             "wake" awaken a process
  5646.             "xport" get comm port polled for logins
  5647.         ---if "abort"---
  5648.          no additional arguments
  5649.         ---if "block"---
  5650.          WORD    0000h end, 0001h start
  5651.         ---if "close"---
  5652.          no additional arguments
  5653.         ---if "open"---
  5654.          WORD    comm port (00h-03h)
  5655.          WORD    BIOS parameter byte (see #0197 at INT 14/AH=00h),
  5656.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  5657.         ---if "delay"---
  5658.          WORD    time in seconds
  5659.         ---if "hibernate"---
  5660.          WORD    process ID
  5661.         ---if "ints"---
  5662.          WORD    0000h if no, 0001h if yes
  5663.         ---if "length","numproc","relocate","status","xport"---
  5664.          no additional arguments
  5665.         ---if "kswitch"---
  5666.          DWORD    pointer to new stack
  5667.         ---if "protocol"---
  5668.          DWORD    pointer to function (must be in low "assign"ed memory
  5669.             when in 386 mode)
  5670.         ---if "wake"---
  5671.          WORD    process ID
  5672. Return: DX:AX -> result or 0000h:0000h
  5673.         ---if "length"---
  5674.          BYTE    receive offset
  5675.          BYTE    send offset
  5676.         ---if "kswitch"---
  5677.          DWORD    old stack pointer
  5678.         ---if "numproc"---
  5679.          WORD    number of active processes
  5680.         ---if "status"---
  5681.          current open comm port status
  5682.         ---if "xport"---
  5683.          current comm port being polled for logins
  5684. Note:    the "delay" command reportedly disables the keyboard until the delay
  5685.       completes
  5686. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  5687. --------T-150B-------------------------------
  5688. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  5689.     AH = 0Bh
  5690. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  5691.       may be restored with AH=0Ch
  5692.     caller's video mode must be same as foreground task's video mode
  5693.     any text written while in the background will be saved to the
  5694.       foreground task's virtual screen when it switches to the background
  5695.     useful if a background task wants to display a message on the
  5696.       foreground screen
  5697. SeeAlso: AH=0Ch"MultiDOS"
  5698. --------O-150C-------------------------------
  5699. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  5700.     AH = 0Ch
  5701.     STACK:    WORD    process ID
  5702. Return: DX:AX -> TSS stack store
  5703. SeeAlso: AH=00"VMiX"
  5704. --------T-150C-------------------------------
  5705. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  5706.     AH = 0Ch
  5707. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  5708.       unless AH=0Bh has been called first
  5709. SeeAlso: AH=0Bh"MultiDOS"
  5710. --------O-150D-------------------------------
  5711. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  5712.     AH = 0Dh
  5713.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  5714.             followed by standard VMiX shell command string
  5715. Return: AX = process ID or error code "SYS_ERROR"
  5716. Note:    the maximum string length is 7Fh characters
  5717. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  5718. --------T-150D-------------------------------
  5719. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  5720.     AH = 0Dh
  5721. Note:    calling task receives all time slices until AH=0Eh is called; this
  5722.       allows time-critical events or nonreentrant code to be processed
  5723. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  5724. --------O-150E-------------------------------
  5725. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  5726.     AH = 0Eh
  5727.     STACK:    WORD    process ID
  5728. Return: AX = status (SYS_OK or SYS_ERROR)
  5729. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  5730. --------T-150E-------------------------------
  5731. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  5732.     AH = 0Eh
  5733. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  5734. --------d-150F-------------------------------
  5735. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  5736.     AH = 0Fh
  5737.     AL = phase code
  5738.         00h reserved
  5739.         01h surface analysis
  5740.         02h formatting
  5741. Return: CF clear if formatting should continue
  5742.     CF set if formatting should terminate
  5743. Note:    called during ESDI drive formatting after each cylinder is completed
  5744. SeeAlso: INT 13/AH=1Ah
  5745. --------O-150F-------------------------------
  5746. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  5747.     AH = 0Fh
  5748.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  5749.         WORD    ID of element in queue chain
  5750. Return: AX = key
  5751. SeeAlso: AH=0Ah"VMiX"
  5752. --------T-150F-------------------------------
  5753. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  5754.     AH = 0Fh
  5755.     DS:BX -> ASCIZ command
  5756. Return: after command has been processed
  5757. Notes:    specified string is executed as if it had been typed at the MultiDOS
  5758.       command prompt
  5759.     the task is placed on a queue which MultiDOS examines periodically and
  5760.       is suspended until MultiDOS has processed the command
  5761.     all lowercase characters up to the first blank are converted to upper
  5762.       case within the given buffer
  5763. --------O-1510-------------------------------
  5764. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  5765.     AH = 10h
  5766.     STACK:    DWORD    pointer to function
  5767.           N WORDs    function args
  5768. Return: AX = function's return value??? (not specified in documentation)
  5769. Note:    while the function is executing, the following global descriptors are
  5770.       available:
  5771.         20h stack segment
  5772.         38h code segment of function
  5773.         40h data alias for function's code segment
  5774.       additional GDT descriptors can be allocated using AH=02h with
  5775.       function "assign gdt"
  5776. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  5777. --------T-1510-------------------------------
  5778. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  5779.     AH = 10h
  5780.     AL = semaphore number (00h-3Fh)
  5781. Return: AH = status
  5782.         00h semaphore not in use
  5783.         01h semaphore owned by another task
  5784.         02h invalid semaphore number
  5785.         03h semaphore owned by caller
  5786. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  5787. --------Q-151000-----------------------------
  5788. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  5789.     AX = 1000h
  5790. Return: after other processes run
  5791. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  5792.       the current time-slice is set to expire at the next clock tick rather
  5793.       than immediately
  5794. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  5795. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
  5796. SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
  5797. --------Q-151001-----------------------------
  5798. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  5799.     AX = 1001h
  5800.     BX = number of bytes to allocate
  5801. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  5802.     AX = status (DV v2.42)
  5803.         0000h successful
  5804.         0001h failed
  5805. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  5806.       common memory.  Under DV v2.42, this call never generates a user
  5807.       prompt regardless of the SETERROR value; instead, it always returns
  5808.       AX=0001h and ES:DI=0000h:0000h if out of memory
  5809. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  5810. --------Q-151002-----------------------------
  5811. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  5812.     AX = 1002h
  5813.     ES:DI -> previously allocated block
  5814. Return: block freed
  5815. SeeAlso: AX=1001h,AX=DE0Dh
  5816. --------Q-151003-----------------------------
  5817. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  5818.     AX = 1003h
  5819.     BH = attribute
  5820.     BL = character
  5821.     DX = segment of object handle for window
  5822. Note:    BX=0 does not display anything, it only positions the hardware cursor
  5823. --------Q-1510-------------------------------
  5824. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  5825.     AH = 10h
  5826.     AL = 04h thru 12h
  5827. Return: pops up "Programming error" window in DV 2.x
  5828. --------Q-151013-----------------------------
  5829. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  5830.     AX = 1013h
  5831.     ES:DI -> FAR service routine
  5832. Return: BX = bit mask indicating which bit was allocated
  5833.          0000h if no more bits available
  5834. SeeAlso: AX=1014h,AX=1015h
  5835. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  5836.       interrupt; if other calls need to be made, the interrupt handler
  5837.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  5838. --------Q-151014-----------------------------
  5839. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  5840.     AX = 1014h
  5841.     BX = bit mask from INT 15/AX=1013h
  5842. SeeAlso: AX=1013h,AX=1015h
  5843. --------Q-151015-----------------------------
  5844. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  5845.     AX = 1015h
  5846.     BX = bit mask for interrupts to post
  5847. Return: indicated routines will be called: (DV 2.0x) at next task switch
  5848.                        (DV 2.2x) immediately on return from
  5849.                              hardware interrupt
  5850. SeeAlso: AX=1013h,AX=1014h
  5851. Notes:    this is one of the few TopView calls which are allowed from a hardware
  5852.       interrupt handler
  5853.     the handler will be called with ES containing the segment of the handle
  5854.       of the next task to be executed; on return, ES must be the segment of
  5855.       a task handle
  5856. --------Q-151016-----------------------------
  5857. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  5858.     AX = 1016h
  5859.     ES:DI = possible object handle
  5860. Return: BX = status
  5861.         FFFFh if ES:DI is a valid object handle (see #0304)
  5862.         0000h if ES:DI is not
  5863. Note:    under DESQview versions prior to 2.50, an object handle is always a
  5864.       pointer to the object; for versions 2.50 and up, only task handles
  5865.       are always pointers--other handles may consist of a unique object
  5866.       number and offset into DESQview's common memory (see #0313)
  5867. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  5868.  
  5869. (Table 0303)
  5870. Values for DESQview object type:
  5871.  00h    window/task
  5872.  01h    mailbox
  5873.  02h    keyboard
  5874.  03h    timer
  5875.  04h    pointer
  5876.  05h    panel
  5877.  06h    objectq
  5878.  
  5879. Format of DESQview object:
  5880. Offset    Size    Description    (Table 0304)
  5881.  00h    WORD    offset in common memory of previous object of same type
  5882.  02h    WORD    offset in common memory of next object of same type
  5883.  04h    WORD    signature FEDCh (DV 2.42-)
  5884.         signature FEDCh or object number (DV 2.50+)
  5885.  06h    WORD    object type (see #0303)
  5886.  08h    DWORD    object handle to return to caller
  5887.  0Ch    DWORD    canonicalized object address (segment = common memory)
  5888.  10h    WORD    offset in common memory of owning task
  5889.         (0000h for unowned OBJECTQs)
  5890.  12h    WORD    mapping context
  5891.         offset in common memory of mapping context record (see #0306)
  5892.     remainder varies by object type and DESQview version
  5893. ---v2.42 keyboard object---
  5894.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  5895.         bit 15: keyboard opened
  5896.  16h  4 BYTEs    ???
  5897.  1Ah    WORD    priority in OBJECTQ???
  5898.  1Ch    ...
  5899.  25h    WORD    offset in common memory of ??? task
  5900.  27h  4 BYTEs    ???
  5901. ---v2.42 objectq object---
  5902.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  5903.         bit 15: OBJECTQ opened
  5904.  16h  2 BYTEs    ???
  5905.  18h    WORD    offset in common memory of ??? task
  5906.  1Ah  6 BYTEs    ???
  5907. ---v2.42 mailbox object---
  5908.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  5909.         bit 15: mailbox opened
  5910.  1Ah    WORD    priority in OBJECTQ???
  5911.  1Ch  6 BYTEs    ???
  5912.  22h    WORD    offset in common memory of mailbox name (counted string)
  5913.         0000h if no name
  5914.      <= 5 BYTEs ???
  5915. ---v2.22-2.42,2.52,2.60 window/task object---
  5916.  14h    BYTE    00h window, 01h task
  5917.  15h    BYTE    internal (not Switch menu) window number???
  5918.  16h    BYTE    internal (not Switch menu) window number???
  5919.  17h    WORD    segment of internal window record (see #0307)
  5920.  19h  2 BYTEs    ???
  5921.  1Bh    BYTE    cursor row
  5922.  1Ch    BYTE    cursor column
  5923.  1Dh    BYTE    visible window origin, row
  5924.  1Eh    BYTE    visible window origin, column
  5925.  1Fh    BYTE    window height (logical)
  5926.  20h    BYTE    window width (logical)
  5927.  21h    BYTE    window position, row
  5928.  22h    BYTE    window position, column
  5929.  23h    BYTE    window height (visible)
  5930.  24h    BYTE    window width (visible)
  5931.  25h    BYTE    row of top of frame (or window if unframed)
  5932.  26h    BYTE    column of left of frame (or window if unframed)
  5933.  27h    BYTE    window height (physical, including frame)
  5934.  28h    BYTE    window width (physical, including frame)
  5935.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  5936.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  5937.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  5938.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  5939.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  5940.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  5941.         unzoomed parameters above are updated when window is zoomed
  5942.           to full screen
  5943.  2Fh    BYTE    ??? initially logical window height
  5944.  30h    BYTE    ??? initially logical window width
  5945.  31h  2 BYTEs    ???
  5946.  33h    BYTE    minimum height of window
  5947.  34h    BYTE    minimum width of window
  5948.  35h    BYTE    maximum height of window
  5949.  36h    BYTE    maximum width of window
  5950.  37h  3 BYTEs    ???
  5951.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  5952.  42h 24 BYTEs    attributes???
  5953.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  5954.  62h  3 BYTEs    ???
  5955.  65h    BYTE    ??? bitflags
  5956.  66h    BYTE    bit 0: window is zoomed
  5957.  67h    BYTE    ???
  5958.  68h    WORD    offset in common memory of window name or 0000h if untitled
  5959.  6Ah    WORD    length of window name
  5960.  6Ch  2 BYTEs    ???
  5961.  6Eh    WORD    offset of logical cursor in window (in character cells)
  5962.  70h    DWORD    pointer to field table for window
  5963.  74h    BYTE    ???
  5964.  75h  2 BYTEs    ???
  5965.  77h    BYTE    number of last-visited field
  5966.  78h    DWORD    pointer to field table entry for last-visited field
  5967.  7Ch  3 BYTEs    ???
  5968.  7Fh    BYTE    select field marker character
  5969.  80h    BYTE    ??? bit flags
  5970.         bit 0: allow ECh window stream opcode to change reverse logattr
  5971.         bit 1: alternate field processing mode selected
  5972.  81h    BYTE    ???
  5973.  82h    DWORD    notification function (manager stream opcode 8Ah)
  5974.         no notification if segment = 0000h
  5975.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  5976.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  5977.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  5978.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  5979.  90h    BYTE    ??? bitflags
  5980.  91h    BYTE    ???
  5981.  ---task object only
  5982.  92h    BYTE    bit flags (bits 0-4)
  5983.  93h    BYTE    character for ??? (default 20h)
  5984.  94h    BYTE    ??? flag
  5985.  95h    WORD    offset in common memory of ???
  5986.  97h  2 BYTEs    ???
  5987.  99h    WORD    ???
  5988.  9Bh    BYTE    ??? bit flags
  5989.         bit 3: ???
  5990.         bit 6: perform protected-attribute processing on select fields
  5991.  9Ch    BYTE    ???
  5992.  9Dh    WORD    offset in common memory of current register save record
  5993.           (see #0305).    No register save record in use if < 01C0h
  5994.  9Fh    WORD    offset in common memory of task's keyboard object
  5995.  A1h    WORD    offset in common memory of task's OBJECTQ object
  5996.  A3h    WORD    offset in common memory of task's mailbox object
  5997.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  5998.  A7h    DWORD    user's SS:SP
  5999.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  6000.  ADh  6 BYTEs    ???
  6001.  B3h    BYTE    ??? bit flags
  6002.         bit 0: run in foreground only
  6003.  B4h    BYTE    ???
  6004.  B5h    BYTE    ??? bitflags
  6005.  B6h    BYTE    task status (see #0417 at AX=DE2Ch)
  6006.  B7h  9 BYTEs    ???
  6007.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  6008.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  6009.  C4h  2 BYTEs    ??? (0000h)
  6010.  C6h    WORD    segment of keyboard buffer for task
  6011.  C8h    WORD    offset in common memory of ??? keyboard object
  6012.  CAh    BYTE    ???
  6013. ---v2.22-2.42
  6014.  CBh    WORD    offset in common memory of ??? object
  6015.  CEh    BYTE    ??? flag
  6016.  CFh    WORD    offset in common memory of default notify window for task
  6017.           or 0000h if none
  6018.  D1h  4 BYTEs    ???
  6019.  D5h    BYTE    window number on Switch Window menu
  6020.  D6h  5 BYTEs    ???
  6021.  DBh    WORD    offset in common memory of ??? object
  6022.  DDh  2 BYTEs    ???
  6023.  DFh    WORD    API level for task
  6024.  E1h    WORD    offset in common memory of object task is waiting on if task
  6025.           status is 'waiting', else 0000h
  6026.  E7h    WORD    segment of ???
  6027.  E9h 4    BYTEs    ???
  6028.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  6029.  F1h 12 BYTEs    ???
  6030.  FBh    WORD    ???
  6031.  FDh    BYTE    ???
  6032.  FFh 12 BYTEs    ???
  6033. 10Bh    DWORD    pointer to process record (see #0308,#0309)
  6034. 10Dh 10 BYTEs    ???
  6035. 119h    DWORD    SS:SP for ???
  6036. 11Dh  4 BYTEs    ???
  6037. 121h    DWORD    pointer to ???
  6038. 125h 25 BYTEs    ???
  6039. 13Eh    DWORD    pointer to ??? in system memory
  6040. ---v2.22
  6041. 142h  3 BYTEs    ???
  6042. 145h        task's default keyboard object
  6043. ---v2.42
  6044. 142h    DWORD    pointer to first task instance data record in system memory
  6045. 148h    DWORD    pointer to last task instance data record in system memory
  6046.         (see #0310)
  6047. 14Ah    BYTE    ???
  6048. 14Dh 42 BYTEs    task's default keyboard object
  6049. 177h 32 BYTEs    task's ObjectQ object
  6050. 197h 41 BYTEs    task's default mailbox object
  6051. 1C0h 24 BYTEs    first register save record
  6052. 450h    --    default top of private stack
  6053. ---v2.52 (probably all DV/X)
  6054. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  6055.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  6056.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  6057.   0000h even when waiting.
  6058. ---v2.60
  6059.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  6060.  CDh    WORD    offset in common memory of ??? object
  6061.  D0h    BYTE    ??? flag
  6062.  D1h    WORD    offset in common memory of default notify window for task
  6063.           or 0000h if none
  6064.  D3h  4 BYTEs    ???
  6065.  D7h    BYTE    window number on Switch Window menu
  6066.  D8h  5 BYTEs    ???
  6067.  DDh    WORD    offset in common memory of ??? object
  6068.  DFh  2 BYTEs    ???
  6069.  E1h    WORD    API level for task
  6070.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  6071.           that task is waiting on, else 0000h. (Task with CPU also
  6072.           has 0000h here)
  6073.  E9h    WORD    segment of ???
  6074.  EBh 4    BYTEs    ???
  6075.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  6076.  F3h 12 BYTEs    ???
  6077.  FDh    WORD    ???
  6078.  FFh    BYTE    ???
  6079. 101h  8 BYTEs    ???
  6080. 109h    DWORD    pointer to process record in system memory
  6081. 10Dh 14 BYTEs  ???
  6082. 11Bh    DWORD    SS:SP for ???
  6083. 11Fh  4 BYTEs    ???
  6084. 123h    DWORD    pointer to ???
  6085. 127h 25 BYTEs    ???
  6086. 140h    DWORD    pointer to ??? in system memory
  6087. 144h    DWORD    pointer to first task instance data record in system memory
  6088. 148h    DWORD    pointer to last task instance data record in system memory
  6089.         (from INT 15/AX=DE27h) (see #0310)
  6090. 14Ch    BYTE    ???
  6091. 14Eh 42 BYTEs    task's default keyboard object
  6092. 179h 32 BYTEs    task's ObjectQ object
  6093. 199h 41 BYTEs    task's default mailbox object
  6094. 1C2h 24 BYTEs    first register save record
  6095. 452h    --    default top of private stack
  6096.  
  6097. Format of DESQview Register Save Record:
  6098. Offset    Size    Description    (Table 0305)
  6099.  00h    WORD    AX
  6100.  02h    WORD    BX
  6101.  04h    WORD    CX
  6102.  06h    WORD    DX
  6103.  08h    WORD    DI
  6104.  0Ah    WORD    SI
  6105.  0Eh    WORD    DS
  6106.  10h    WORD    ES
  6107.  12h    DWORD    return address
  6108.  16h    WORD    original flags
  6109.  
  6110. Format of DESQview mapping context record:
  6111. Offset    Size    Description    (Table 0306)
  6112.  00h    WORD    lowest segment in process's memory
  6113.         (often start of system memory chain)
  6114.  02h    WORD    size of process's memory in paragraphs
  6115.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  6116.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  6117.  06h  2 BYTEs    ???
  6118.  08h    WORD    EMS handle if in EMS, else 0
  6119.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  6120.  0Ch    WORD    segment of system memory block that contains process record,
  6121.           referenced from segment of start of system memory chain
  6122.  0Eh    BYTE    ???
  6123.  0Fh    WORD    size of system memory block that contains process record
  6124.           and DOS memory in paragraphs
  6125.  11h    BYTE    bit flags
  6126.         Bit 0: Swapped out???
  6127.         Bit 1: ???
  6128.         Bit 2: Swapped out???
  6129.  12h    BYTE    ???
  6130.  13h    BYTE    reference count
  6131.  ---v2.31
  6132.  14h 10 BYTEs    ???
  6133.  1Eh    WORD    segment of process record
  6134.  20h  2 BYTEs    ???
  6135.  22h    WORD    segment of ???    (in first free system memory block???)
  6136.  24h    WORD    segment of end of system memory chain
  6137.  26h    WORD    segment of start of system memory chain
  6138.  28h  8 BYTEs    ???
  6139.  2Ah    DWORD    pointer to ??? (process record???)
  6140.  2Dh 10 BYTEs    ???
  6141.  37h    BYTE    lowest interrupt vector to save on context switch
  6142.  38h    BYTE    highest interrupt vector to save on context switch
  6143.  39h    WORD    offset in common memory of main task with this context
  6144.  3Ah 12 BYTEs    ???
  6145.  46h    BYTE    internal mapping context number
  6146.  47h 12 BYTEs    ???
  6147.  ---v2.5x-2.60
  6148.  14h  6 BYTEs    ???
  6149.  1Ah    WORD    segment of process record
  6150.  1Ch  2 BYTEs    ???
  6151.  1Eh    WORD    segment of first free system memory block
  6152.  20h    WORD    segment of start of system memory chain
  6153.  22h    WORD    segment of end of system memory chain
  6154.  24h 8    BYTEs    ???
  6155.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  6156.  30h 3    BYTEs    ???
  6157.  33h    WORD    Offset in common memory of main task with this context
  6158.  35h 7    BYTEs    ???
  6159.  3Ch    BYTE    internal mapping context number
  6160.  3Dh 14 BYTEs    ???
  6161.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  6162.  4Dh    BYTE    ??? (flag???)
  6163.  ---v2.53 (2.5x???)
  6164.  4Eh 12 BYTEs    ???
  6165.  ---v2.60
  6166.  4Eh    WORD    segment of script buffer (see #0311)
  6167.  50h  6 BYTEs    ???
  6168.  
  6169. Format of DESQview Internal Window Record (v2.31-2.60):
  6170. Offset    Size    Description    (Table 0307)
  6171.  00h    BYTE    internal window number???
  6172.  01h    BYTE    display page???
  6173.  02h    BYTE    video mode
  6174.  03h  3 BYTEs    ???
  6175.  06h    BYTE    logical window height
  6176.  07h    BYTE    logical window width
  6177.  08h    DWORD    pointer to text video buffer
  6178.  0Ch 116 BYTEs    ???
  6179.  
  6180. Format of DESQview process record (v2.31):
  6181. Offset    Size    Description    (Table 0308)
  6182. -470h 13 BYTEs    filename of ??? Script
  6183. -463h 1117 BYTEs ??? (script buffer???)
  6184.  -6h  6 BYTEs    ???
  6185.  00h    WORD    segment of parent PSP in process
  6186.  02h  5 BYTEs    ???
  6187.  07h    WORD    segment of current PSP in process
  6188.  09h    WORD    segment of first MCB in process
  6189.  0Bh 13 BYTEs    ???
  6190.  18h 1024 BYTEs process's interrupt vector table
  6191. 418h 376 BYTEs    ???
  6192. 590h        first MCB in process
  6193.  
  6194. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  6195. Offset    Size    Description    (Table 0309)
  6196.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  6197.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  6198. 11Ch    WORD    segment of parent PSP in process
  6199. 11Eh  4 BYTEs    ???
  6200. 122h    WORD    segment of current PSP
  6201. 124h    WORD    segment of current PSP
  6202. 126h    WORD    segment of first MCB in process
  6203. 128h  4 BYTEs    ???
  6204. 12Ch    DWORD    pointer to first process instance data record in system memory
  6205. 130h    DWORD    pointer to last process instance data record in system memory
  6206.         (from INT 15/AX=DE27h) (see #0310)
  6207. 134h  8 BYTEs    ???
  6208. 13Ch    WORD    size of current environment
  6209. 13Eh    WORD    segment of current environment
  6210. 140h    WORD    segment of current PSP
  6211. 142h    DWORD    entry point of current program
  6212. 146h 10 BYTEs    ???
  6213. ---v2.52 (v2.5x???)
  6214. 150h    BYTE    ???
  6215. 151h    WORD    segment of parent PSP in process
  6216. 153h    WORD    ???
  6217. 155h    WORD    ???
  6218. 157h    WORD    ???
  6219. 159h  4 BYTEs    ???
  6220. 15Dh    WORD    segment of current environment
  6221. 15Fh    WORD    segment of current PSP
  6222. 161h    WORD    segment of ???
  6223. 162h    WORD    ???
  6224. 164h  3 BYTEs    ???
  6225. 168h 1024 BYTEs process's interrupt vector table
  6226. 568h 120 BYTEs    ???
  6227. 5E0h        first MCB in process
  6228. ---v2.60
  6229. 150h    WORD    segment of parent PSP in process
  6230. 152h    WORD    ???
  6231. 154h    WORD    ???
  6232. 156h    WORD    ???
  6233. 158h  4 BYTEs    ???
  6234. 15Ch    WORD    segment of current environment
  6235. 15Eh    WORD    segment of current PSP
  6236. 160h    WORD    segment of ???
  6237. 162h    WORD    ???
  6238. 164h 1024 BYTEs process's interrupt vector table
  6239. 564h 108 BYTEs    ???
  6240. 5D0h        first MCB in process
  6241.  
  6242. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  6243. Offset    Size    Description    (Table 0310)
  6244.  00h    DWORD    pointer to next record of same type or 00000000
  6245.  04h    DWORD    pointer to previous record of same type or 00000000
  6246.  08h    DWORD    pointer to source area of memory during restore state
  6247.  0Ch    WORD    number of bytes to save/restore
  6248.  0Eh    DWORD    pointer to destination area of memory during restore state
  6249.  12h    WORD    ??? (0)
  6250.  14h  N BYTEs    source memory buffer during restore state
  6251.  
  6252. Format of DESQview script buffer (v2.60):
  6253. Offset    Size    Description    (Table 0311)
  6254.  00h 13 BYTEs    ASCIZ Script filename
  6255.  0Dh 80 BYTEs    ???
  6256.  5Eh  N BYTEs    script records (see #0312)
  6257.  
  6258. Format of one DESQview script record (v2.60):
  6259. Offset    Size    Description    (Table 0312)
  6260.  00h    BYTE    signature 12h
  6261.  01h 18 BYTEs    blank-padded script name
  6262.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  6263.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  6264.  15h    BYTE    ???
  6265.  16h    WORD    size of script in bytes
  6266.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  6267.           scan code of non-ASCII key)
  6268.  
  6269. Format of DESQview Common Memory Header (v2.31-2.60):
  6270. Offset    Size    Description    (Table 0313)
  6271.  00h    WORD    offset of lowest used block
  6272.  02h    WORD    bytes of commom memory, including header
  6273.  04h    WORD    offset of first free block
  6274.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  6275. Note:    the above is located at the beginning of the commom memory segment
  6276. SeeAlso: #0314,#0315,#0323
  6277.  
  6278. Format of DESQview Free block header:
  6279. Offset    Size    Description    (Table 0314)
  6280.  00h    WORD    size of block in bytes including header
  6281.  02h    WORD    offset of next free block
  6282.  04h  N BYTEs    free block
  6283. SeeAlso: #0313,#0315
  6284.  
  6285. Format of DESQview Used block header:
  6286. Offset    Size    Description    (Table 0315)
  6287.  00h    WORD    size of block in bytes including header
  6288.  02h  N BYTEs    used block
  6289. SeeAlso: #0313,#0314
  6290. --------Q-151017-----------------------------
  6291. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  6292.     AX = 1017h
  6293. Return: pops up "Programming error" window in DV 2.x
  6294. --------Q-151018-----------------------------
  6295. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  6296.     AX = 1018h
  6297.     BH = column
  6298.     BL = row
  6299.     ES = segment of object handle for window below which to search
  6300.          0000h = start search with topmost window
  6301. Return: ES = segment of object handle for window which is visible at the
  6302.            indicated position, or covered by indicated window
  6303.         0000h if no window
  6304. SeeAlso: AX=1023h,AX=1024h
  6305. --------Q-151019-----------------------------
  6306. INT 15 - TopView - "SOUND" - MAKE TONE
  6307.     AX = 1019h
  6308.     BX = frequency in Hertz (0000h = silence)
  6309.     CX = duration in clock ticks (18.2 ticks/sec)
  6310. Return: immediately, tone continues to completion
  6311. Notes:    if another tone is already playing, the new tone does not start until
  6312.       completion of the previous one.  Up to 32 tones may be queued before
  6313.       the process is blocked until a note completes.
  6314.     in DV 2.00, the lowest tone allowed is 20 Hz
  6315.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  6316.       notes are also cancelled
  6317. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  6318. --------Q-15101A-----------------------------
  6319. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  6320.     AX = 101Ah
  6321. Return: stack switched
  6322. Notes:    this call may not be nested; a second call must be preceded by a call
  6323.       to "USTACK" (AX=1025h)
  6324.     while TopView requires many API calls to be executed while on the
  6325.       task's internal stack, DESQview allows those calls to be executed
  6326.       regardless of the current stack
  6327. SeeAlso: AX=1025h
  6328. --------Q-15101B-----------------------------
  6329. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  6330.     AX = 101Bh
  6331. Return: task-switching temporarily disabled
  6332. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  6333.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  6334.       will again be disabled)
  6335.     suspends the caller until DOS is free
  6336. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  6337. SeeAlso: INT 60/DI=0602h
  6338. --------Q-15101C-----------------------------
  6339. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  6340.     AX = 101Ch
  6341. Return: task-switching enabled
  6342. Note:    this API call may be made from within a hardware interrupt handler
  6343. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  6344. --------Q-15101D-----------------------------
  6345. INT 15 - TopView - "STOP" - STOP TASK
  6346.     AX = 101Dh
  6347.     ES = segment of object handle for task to be stopped
  6348.          (== handle of main window for that task)
  6349. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  6350. Note:    once a task has been stopped, additional "STOP"s are ignored
  6351. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  6352.       current task
  6353. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  6354. --------Q-15101E-----------------------------
  6355. INT 15 - TopView - "START" - START TASK
  6356.     AX = 101Eh
  6357.     ES = segment of object handle for task to be started
  6358.          (== handle of main window for that task)
  6359. Return: indicated task is started up again
  6360. Note:    once a task has been started, additional "START"s are ignored
  6361. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  6362. --------Q-15101F-----------------------------
  6363. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  6364.     AX = 101Fh
  6365.     BX = bit fields
  6366.          bits 0-12: number of characters to display
  6367.          bits 13,14: which mouse button may be pressed to remove window
  6368.              00 = either
  6369.              01 = left
  6370.              10 = right
  6371.              11 = either
  6372.          bit 15: beep if 1
  6373.     ES:DI -> text of message
  6374.     CH = width of error window (0 = default)
  6375.     CL = height of error window (0 = default)
  6376.     DX = segment of object handle
  6377. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  6378. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  6379. --------Q-151020-----------------------------
  6380. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  6381.     AX = 1020h
  6382. Return: pops up "Programming error" window in DV v2.00+
  6383. --------Q-151021-----------------------------
  6384. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  6385.     AX = 1021h
  6386.     BX = segment of object handle for task to interrupt (not self)
  6387.     DX:CX -> FAR routine to jump to next time task is run
  6388. Return: nothing
  6389. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  6390.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  6391.       needs to be preserved
  6392.     multiple PGMINTs to a single task are processed last-in first-out
  6393.     if the other task is in a DOS or DV API call, the interruption will
  6394.       occur on return from that call
  6395. --------Q-151022BX0000-----------------------
  6396. INT 15 - TopView - "GETVER" - GET VERSION
  6397.     AX = 1022h
  6398.     BX = 0000h
  6399. Return: BX nonzero, TopView or compatible loaded
  6400.     (BL = major version, BH = minor version)
  6401. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  6402. --------Q-151023-----------------------------
  6403. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  6404.     AX = 1023h
  6405.     BX = segment of object handle for parent window within which to
  6406.            position the window (0 = full screen)
  6407.     ES = segment of object handle for window to be positioned
  6408.     DL = general window position (see #0316)
  6409.     CH = number of columns to offset from position specified by DL
  6410.     CL = number of rows to offset from position specified by DL
  6411. Return: nothing
  6412.  
  6413. Bitfields for TopView general window position:
  6414. Bit(s)    Description    (Table 0316)
  6415.  0,1    horizontal position
  6416.     00 = current, 01 = center, 10 = left, 11 = right
  6417.  2,3    vertical position
  6418.     00 = current, 01 = center, 10 = top, 11 = bottom
  6419.  4    don't redraw screen if set
  6420.  5-7    not used
  6421. --------Q-151024-----------------------------
  6422. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  6423.     AX = 1024h
  6424.     BX = segment of object handle for window
  6425.           (0 = use default)
  6426. Return: ES:DI -> virtual screen
  6427.     CX = size of virtual screen in bytes
  6428.     DL = 00h text screen
  6429.          01h graphics screen
  6430. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  6431. --------Q-151025-----------------------------
  6432. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  6433.     AX = 1025h
  6434. Return: stack switched back
  6435. Notes:    call only after having switched to internal stack with AX=101Ah
  6436.     while TopView requires many API calls to be executed while on the
  6437.       task's private stack, DESQview allows those calls to be executed
  6438.       regardless of the current stack
  6439. SeeAlso: AX=101Ah
  6440. --------Q-1510-------------------------------
  6441. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  6442.     AH = 10h
  6443.     AL = 26h thru 2Ah
  6444. Return: pops up "Programming error" window in DV 2.x
  6445. --------Q-15102B-----------------------------
  6446. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  6447.     AX = 102Bh
  6448.     BX = segment of object handle for task
  6449. Return: nothing
  6450. Note:    forces a task which is waiting on its objectq to continue by placing
  6451.       the handle for the task on the objectq
  6452. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  6453. --------Q-15102C-----------------------------
  6454. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  6455.     AX = 102Ch
  6456.     ES:DI -> contents of .PIF/.DVP file (see #0317)
  6457.     BX = size of .PIF/.DVP info
  6458. Return: BX = segment of object handle for new task
  6459.          0000h on error
  6460. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  6461.  
  6462. Format of .PIF/.DVP file:
  6463. Offset    Size    Description    (Table 0317)
  6464.  00h    BYTE    reserved (0)
  6465.  01h    BYTE    checksum of bytes 02h through 170h
  6466.  02h 30 BYTEs    blank-padded program title
  6467.  20h    WORD    maximum memory to allocate to partition in KB
  6468.  22h    WORD    minimum memory required in KB
  6469.  24h 64 BYTEs    ASCIZ program pathname
  6470.  64h    BYTE    default drive letter ('A',...)
  6471.  65h 64 BYTEs    ASCIZ default directory name
  6472.  A5h 64 BYTEs    ASCIZ program parameters
  6473.  E5h    BYTE    initial screen mode (0-7) (see also offset 189h)
  6474.  E6h    BYTE    number of text pages used
  6475.  E7h    BYTE    number of first interrupt to save
  6476.  E8h    BYTE    number of last interrupt to save
  6477.  E9h    BYTE    rows in virtual screen buffer
  6478.  EAh    BYTE    columns in virtual screen buffer
  6479.  EBh    BYTE    initial window position, row
  6480.  ECh    BYTE    initial window position, column
  6481.  EDh    WORD    system memory in KB
  6482.  EFh 64 BYTEs    ASCIZ shared program name
  6483. 12Fh 64 BYTEs    ASCIZ shared program data file
  6484. 16Fh    BYTE    program flags 1 (see #0318)
  6485. 170h    BYTE    flags2
  6486.         bit 6: uses command-line parameters in field at A5h
  6487.         bit 5: swaps interrupt vectors
  6488. ---information unique to .DVP files---
  6489. 171h  2 BYTEs    keys to use on open menu
  6490. 173h    WORD    size of script buffer in bytes
  6491. 175h    WORD    automatically give up CPU after this many tests for keyboard
  6492.           input in one clock tick (default 0 = never)
  6493. 177h    BYTE    nonzero = "uses own colors"
  6494. 178h    BYTE    nonzero if application swappable
  6495. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  6496.         in actual .DVP files, frequently 01h
  6497. 17Ch    BYTE    nonzero to automatically close on exit (see also #0320)
  6498. 17Dh    BYTE    nonzero if copy-protect floppy is required
  6499. ---information unique to DESQview 2.0+---
  6500. 17Eh    BYTE    .DVP version number
  6501.         00h DESQview v1.2+
  6502.         01h DESQview v2.0+
  6503.         02h DESQview v2.2+
  6504. 17Fh    BYTE    reserved (0)
  6505. 180h    BYTE    initial number of rows in physical window
  6506. 181h    BYTE    initial number of columns in physical window
  6507. 182h    WORD    maximum expanded memory to allow, in KB
  6508. 184h    BYTE    DVP program flags 3 (see #0319)
  6509. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  6510.         (see #0321)
  6511. 186h    BYTE    number of graphics pages used
  6512. 187h    WORD    extra system memory size
  6513. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  6514. ---information unique to DESQview 2.2+---
  6515. 18Ah    BYTE    serial port usage
  6516.         FFh uses all serial ports
  6517.         00h no serial ports
  6518.         01h only COM1
  6519.         02h only COM2
  6520. 18Bh    BYTE    DVP program flags 4 (see #0320)
  6521. 18Ch    BYTE    protection level for 386 machines
  6522. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  6523. ---information unique to DESQview/X 1.0---
  6524. 18Dh    BYTE    X flags
  6525.         bits 3-7: unused (0)
  6526.         bit 2: don't display wait message when opening window
  6527.         bit 1: don't display DOS window
  6528.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  6529.                (NEWPROC) inherit DOS client layer usage
  6530. 18Eh    BYTE    X keyboard behavior (0-3)
  6531. 18Fh    BYTE    font scaling
  6532.         00h fixed fonts
  6533.         01h scalable fonts
  6534. 190h 10 BYTEs    reserved (0)
  6535. 19Ah    WORD    length of data follownig XDVP signature
  6536. 19Ch  4 BYTEs    signature "XDVP"
  6537. 1A0h  N BYTEs    list of variable length records (see #0322)
  6538.  
  6539. Bitfields for .PIF/.DVP program flags 1:
  6540. Bit(s)    Description    (Table 0318)
  6541.  7    writes text directly to screen
  6542.  6    runs in foreground only (see also offset 184h)
  6543.  5    uses math coprocessor
  6544.  4    accesses system keyboard buffer directly
  6545.  3-1    reserved (0)
  6546.  0    swappable
  6547. SeeAlso: #0317,#0319,#0320
  6548.  
  6549. Bitfields for .DVP program flags 3:
  6550. Bit(s)    Description    (Table 0319)
  6551.  7    automatically assign window position
  6552.  5    maximum memory value has been specified
  6553.  4    disallow "Close" command
  6554.  3    foreground-only when doing graphics
  6555.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  6556.  2    don't virtualize (see also #0320)
  6557.  1    foreground-only during DOS calls
  6558.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  6559. SeeAlso: #0317,#0318,#0320
  6560.  
  6561. Bitfields for .DVP program flags 4:
  6562. Bit(s)    Description    (Table 0320)
  6563.  7    automatically close application on exit if .COM or .EXE    specified
  6564.     (see also #0317 offset 17Ch)
  6565.  6    swappable if not using serial ports
  6566.  5    start program with window hidden (v2.26+)
  6567.  4    start program in background (v2.26+)
  6568.  3    virtualize text (see also #0319)
  6569.  2    virtualize graphics (see also #0319)
  6570.  1    share CPU when foreground
  6571.  0    share EGA when foreground and zoomed
  6572. SeeAlso: #0317,#0318,#0319
  6573.  
  6574. Bitfields for DESQview keyboard conflict level:
  6575. Bit(s)    Description    (Table 0321)
  6576.  3    save/restore entire INT 09 handler state every taskswtch
  6577.  2    take special precautions for programs which read the BIOS keyboard
  6578.       buffer directly from memory
  6579.  1    never indicate keystroke available during scripts/xfers
  6580.  0    only indicate keystroke available every sixth poll
  6581. SeeAlso: #0317
  6582.  
  6583. Format of DESQview/X variable length record:
  6584. Offset    Size    Description    (Table 0322)
  6585.  00h    WORD    length of following record, 0000h if end of record list
  6586.  02h    BYTE    record type
  6587.         01h script filename, up to 64 characters
  6588.         02h command-line parameters (allows >64 characters on cmdline)
  6589.         03h environment inheritance
  6590.         04h environment string
  6591.         05h starting window position
  6592. ---types 01h,02h,04h---
  6593.  03h  N BYTEs    ASCII data
  6594. ---type 03h---
  6595.  03h    BYTE    inheritance
  6596.         00h do not inherit
  6597.         01h inherit environment
  6598. ---type 05h---
  6599.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  6600.         starting row, starting column, starting height, starting width
  6601. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  6602.       only the last instance of each type is used; multiple occurrences of
  6603.       type 04h are concatenated
  6604. SeeAlso: #0317
  6605. --------Q-15102D-----------------------------
  6606. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  6607.     AX = 102Dh
  6608.     BL = subfunction
  6609.          00h determine whether using keyboard mouse
  6610.         Return: BL = 00h using real mouse
  6611.                  01h using keyboard mouse
  6612.          01h turn keyboard mouse on
  6613.          02h turn keyboard mouse off
  6614. --------Q-15102E-----------------------------
  6615. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  6616.     AX = 102Eh
  6617.     BX = number of bytes
  6618. Return: AX = status
  6619.         0000h successful
  6620.         ES:DI -> allocated system memory (see #0323)
  6621.         0001h failed
  6622.         ES:DI = 0000h:0000h
  6623. Note:    under DV 2.42, this call is identical to AX=1001h
  6624. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  6625.  
  6626. Format of DESQview system memory block header:
  6627. Offset    Size    Description    (Table 0323)
  6628.  00h    WORD    segment of next header or 0000h
  6629.  02h    WORD    segment of previous header or 0000h
  6630.  04h    WORD    size of block in paragraphs, including header
  6631.  06h    BYTE    availability flag (00h in use, 01h free)
  6632. Note:    this header is located one paragraph before the memory block proper
  6633. SeeAlso: #0313
  6634. --------Q-1511-------------------------------
  6635. INT 15 - TopView commands
  6636.     AH = 11h
  6637.     AL = various (except 17h)
  6638. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  6639.       see those below
  6640. SeeAlso: AH=DEh
  6641. --------T-1511-------------------------------
  6642. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  6643.     AH = 11h
  6644.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  6645.             request (max len = 127)
  6646. Return: AX = status (SYS_OK or SYS_ERROR)
  6647. SeeAlso: AH=0Ch"VMiX"
  6648. --------T-1511-------------------------------
  6649. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  6650.     AH = 11h
  6651. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  6652. SeeAlso: AH=12h"MultiDOS"
  6653. Index:    hotkeys;MultiDOS Plus
  6654. --------Q-151117BX0000-----------------------
  6655. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  6656.     AX = 1117h
  6657.     BX = 0000h    get current mapping context without setting
  6658.          nonzero    set new mapping context
  6659. Return: BX = mapping context in effect before call
  6660.     interrupts enabled
  6661. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  6662.     mapping contexts determine conventional-memory addressability; setting
  6663.       a mapping context ensures that the associated program and data areas
  6664.       are in memory for access.  Usable by drivers, TSRs and shared
  6665.       programs.
  6666.     caller need not be running under DESQview, but must ensure that the
  6667.       stack in use will not be mapped out by the call
  6668. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  6669. --------m-1511DE-----------------------------
  6670. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  6671.     AX = 11DEh
  6672. Return: CF clear if installed
  6673.         AX = segment at which QEXT.SYS is located
  6674. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  6675.       versions also implement the XMS standard
  6676. Note:    a private entry point (see #0324) may be found by searching the
  6677.       beginning of the returned segment for the signature string
  6678.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  6679.       prior to the signature contains the QEXT version number in BCD,
  6680.       and the word prior to that contains the offset within the QEXT
  6681.       code segment of the private entry point
  6682. SeeAlso: INT 2F/AX=4310h,INT 67/AH=3Fh
  6683.  
  6684. (Table 0324)
  6685. Call QEXT.SYS private entry point with:
  6686.     AH = 00h ???
  6687.     AH = nonzero ???
  6688. --------T-1512-------------------------------
  6689. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  6690.     AH = 12h
  6691.     STACK:    WORD    process ID
  6692. Return: AX = status (SYS_OK or SYS_ERROR)
  6693. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  6694. --------T-1512-------------------------------
  6695. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  6696.     AH = 12h
  6697. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  6698. SeeAlso: AH=11h"MultiDOS"
  6699. Index:    hotkeys;MultiDOS Plus
  6700. --------Q-1512--BH00-------------------------
  6701. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  6702.     AH = 12h
  6703.     BH = 00h
  6704.     BL = which handle to return
  6705.         00h handle in DWORD on top of stack
  6706.         01h current task's window handle
  6707.         02h given task's mailbox handle (task's handle on stack)
  6708.         03h current task's mailbox handle
  6709.         04h given task's keyboard handle (task's handle on stack)
  6710.         05h current task's keyboard object handle
  6711.         06h given task's OBJECTQ handle (task's handle on stack)
  6712.         07h current task's OBJECTQ handle
  6713.         08h      \
  6714.           thru > return 0000:0000 under DV < 2.26
  6715.         10h      /
  6716.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  6717.         0Dh (2.26+) task handle of owner (parent) of current task
  6718. Return: DWORD on top of stack is object handle
  6719. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  6720.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  6721.       window)
  6722. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  6723. --------Q-1512--BH01-------------------------
  6724. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  6725.     AH = 12h
  6726.     BH = 01h
  6727.     BL = object type to create
  6728.         00h (DV 2.0x only) handle is DWORD on top of stack
  6729.         01h (DV 2.0x only) use task's window handle
  6730.         02h (DV 2.0x only) given task's mailbox (task's handle on stack)
  6731.         03h (DV 2.0x only) current task's mailbox
  6732.         04h (DV 2.0x only) given task's keyboard (task's handle on stack)
  6733.         05h (DV 2.0x only) current task's keyboard object
  6734.         08h WINDOW class
  6735.         09h MAILBOX class
  6736.         0Ah KEYBOARD class
  6737.         0Bh TIMER object (counts down 32-bit time in 10ms increments)
  6738.         0Fh POINTER object
  6739.         10h PANEL object
  6740.     STACK: (if window object or WINDOW class)
  6741.            DWORD address to jump to (no new task if high word == 0)
  6742.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  6743.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  6744.            DWORD bytes system memory for input buffer for READ/READN
  6745.             (0 == none, -1 == default--same as logical window size)
  6746.            DWORD window size, columns
  6747.            DWORD window size, rows
  6748.            DWORD length of window title
  6749.            DWORD address of window title
  6750. Return: DWORD on top of stack is new object handle
  6751. Notes:    if a new task is created, it is started with
  6752.       AX = BX = SI = DI = BP = 0
  6753.       DX:CX = handle of parent task
  6754.       DS = ES = SS = segment of private stack (and new task's handle)
  6755.     new windows are orphans, inherit the colors/hidden status of the
  6756.       creating task's window, and are placed in the upper left hand corner
  6757.       of the screen but not automatically redrawn
  6758.     new keyboards are closed, and have all object bits cleared except for
  6759.       the hardware cursor bit
  6760. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  6761. --------Q-1512--BH02-------------------------
  6762. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  6763.     AH = 12h
  6764.     BH = 02h
  6765.     BL = object
  6766.         00h handle in DWORD on top of stack
  6767.         window: close window and free
  6768.         timer: free timer
  6769.         panel: free panel object
  6770.         pointer: free pointer
  6771.         01h task's window handle - kills task, never returns
  6772.         02h given task's mailbox (task's handle on top of stack)
  6773.         03h current task's mailbox
  6774.         04h given task's keyboard (task's handle on top of stack)
  6775.         05h current task's keyboard object
  6776. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  6777.       task windows also free any mailbox, objectq, and panel objects held
  6778.       by the task and any child tasks
  6779.     if the keyboard being freed is the default keyboard for a task, this
  6780.       call is equivalent to CLOSE
  6781.     panel and pointer objects are automatically closed if open
  6782. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  6783. --------Q-1512--BH03-------------------------
  6784. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  6785.     AH = 12h
  6786.     BH = 03h
  6787.     BL = object
  6788.         00h mailbox handle in DWORD on top of stack
  6789.         02h sender of last msg read from mailbox (task's handle on stack)
  6790.         03h sender of last msg read from current task's mailbox
  6791. Return: DWORD on stack is task handle of message sender
  6792. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  6793. --------Q-1512--BH03-------------------------
  6794. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  6795.     AH = 12h
  6796.     BH = 03h
  6797.     BL = window to be connected
  6798.         00h handle of window to be attached in DWORD on top of stack
  6799.         01h attach current task's main window
  6800.     STACK: DWORD handle of window to attach to or 00000000h to detach
  6801. Return: STACK popped
  6802. Notes:    when two windows are connected, both will move if the user moves either
  6803.     multiple windows may be attached to a single window, but each window
  6804.       may only be attached to one window at a time
  6805. SeeAlso: AH=12h/BH=83h
  6806. --------Q-1512--BX0300-----------------------
  6807. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  6808.     AH = 12h
  6809.     BX = 0300h
  6810.     STACK: DWORD handle of panel object (see #0325)
  6811. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  6812.            DWORD address of directory
  6813. Note:    a null string is returned if the object is not open
  6814. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  6815.  
  6816. Format of TopView panel file:
  6817. Offset    Size    Description    (Table 0325)
  6818.  00h  2 BYTEs    C0h C3h
  6819.  02h    BYTE    number of panels in file
  6820.  03h    for each panel in file:
  6821.         8 BYTEs  blank-padded panel name
  6822.           DWORD  panel offset in file
  6823.           WORD   panel length
  6824.     data for panels (each consists of one or more window/query/manager
  6825.       streams); first byte of each panel must be 1Bh, fifth byte must be
  6826.       E5h
  6827. --------Q-1512--BH04-------------------------
  6828. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  6829.     AH = 12h
  6830.     BH = 04h
  6831.     BL = window to read from
  6832.         00h handle is DWORD on top of stack
  6833.         01h use calling task's default window
  6834.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6835.         0Dh (DV 2.26+) default window of parent task of current task
  6836. Return: STACK:    DWORD number of bytes read
  6837.         DWORD address of buffer
  6838. Notes:    reading starts at the current logical cursor position; the cursor is
  6839.       updated to point at the character following the last one read
  6840.     any translucent blanks (FFh) which are visible on screen are changed
  6841.       to the character which is seen through them
  6842.     the string produced by the read is placed in an input buffer which may
  6843.       be reused by the next READ or READN of a window
  6844.     window stream opcodes D8h and D9h determine whether the read returns
  6845.       characters or attributes
  6846. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  6847. --------Q-1512--BH04-------------------------
  6848. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  6849.     AH = 12h
  6850.     BH = 04h
  6851.     BL = object
  6852.         00h handle is DWORD on top of stack
  6853.         mailbox: wait for and get next message
  6854.         keyboard: wait for and get pointer to next input buffer
  6855.         pointer: wait for and get next message
  6856.         02h get next message from mailbox (task's handle on top of stack)
  6857.         03h get next message from current task's mailbox
  6858.         04h get the next input from keyboard (handle on top of stack)
  6859.         05h get the next input from task's default keyboard
  6860.         06h wait for input from any object in OBJECTQ (handle on stack)
  6861.         07h wait for input from any object in task's default OBJECTQ
  6862. Return: STACK: (if objectq) DWORD handle of object with input
  6863.            (otherwise)  DWORD number of bytes
  6864.                 DWORD address of pointer message (see #0326)
  6865. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  6866.       containing the character code as returned by the BIOS; the BIOS scan
  6867.       code is available via the STATUS call if the character is zero
  6868.     for a keyboard in field mode, the input buffer format is determined
  6869.       by the field table header for the window the keyboard is attached to
  6870.     keyboard input buffers and mailbox message buffers may be invalidated
  6871.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  6872. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  6873.  
  6874. Format of DESQview pointer message:
  6875. Offset    Size    Description    (Table 0326)
  6876.  00h    WORD    row
  6877.  02h    WORD    column
  6878.  04h    BYTE    status (see #0327)
  6879.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  6880.  
  6881. Bitfields for DESQview pointer status:
  6882. Bit(s)    Description    (Table 0327)
  6883.  7-2    number of clicks-1 if multiple-click mode active
  6884.  7    set when press/release mode active and button pressed
  6885.  6    set when press/release mode active and button released
  6886.  1-0    button pressed (00=none,01=button1,10=button2)
  6887. --------Q-1512--BX0400-----------------------
  6888. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  6889.     AH = 12h
  6890.     BX = 0400h
  6891.     STACK: DWORD timer's handle
  6892. Return: after timer expires
  6893.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  6894. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  6895. --------Q-1512--BX0400-----------------------
  6896. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  6897.     AH = 12h
  6898.     BX = 0400h
  6899.     STACK: DWORD handle of panel object
  6900.            DWORD window's handle (or 0 for current task's window)
  6901.            DWORD length of panel name
  6902.            DWORD pointer to panel name
  6903. Return: STACK: DWORD handle of window which was used
  6904.            DWORD handle of keyboard or 0
  6905. Notes:    status of APPLY may be checked with STATUS message
  6906.     panel MUST have the following format
  6907.       first byte must be 1Bh (i.e. must start with a stream)
  6908.       first opcode in stream must be E5h
  6909.         single byte arg of opcode is interpreted thus:
  6910.           bits 7,6    11 means create new window
  6911.             10 means create new field table for existing window
  6912.             01 means use existing window and field table
  6913.           bit 5 if set, panel contains a field table
  6914.             (creates a new keyboard and puts it in field mode)
  6915.           bit 4 if set, panel contains input fields
  6916.           bit 3 if set, panel contains select fields but no input fields
  6917.     if the panel contains input or select fields, a keyboard handle is
  6918.       returned; either the window's current open keyboard or a
  6919.       newly-created keyboard object.  The caller should read that keyboard
  6920.       to obtain input from the panel.
  6921. SeeAlso: AH=12h/BH=84h
  6922. --------Q-1512--BH05------------------------
  6923. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  6924.     AH = 12h
  6925.     BH = 05h
  6926.     BL = object
  6927.         00h handle is DWORD on top of stack
  6928.         timer: start timer to end at a specified time
  6929.         keyboard: add input buffer to queue
  6930.         pointer: move pointer icon to specified position
  6931.         02h send message by value/status=0 to mbox (task's handle on stack)
  6932.         03h send message by value/status=0 to current task's mailbox
  6933.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  6934.         05h add input buffer to task's default KEYBOARD queue
  6935.         06h add an object to OBJECTQ (handle on top of stack)
  6936.         07h add an object to task's default OBJECTQ
  6937.     STACK: (if mailbox)  DWORD length
  6938.                  DWORD address
  6939.            (if keyboard) DWORD status (scan code in keystroke mode)
  6940.                  DWORD length (should be 1 in keystroke mode)
  6941.                  DWORD address
  6942.            (if objectq)  DWORD handle of object to add
  6943.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  6944.                    only accurate to 1/18 sec)
  6945.            (if pointer)  DWORD column relative to origin of window
  6946.                  DWORD row relative to origin of window
  6947. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  6948.     the data and status written to a keyboard object must match the format
  6949.       returned by the keyboard object in the current mode
  6950.     the pointer position is scaled according to the current scaling factors
  6951. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  6952. --------Q-1512--BH05-------------------------
  6953. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  6954.     AH = 12h
  6955.     BH = 05h
  6956.     BL = window to write to
  6957.         00h DWORD on top of stack is window handle
  6958.         01h write string to task's default window
  6959.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6960.         0Dh (DV 2.26+) default window of parent of current task
  6961.     STACK: DWORD object handle if handle passed on stack
  6962.            DWORD total length of string (high word == 0)
  6963.            DWORD address of string to display (see #0328)
  6964. Return: indicated actions performed
  6965.     a. non-control characters are displayed (opcodes DEh and DFh control
  6966.        whether the attributes are left or changed to the current attrib)
  6967.     b. CR/LF/BS/Tab cause the usual cursor movement
  6968.     c. ESC starts a data structure with additional commands if following
  6969.        byte is less than 20h; otherwise, it is written to the window
  6970.     STACK:    DWORD handle of new window if window stream opcode E6h
  6971.         else nothing
  6972. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  6973.  
  6974. Format of stream data structure:
  6975. Offset    Size    Description    (Table 0328)
  6976.  00h    BYTE    1Bh magic value identifying start of stream
  6977.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  6978.         (see #0329,#0335,#0336,#0337)
  6979.  02h    WORD    length of remainder of stream in bytes
  6980.     var-length fields follow, each an OPCODE followed by
  6981.          zero or more args
  6982.  
  6983. (Table 0329)
  6984. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  6985. Opcodes:args
  6986.  00h  display 20h blanks with the default attribute
  6987.  01h-1Fh display OPCODE blanks with the default attribute
  6988.  20h  display char with default attribute 20h times
  6989.     BYTE char to repeat
  6990.  21h-3Fh display char with default attribute OPCODE-20h times
  6991.     BYTE char to repeat
  6992.  40h  display 20h blanks with specified attribute
  6993.     BYTE attribute of blanks
  6994.  41h-5Fh display OPCODE-40h blanks with specified attribute
  6995.     BYTE attribute of blanks
  6996.  60h  display next 20h characters
  6997.     20h BYTEs characters to display
  6998.  61h-7Fh display next OPCODE-60h characters
  6999.     N BYTEs characters to display
  7000.  80h-87h display N blanks with default attribute
  7001.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  7002.           [000h means 800h]
  7003.  88h-8Fh display N copies of the character
  7004.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  7005.           [000h means 800h]
  7006.     BYTE character to repeat
  7007.  90h-97h display N blanks with specified attribute
  7008.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  7009.           [000h means 800h]
  7010.     BYTE attribute
  7011.  98h-9Fh display string at logical cursor pos
  7012.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  7013.           [000h means 800h]
  7014.     N BYTEs string to display
  7015.  A0h  set logical cursor row
  7016.     BYTE row number (0 is top)
  7017.  A1h  set logical cursor column
  7018.     BYTE column number (0 is leftmost)
  7019.  A2h  set top edge of scrolling region
  7020.     BYTE row
  7021.  A3h  set left edge of scrolling region
  7022.     BYTE column
  7023.  A4h  set row of physical window position
  7024.     BYTE line
  7025.  A5h  set column of physical window position
  7026.     BYTE column
  7027.  A6h  set height of physical window
  7028.     BYTE number of rows
  7029.  A7h  set width of physical window
  7030.     BYTE number of columns
  7031.  A8h  set viewport row
  7032.     BYTE row
  7033.  A9h  set viewport column
  7034.     BYTE column
  7035.  AAh  set virtual screen height [contents of window unpredictable after]
  7036.     BYTE rows
  7037.  ABh  set virtual screen width [contents of window unpredictable after]
  7038.     BYTE columns
  7039.  ACh-AEh unused
  7040.  AFh  set compatible/preferred video modes
  7041.     BYTE compatibility/preference mask
  7042.         bit 7    compatible with monochrome
  7043.         bit 6    compatible with color text, EGA/VGA graphics
  7044.         bit 5    compatible with medium-resolution CGA graphics
  7045.         bit 4    compatible with high-resolution CGA graphics
  7046.         bit 3    prefer monochrome
  7047.         bit 2    prefer color text, EGA/VGA graphics
  7048.         bit 1    prefer medium-resolution CGA graphics
  7049.         bit 0    prefer high-resolution CGA graphics
  7050.  B0h  move logical cursor down
  7051.     BYTE number of rows (signed, negative values move up)
  7052.         [if rows=0 and hardware cursor owner, update hardware cursor]
  7053.  B1h  move logical cursor right
  7054.     BYTE number of columns (signed, negative values move left)
  7055.         [if cols=0 and hardware cursor owner, update hardware cursor]
  7056.  B2h  shift top edge of scrolling region
  7057.     BYTE number of rows (signed)
  7058.  B3h  shift left edge of scrolling region
  7059.     BYTE number of columns (signed)
  7060.  B4h  shift physical window down
  7061.     BYTE number of lines (signed)
  7062.  B5h  shift physical window right
  7063.     BYTE number of columns (signed)
  7064.  B6h  expand physical window vertically
  7065.     BYTE number of lines (signed)
  7066.  B7h  expand physical window horizontally
  7067.     BYTE number of columns (signed)
  7068.  B8h  adjust viewport row
  7069.     BYTE number of rows (signed)
  7070.  B9h  adjust viewport column
  7071.     BYTE number of columns (signed)
  7072.  BAh  adjust virtual screen height [contents of window unpredict after]
  7073.     BYTE number of rows to increase (signed)
  7074.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  7075.     BYTE number of columns to increase (signed)
  7076.  BCh-BFh reserved (currently unused)
  7077.  C0h  set logical cursor position
  7078.     BYTE row number (0 is top border)
  7079.     BYTE column number (0 is left border)
  7080.  C1h  set top left corner of scrolling region
  7081.     BYTE row
  7082.     BYTE column
  7083.  C2h  set physical window pos
  7084.     BYTE upper left row (no top border if 0)
  7085.     BYTE upper left column (no left border if 0)
  7086.  C3h  set current window size
  7087.     BYTE number of rows
  7088.     BYTE number of columns
  7089.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  7090.       in window)
  7091.     BYTE row
  7092.     BYTE column
  7093.  C5h  set size of virtual screen [contents unpredictable afterwards]
  7094.     BYTE number of rows
  7095.     BYTE number of columns
  7096.  C6h  unused
  7097.  C7h  unused
  7098.  C8h  set logical cursor relative to current position
  7099.     BYTE number of rows to move down (signed)
  7100.     BYTE number of columns to move right (signed)
  7101.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  7102.  C9h  shift top left corner of scrolling region
  7103.     BYTE number of rows (signed)
  7104.     BYTE number of columns (signed)
  7105.  CAh  set window pos relative to current position
  7106.     BYTE number of rows to shift down (signed)
  7107.     BYTE number of columns to shift right (signed)
  7108.  CBh  set window size relative to current size
  7109.     BYTE number of rows to expand (signed)
  7110.     BYTE number of cols to expand (signed)
  7111.  CCh  shift viewport relative to current position
  7112.     BYTE rows to shift (signed)
  7113.     BYTE cols to shift (signed)
  7114.  CDh  resize virtual screen
  7115.     BYTE number of rows to expand (signed)
  7116.     BYTE number of columns to expand (signed)
  7117.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  7118.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  7119.  D0h  allow window frame to extend beyond screen
  7120.  D1h  always display a complete frame, even if window extends beyond edge of
  7121.       screen
  7122.  D2h  allow DV to change logical colors on video mode switch (default)
  7123.  D3h  application changes logical attributes
  7124.  D4h  window is visible [must redraw to actually make visible]
  7125.  D5h  window is hidden [must redraw to actually remove]
  7126.  D6h  window has frame (default)
  7127.  D7h  window unframed [must redraw to actually remove frame]
  7128.  D8h  READ/READN will read characters from window (default)
  7129.  D9h  READ/READN will read attributes from window
  7130.  DAh  use logical attributes, which may be remapped (see #0330)
  7131.  DBh  use physical attributes for characters
  7132.  DCh  enable special actions for control characters (default)
  7133.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  7134.       call
  7135.  DEh  write both character and attribute (default)
  7136.  DFh  write character only, leave attribute untouched
  7137.  E0h  repeat following commands through E1h opcode
  7138.     BYTE number of times to repeat (00h means 256 times)
  7139.  E1h  end of commands to repeat, start repeating them
  7140.  E2h  set current output color
  7141.     BYTE color
  7142.  E3h  clear virtual screen from scroll origin to end using current color
  7143.  E4h  redraw window
  7144.  E5h  select menu style
  7145.     BYTE style (normally 18h)
  7146.         bits 5,4 = 01 use two-letter menu entries for remainder of
  7147.           this stream
  7148.  E5h  (panel file only)
  7149.     BYTE modifier
  7150.         bits 7,6 = 11 panel stream creates new window
  7151.              = 10 panel defines new field table for existing window
  7152.              = 01 panel stream uses existing window & field table
  7153.         bit 5 = 1 stream contains a field table (create kyboard object)
  7154.         bit 4 = 1 stream defines input fields (create keyboard object)
  7155.         bit 3 = 1 stream defines select fields but not input fields
  7156.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  7157.         bit 1 reserved
  7158.         bit 0 reserved
  7159.  E6h  create new window and perform rest of manipulations in new window
  7160.     BYTE number of rows
  7161.     BYTE number of columns
  7162.     Return: DWORD object handle of new window returned on stack at end
  7163.     Note:    the window is created with a physical size of 0x0 at the
  7164.           same position as the window to which this stream was sent
  7165.  E7h  no operation
  7166.  E8h  scroll area up (top left corner defined by opcode C1h)
  7167.     BYTE height
  7168.     BYTE width
  7169.  E9h  scroll area down (top left corner defined by opcode C1h)
  7170.     BYTE height
  7171.     BYTE width
  7172.  EAh  scroll area left (top left corner defined by opcode C1h)
  7173.     BYTE height
  7174.     BYTE width
  7175.  EBh  scroll area right (top left corner defined by opcode C1h)
  7176.     BYTE height
  7177.     BYTE width
  7178.  ECh  set logical attributes for window contents
  7179.     BYTE video modes command applies to
  7180.         bit 7    monochrome
  7181.         bit 6    color text, EGA/VGA graphics
  7182.         bit 5    medium-resolution CGA graphics
  7183.         bit 4    high-resolution CGA graphics
  7184.     BYTE which attributes to set
  7185.         bit 7    if set, copy single following byte to indicated attribs
  7186.         bits 4-6  number of first attribute to change - 1
  7187.         bits 0-3  number of consecutive attributes to change
  7188.     N BYTEs new attributes
  7189.  EDh  set logical attributes for window frame
  7190.     BYTE video modes command applies to (see opcode ECh)
  7191.     BYTE which attributes to set
  7192.         bit 7    if set, copy single following byte to indicated attrs
  7193.         bits 4-6  number of first attribute to change - 1
  7194.         bits 0-3  number of consecutive attributes to change
  7195.     N BYTEs new attributes
  7196.           attributes
  7197.                1 = top left corner
  7198.                2 = top right corner
  7199.                3 = bottom left corner
  7200.                4 = bottom right corner
  7201.                5 = top edge
  7202.                6 = bottom edge
  7203.                7 = left edge
  7204.                8 = right edge
  7205.  EEh  set characters for window frame
  7206.     BYTE video modes command applies to (see opcode ECh)
  7207.     BYTE which characters to set
  7208.         bit 7    if set, copy single following byte to indicated chars
  7209.         bits 4-6  number of first character to change - 1
  7210.         bits 0-3  number of consecutive characters to change
  7211.     N BYTEs new chars (same relative position as attributes above)
  7212.  EFh  set window name
  7213.     BYTE length of name (should be in range 0 to logical screen width)
  7214.     N BYTEs name
  7215.  F0h  clear input field to blanks
  7216.     BYTE field number
  7217.  F1h  fill input field with character
  7218.     BYTE field number
  7219.     BYTE char
  7220.  F2h  set color of input field
  7221.     BYTE field number (1-N)
  7222.     BYTE attribute
  7223.  F3h  set initial contents of input field
  7224.     BYTE field number (1-N)
  7225.     N BYTEs enough chars to exactly fill field as defined by op FFh
  7226.  F4h  position cursor to start of specific input field
  7227.     BYTE field number (1-N)
  7228.  F5h  change field table entry
  7229.     BYTE field number
  7230.     7-8 BYTEs field table entry (see opcode FFh below)
  7231.  F6h  set field type
  7232.     BYTE field number
  7233.     BYTE type
  7234.         00h inactive
  7235.         40h output field
  7236.         80h input field
  7237.         C0h deselected field
  7238.         C2h selected field
  7239.  F7h  "broadcast write"    write data to fields with program output bit set in
  7240.       the field table entry, in field number order
  7241.     N BYTEs (total length of all program output fields)
  7242.  F8h  scroll field up a line
  7243.     BYTE field number
  7244.  F9h  scroll field down a line
  7245.     BYTE field number
  7246.  FAh  scroll field left
  7247.     BYTE field number
  7248.  FBh  scroll field right
  7249.     BYTE field number
  7250.  FCh  set field table header
  7251.     6 BYTEs    field table header (see #0331)
  7252.  FDh  reset modified bit for all fields
  7253.  FEh  reset selected and modified bits for all fields
  7254.  FFh  set up input fields
  7255.     6 BYTEs    table header (see #0331)
  7256.     7/8N BYTEs the field table entries, one for each field (see #0333)
  7257.     Note:    DESQview uses and updates the actual copy of the information
  7258.           which is contained in the stream.  Thus this info must remain
  7259.           intact until after the data entry is complete.
  7260.  
  7261. (Table 0330)
  7262. Values for TopView logical attributes:
  7263.  01h    normal text
  7264.  02h    highlighted normal text
  7265.  03h    help text
  7266.  04h    highlighted help text
  7267.  05h    error message
  7268.  06h    highlighted error message
  7269.  07h    emphasized text
  7270.  08h    marked text
  7271.  9-16    reverse video versions of 1-8
  7272.  
  7273. Format of TopView field table header:
  7274. Offset    Size    Description    (Table 0331)
  7275.  00h    BYTE    number of fields (must be <= existing number of fields)
  7276.  01h    BYTE    screen behavior bits (see #0332)
  7277.  02h    BYTE    current input field (updated by DESQview)
  7278.  03h    BYTE    current select field (updated by DESQview)
  7279.  04h    BYTE    attribute for select fields when they are pointed at
  7280.  05h    BYTE    attribute for select fields which have been selected
  7281.  
  7282. Bitfields for TopView screen behavior bits:
  7283. Bit(s)    Description    (Table 0332)
  7284.  7    reserved
  7285.  6    menu items may be selected via keyboard
  7286.  5    left mouse button in "status" mode (press anywhere in window
  7287.       immediately returns control to application)
  7288.  4    right mouse button in "status" mode
  7289.  3    select fields return contents or blanks rather than 'Y' or 'N'
  7290.  2    modified bits reset on return to application
  7291.  1-0    type of data returned
  7292.     00 no data returned on read of keyboard
  7293.     01 data returned as array of characters containing all fields packed
  7294.           together, with no field numbers
  7295.     10 data returned as numbered variable-length records for all fields
  7296.     11 data returned as numbered variable-length records for the fields
  7297.           which were modified
  7298.  
  7299. Format of TopView field table entry:
  7300. Offset    Size    Description    (Table 0333)
  7301.  00h    BYTE    start row      \
  7302.  01h    BYTE    start column  \ if menu selection and start is to
  7303.  02h    BYTE    end row       / right or below end, select from kbd only
  7304.  03h    BYTE    end column   /
  7305.  04h    BYTE    field type (see #0334)
  7306.  05h    BYTE    modifier
  7307.         if type is fill-in, then bit flags to determine behavior
  7308.           bit 7     automatically enter CR when field full
  7309.           bit 6     move to next field when current field is full
  7310.           bit 5     enter text from right end (for numbers)
  7311.           bit 4     force input to uppercase
  7312.           bit 3     clear old contents on first keystroke
  7313.           bit 2     input returned when cursor moves out of
  7314.               modified field ("validate", API level 2.02+)
  7315.           bit 1     reserved
  7316.           bit 0     reserved
  7317.         if select field, first key to press to activate
  7318.           00h if have to point-&-click or is an extended-ASCII
  7319.               keystroke (only if two-key menus enabled)
  7320.  06h    BYTE    (select field only) normal color of field
  7321.  07h    BYTE    second key for select field.  This byte is present iff
  7322.           two-letter menu entries selected with opcode E5h, and in that
  7323.           case is present regardless of field type
  7324.  
  7325. Bitfields for TopView field type:
  7326. Bit(s)    Description    (Table 0334)
  7327.  7,6    field class
  7328.     00 inactive (non-entry) field
  7329.     01 echos keystrokes input to make menu selection
  7330.     10 fill-in field
  7331.     11 select field
  7332.  5    field can be filled by broadcast write (F7h opcode)
  7333.  4    reserved
  7334.  3    reserved
  7335.  2    reserved
  7336.  1    set if field selected
  7337.  0    set if field modified
  7338.  
  7339. (Table 0335)
  7340. Values for MODE 01h "QUERY STREAM" opcodes:
  7341. (valid only for those opcodes listed here)
  7342.  A0h return logical cursor row in next byte
  7343.  A1h return logical cursor column in next byte
  7344.  A2h return top row of scrolling region in next byte
  7345.  A3h return left column of scrolling region in next byte
  7346.  A4h return row of physical window origin in next byte
  7347.  A5h return column of physical window origin in next byte
  7348.  A6h return height of physcial window in next byte
  7349.  A7h return width of physical window in next byte
  7350.  A8h return row of viewport origin in next byte
  7351.  A9h return column of viewport origin in next byte
  7352.  AAh return height of virtual screen in next byte
  7353.  ABh return width of virtual screen in next byte
  7354.  AFh return current video mode in next byte
  7355.  C0h return current logical cursor position in next two bytes
  7356.  C1h return top left corner of scrolling region in next two bytes
  7357.  C2h return current window position in next two bytes
  7358.  C3h return current window size in next two bytes
  7359.  C4h return current viewport origin in next two bytes
  7360.  C5h return current virtual screen size in next two bytes
  7361.  D0h \ overwritten with D0h if frames may fall off screen edge
  7362.  D1h /               D1h if frames always displayed entirely
  7363.  D2h \ overwritten with D2h if DESQview controls color palette
  7364.  D3h /               D3h if application changes color palette
  7365.  D4h \ overwritten with D4h if window visible
  7366.  D5h /               D5h if window hidden
  7367.  D6h \ overwritten with D6h if window has frame
  7368.  D7h /               D7h if window unframed
  7369.  D8h \ overwritten with D8h if reading characters from window
  7370.  D9h /               D9h if reading attributes from window
  7371.  DAh \ overwritten with DAh if using logical attributes
  7372.  DBh /               DBh if using physical attributes
  7373.  DCh \ overwritten with DCh if TTY control char interpretation on
  7374.  DDh /               DDh if TTY control char interpretation off
  7375.  DEh \ overwritten with DEh if writing both characters and attributes
  7376.  DFh /               DFh if leaving attributes untouched
  7377.  E2h return current color in next byte
  7378.  ECh get logical attributes for window contents
  7379.     BYTE execute call if currently in specified video mode
  7380.         bit 7    monochrome
  7381.         bit 6    color text, EGA/VGA graphics
  7382.         bit 5    medium-resolution CGA graphics
  7383.         bit 4    high-resolution CGA graphics
  7384.     BYTE which attributes to get
  7385.         bit 7    unused???
  7386.         bits 4-6 first attribute to get - 1
  7387.         bits 0-3 number of consecutive attributes
  7388.     N BYTEs buffer to hold attributes
  7389.  EDh get logical attributes for window frame
  7390.     BYTE execute call if currently in video mode (see opcode ECh)
  7391.     BYTE which attributes to get
  7392.         bit 7    unused???
  7393.         bits 4-6 first attribute to get - 1
  7394.         bits 0-3 number of consecutive attributes
  7395.     N BYTEs buffer to hold attributes
  7396.  EEh get characters for window frame
  7397.     BYTE execute call if currently in video mode (see opcode ECh)
  7398.     BYTE which attributes to get
  7399.         bit 7    unused???
  7400.         bits 4-6 first char to get - 1
  7401.         bits 0-3 number of consecutive chars
  7402.     N BYTEs buffer to hold chars
  7403.  EFh return first N characters of current window name
  7404.     BYTE    max length of returned name
  7405.     N BYTEs buffer to hold window name
  7406.  F3h return contents of specified field
  7407.     BYTE field number
  7408.     N BYTEs buffer to hold field contents (size equal to field size)
  7409.  F5h get field table entry
  7410.     BYTE field number
  7411.     7-8 BYTEs buffer to hold field table entry (see #0333)
  7412.     Notes:    DV < 2.26 always returns 7 bytes
  7413.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  7414.           is using 8-byte entries and eighth byte after    F5h is E7h
  7415.           (NOP); otherwise, 7 bytes are returned
  7416.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  7417.           on the field table entry size
  7418.  F6h get type of a field
  7419.     BYTE field number
  7420.     BYTE type
  7421.  FCh get field table header
  7422.     6 BYTEs buffer to store field table header (see #0331)
  7423.  
  7424. (Table 0336)
  7425. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  7426.  00h allow window to be moved horizontally
  7427.  01h allow window to be moved vertically
  7428.  02h allow window to change width
  7429.  03h allow window to change height
  7430.  04h allow window to be scrolled horizontally
  7431.  05h allow window to be scrolled vertically
  7432.  06h allow "Close Window" menu selection for application
  7433.  07h allow "Hide Window" menu selection for application
  7434.  08h allow application to be suspended ("Rearrange/Freeze")
  7435.  0Eh allow "Scissors" menu
  7436.  10h allow DESQview main menu to be popped up
  7437.  11h allow "Switch Windows" menu
  7438.  12h allow "Open Window" menu
  7439.  13h allow "Quit" menu selection
  7440.  20h-33h opposite of 00h-13h, disallow specified action
  7441.  40h notify if horizontal position of window changes
  7442.  41h notify if vertical position of window changes
  7443.  42h notify if width of window changes
  7444.  43h notify if height of window changes
  7445.  44h notify if window scrolled horizontally
  7446.  45h notify if window scrolled vertically
  7447.  46h notify if window is closed--program has to clean up and exit itself
  7448.  47h notify if window is hidden
  7449.  48h notify if "?" on main menu selected
  7450.  49h notify if pointer message sent to window
  7451.  4Ah notify if window is placed in foreground
  7452.  4Bh notify if window is placed in background
  7453.  4Ch notify if video mode changes
  7454.  4Dh notify if "Scissors" menu "Cut" option selected
  7455.  4Eh notify if "Scissors" menu "Copy" option selected
  7456.  4Fh notify if "Scissors" menu "Paste" option selected
  7457.  50h notify if DESQview main menu about to pop up
  7458.  51h notify if DESQview main menu popped down
  7459.  60h-71h     opposite of 40h-51h: don't notify on specified event
  7460.  84h attach window to parent task's window (both move together)
  7461.  85h detach window from parent task's window (may move independently)
  7462.  86h disable background operation for application
  7463.  87h enable running in background
  7464.  88h set minimum size of physical window
  7465.     BYTE rows
  7466.     BYTE columns
  7467.  89h set maximum size of physical window
  7468.     BYTE rows
  7469.     BYTE cols
  7470.  8Ah set primary asynchronous notification routine (see #0338)
  7471.     DWORD address of routine, 0000h:0000h means none (see also below)
  7472.  8Bh set async notification parameter
  7473.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  7474.  ACh (DV2.2+) perform regular select field attribute processing
  7475.  ADh (DV2.2+) protect attributes in selected field from being lost
  7476.  AEh make window default notify window for owning app (API level 2.00+)
  7477.  AFh set selected field marker character
  7478.     BYTE character to display at left edge of selected fields
  7479.  BCh set standard field processing mode
  7480.  BDh set alternate field processing mode (enables cursor pad for menus)
  7481.  BEh disables changing reverse logical attributes with ECh opcode
  7482.  BFh enables changing reverse logical attributes with ECh opcode
  7483.  C0h make current window topmost in system
  7484.  C1h force current process into foreground
  7485.  C2h make current window topmost in process
  7486.  C3h position mouse pointer relative to origin of current field
  7487.     BYTE rows below upper left corner of field
  7488.     BYTE columns to right of upper left corner of field
  7489.  C4h position mouse pointer relative to origin of given field
  7490.     BYTE field number
  7491.     BYTE rows below upper left corner of field
  7492.     BYTE columns to right of upper left corner of field
  7493.  C5h orphan current window (also hides it)
  7494.     Note: must be last in stream; all subsequent commands ignored
  7495.  C6h show all windows for this process
  7496.  C7h hide all windows for this process
  7497.  C8h suspend process and hide all its windows
  7498.  C9h force current process into background
  7499.  CAh make current window bottom-most in process
  7500.  CBh cancel current window manager operation, remove DV menu, give control
  7501.       to topmost application
  7502.  CCh orphan window and give it to the system for use as paste data
  7503.  CEh reorder windows
  7504.     DWORD pointer to null-terminated list of words; each word is segment
  7505.           of object handle for a window
  7506.  FFh no operation
  7507.  
  7508. (Table 0337)
  7509. Values for MODES 14h to 1Fh "USER STREAMS":
  7510.     normally NOPs, but may be defined by SETESC message to invoke FAR
  7511.     routines, one for each mode number
  7512.       on entry to handler,
  7513.         DS:SI -> first byte of actual stream (not header)
  7514.         CX = number of bytes in stream
  7515.         ES:DI = window's handle
  7516.  
  7517. (Table 0338)
  7518. Values asynchronous notification routine defined by man.stream 8Ah called with:
  7519.     ES:DI = handle of window
  7520.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  7521.        mailbox contains message indicating event
  7522.           Opcode
  7523.            40h  horizontal movement
  7524.            DWORD object handle of window
  7525.            BYTE     new row
  7526.            BYTE     new col
  7527.            41h  vertical movement
  7528.            DWORD object handle of window
  7529.            BYTE     new row
  7530.            BYTE     new col
  7531.            42h  horizontal size change
  7532.            DWORD object handle of window
  7533.            BYTE     new rows
  7534.            BYTE     new cols
  7535.            43h  vertical size change
  7536.            DWORD object handle of window
  7537.            BYTE     new rows
  7538.            BYTE     new cols
  7539.            44h  scrolled horizontally
  7540.            DWORD object handle of window
  7541.            BYTE     mouse row within window
  7542.            BYTE     mouse column within window
  7543.            BYTE     field mouse is on, 0 if none
  7544.            BYTE     amount moved: >0 right, <0 left, 0 done
  7545.            45h  scrolled vertically
  7546.            DWORD object hande of window
  7547.            BYTE     mouse row within window
  7548.            BYTE     mouse column within window
  7549.            BYTE     field mouse is on, 0 if none
  7550.            BYTE     amount moved: >0 down, <0 up, 0 done
  7551.            46h  window close request
  7552.            DWORD object handle of window
  7553.            BYTE     mouse pointer row
  7554.            BYTE     mouse pointer column
  7555.            BYTE     field mouse is on, 0 if none
  7556.            47h  application's windows hidden
  7557.            48h  Help for Program selected
  7558.            DWORD object handle of window
  7559.            BYTE     mouse pointer row
  7560.            BYTE     mouse pointer column
  7561.            BYTE     field mouse is on, 0 if none
  7562.            49h  pointer message sent to window
  7563.            DWORD pointer handle which received message
  7564.            4Ah  switched to window from another ("raise")
  7565.            4Bh  switched away from the window ("lower")
  7566.            4Ch  video mode changed
  7567.            BYTE new BIOS video mode
  7568.            4Dh  Scissors/cUt selected
  7569.            DWORD object handle of window
  7570.            BYTE     row of upper left corner
  7571.            BYTE     column of upper left corner
  7572.            BYTE     field number ul corner is in, 0=none
  7573.            DWORD handle of orphaned window created with
  7574.              copy of data from specified region
  7575.            BYTE     height of region
  7576.            BYTE     width of region
  7577.            4Eh  Scissors/Copy selected
  7578.            DWORD object handle of window
  7579.            BYTE     row of upper left corner
  7580.            BYTE     column of upper left corner
  7581.            BYTE     field number ul corner is in, 0=none
  7582.            DWORD handle of orphaned window created with
  7583.              copy of data from specified region
  7584.            BYTE     height of region
  7585.            BYTE     width of region
  7586.            4Fh  Scissors/Paste selected
  7587.            DWORD object handle of window
  7588.            BYTE     row of upper left corner
  7589.            BYTE     column of upper left corner
  7590.            BYTE     field number ul corner is in, 0=none
  7591.            DWORD handle of orphaned window with data
  7592.            BYTE     height of region
  7593.            BYTE     width of region
  7594.             Note: orphaned data window should be adopted or freed
  7595.                 when done
  7596.            50h  main menu about to pop up
  7597.            51h  main menu popped down
  7598. Return: all registers unchanged
  7599. --------Q-1512--BH06-------------------------
  7600. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  7601.     AH = 12h
  7602.     BH = 06h
  7603.     BL = object
  7604.         00h object handle in DWORD on top of stack
  7605.         mailbox, keyboard, pointer, or timer
  7606.         (DV 2.50+) window
  7607.         01h (DV 2.50+) current task's window
  7608.         04h given task's keyboard (task's handle on top of stack)
  7609.         05h current task's default keyboard
  7610.     STACK: DWORD new priority of object in task's OBJECTQ
  7611.             (new priority of task if window handle)
  7612. Notes:    initially all objects have the same default value.  Should only make
  7613.       relative adjustments to this default value.
  7614.     when changing priorities, all objects already on the objectq are
  7615.       reordered
  7616.     for window handles, only the non-blocked task(s) with the highest
  7617.       priority receive CPU time under DESQview 2.50-2.52; the default
  7618.       priority is 0Ah
  7619. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  7620. --------Q-1512--BH07-------------------------
  7621. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  7622.     AH = 12h
  7623.     BH = 07h
  7624.     BL = object
  7625.         00h object handle in DWORD on top of stack
  7626.         mailbox, keyboard, pointer, or timer
  7627.         (DV 2.50+) window
  7628.         01h (DV 2.50+) current task's window
  7629.         04h given task's keyboard (task's handle on top of stack)
  7630.         05h current task's default keyboard
  7631. Return: STACK: DWORD object priority
  7632. Note:    initially all objects have the same default value.  Should only make
  7633.       relative adjustments to this default value.
  7634. SeeAlso: AH=12h/BH=06h
  7635. --------Q-1512--BH08-------------------------
  7636. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  7637.     AH = 12h
  7638.     BH = 08h
  7639.     BL = object
  7640.         00h handle in DWORD on top of stack
  7641.         window: total character positions in window
  7642.         timer: elapsed time since timer started
  7643.         pointer: number of messages queued to pointer object
  7644.         panel: number of panels in panel file
  7645.         keyboard: number of input buffers queued
  7646.         01h total chars in current task's default window
  7647.         02h number of messages in task's mailbox (task's handle on stack)
  7648.         03h number of messages in current task's mailbox
  7649.         04h number of input buffers queued in task's kbd (handle on stack)
  7650.         05h number of input buffers queued for current task's default kbd
  7651.         06h number of objects queued in OBJECTQ (task's handle on stack)
  7652.         07h number of objects queued in current task's OBJECTQ
  7653.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  7654.         0Dh (DV 2.26+) total chars in parent task's window
  7655. Return: DWORD on top of stack is result
  7656. Note:    for panel objects, a count of zero is returned if no panel file is open
  7657.       for the object
  7658. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  7659. --------Q-1512--BH09-------------------------
  7660. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  7661.     AH = 12h
  7662.     BH = 09h
  7663.     BL = object
  7664.         00h handle in DWORD on top of stack
  7665.         window: get chars/line
  7666.         timer: get 1/100 seconds remaining before timer expires
  7667.         mailbox: (DV/X) get number of bytes queued to mailbox
  7668.         01h get number of chars/line in current task's default window
  7669.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  7670.         0Dh (DV 2.26+) get chars/line in parent task's window
  7671. Return: DWORD on top of stack is length
  7672. SeeAlso: AH=12h/BH=08h
  7673. --------Q-1512--BH0A-------------------------
  7674. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  7675.     AH = 12h
  7676.     BH = 0Ah
  7677.     BL = window to write to
  7678.         00h window handle is DWORD on top of stack
  7679.         01h current task's default window
  7680.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  7681.         0Dh (DV 2.26+) default window of parent of current task
  7682.     STACK:    DWORD count of attributes
  7683.         DWORD address of attribute string
  7684.         DWORD count of characters
  7685.         DWORD address of character string
  7686. Notes:    if one string is longer than the other, the shorter one will be reused
  7687.       until the longer one is exhausted
  7688.     the cursor is left just after the last character written
  7689. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  7690. --------Q-1512--BH0A-------------------------
  7691. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  7692.     AH = 12h
  7693.     BH = 0Ah
  7694.     BL = mailbox to write to
  7695.         00h handle is DWORD on top of stack
  7696.         02h default mailbox of task whose handle is on top of stack
  7697.         03h current task's default mailbox
  7698.     STACK:    DWORD    status (low byte)
  7699.         DWORD    length of message
  7700.         DWORD    address of message
  7701. Notes:    the message is copied into either system or common memory
  7702.     insufficient memory normally causes the process to be aborted; under
  7703.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  7704. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  7705. --------Q-1512--BH0A-------------------------
  7706. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  7707.     AH = 12h
  7708.     BH = 0Ah
  7709.     BL = object
  7710.         00h handle is DWORD on top of stack
  7711.         timer: start timer for specified interval
  7712.         pointer: set control flags (see #0340)
  7713.         keyboard: set control flags (see #0339)
  7714.         04h set control flags on KEYBOARD object (handle on top of stack)
  7715.         05h set control flags on task's default KEYBOARD object
  7716.     STACK: (if timer)   DWORD duration in 1/100 seconds
  7717.            (otherwise)  DWORD bits to set
  7718. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  7719.  
  7720. Bitfields for DESQview keyboard object bits:
  7721. Bit(s)    Description    (Table 0339)
  7722.  15    reserved, can't be set
  7723.  14    unused
  7724.  13    reserved, can't be set
  7725.  12-6    unused
  7726.  5    (DV 2.2+) exclusive input
  7727.  4    filter all keys (used with handler established by SETESC)
  7728.     if 0, only keys that would normally be displayed are filtered
  7729.  3    program continues executing while input in progress
  7730.  2    insert mode active for field mode
  7731.  1    hardware cursor displayed when task is hardware cursor owner
  7732.     must be set if keyboard in field mode and field table includes input
  7733.       fields
  7734.  0    keyboard is in field mode rather than keystroke mode
  7735.  
  7736. Bitfields for DESQview pointer object bits:
  7737. Bit(s)    Description    (Table 0340)
  7738.  15    reserved, can't be set
  7739.  14-8    unused
  7740.  7    mouse pointer is hidden while in window
  7741.  6    get messages even if window not topmost
  7742.  5    get messages even if window not foreground
  7743.  4    multiple clicks separated by less than 1/3 second are counted and
  7744.       returned in a single message
  7745.  3    pointer position is relative to screen origin, not window origin
  7746.  2    send message on button release as well as button press
  7747.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  7748.       pointer leaves the window
  7749.  0    send message only on button activity, not movement
  7750.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  7751. --------Q-1512--BH0B-------------------------
  7752. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  7753.     AH = 12h
  7754.     BH = 0Bh
  7755.     BL = window to write attributes to
  7756.         00h handle is DWORD on top of stack
  7757.         01h current task's default window
  7758.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  7759.         0Dh (DV 2.26+) default window of parent of current task
  7760.     STACK:    DWORD number of attributes to write
  7761.         DWORD address of attributes
  7762. Note:    the attributes are written starting at the current cursor position; the
  7763.       cursor is left just after the last position written
  7764. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  7765. --------Q-1512--BH0B-------------------------
  7766. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  7767.     AH = 12h
  7768.     BH = 0Bh
  7769.     BL = mailbox to write to
  7770.         00h handle is DWORD on top of stack
  7771.         02h default mailbox of task whose handle is on top of stack
  7772.         03h current task's default mailbox
  7773.     STACK:    DWORD    status (low byte)
  7774.         DWORD    length of message
  7775.         DWORD    address of message
  7776. Notes:    only a pointer to the message is stored, but the write may still fail
  7777.       due to insufficient memory
  7778.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  7779. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  7780. --------Q-1512--BH0B-------------------------
  7781. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  7782.     AH = 12h
  7783.     BH = 0Bh
  7784.     BL = OBJECTQ from which to remove all copies of a particular object
  7785.         06h OBJECTQ of task whose handle is on top of stack
  7786.         07h task's default OBJECTQ
  7787.     STACK:    DWORD    handle of object to remove
  7788. Note:    should be sent whenever an object is erased or closed
  7789. --------Q-1512--BH0B-------------------------
  7790. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  7791.     AH = 12h
  7792.     BH = 0Bh
  7793.     BL = object
  7794.         00h handle is DWORD on top of stack
  7795.         pointer: reset control flags
  7796.         keyboard: reset control flags
  7797.         04h clear control flags on KEYBOARD object (handle on top of stack)
  7798.         05h clear control flags on task's default KEYBOARD object
  7799.     STACK:    DWORD    which bits to clear (see #0339,#0340)
  7800. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  7801. --------Q-1512--BH0C-------------------------
  7802. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  7803.     AH = 12h
  7804.     BH = 0Ch
  7805.     BL = object
  7806.         00h handle is DWORD on top of stack
  7807.         window:      fill with given character from scroll origin to end
  7808.         keyboard: attach to a window
  7809.         timer:      open
  7810.         pointer:  start taking input for window
  7811.         panel:      associate with a panel file
  7812.         01h fill task's default window with given char from scrl org to end
  7813.         02h open given task's mailbox for input (task's handle on stack)
  7814.         03h open current task's mailbox
  7815.         04h attach a KEYBOARD to a window (handle on top of stack)
  7816.         05h attach task's default KEYBOARD to a window
  7817.         06h open a task's OBJECTQ (task's handle on top of stack)
  7818.         07h open current task's OBJECTQ
  7819.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  7820.         0Dh (DV 2.26+) fill default window of parent of current task
  7821.      STACK: (if window)   DWORD character to fill with
  7822.         (if keyboard) DWORD handle of window to attach to
  7823.         (if pointer)  DWORD handle of window to attach to
  7824.         (if panel)    DWORD length of filename or resident panel
  7825.                   DWORD address of filename or resident panel
  7826.         (otherwise)   nothing
  7827. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  7828.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  7829.       the panel file
  7830.     result code of open may be retrieved with STATUS message
  7831.     logical cursor is left at scroll origin after filling window
  7832.     the task opening a mailbox becomes its owner, and the only task allowed
  7833.       to read the mailbox
  7834.     messages are only sent to a pointer object when the mouse is positioned
  7835.       in the window to which the pointer has been attached
  7836.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  7837.       messages automatically open the timer
  7838. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  7839. --------Q-1512--BH0D-------------------------
  7840. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  7841.     AH = 12h
  7842.     BH = 0Dh
  7843.     BL = object
  7844.         00h handle is DWORD on top of stack
  7845.         timer:      close
  7846.         keyboard: detach from window and discard queued input
  7847.         pointer:  stop taking input
  7848.         panel:      close
  7849.         mailbox:  close, unlock, and discard any pending messages
  7850.         02h close given task's mailbox (task's handle on top of stack)
  7851.         03h close task's default mailbox
  7852.         04h close KEYBOARD object (handle on top of stack)
  7853.         05h close task's default KEYBOARD
  7854.         06h close given task's OBJECTQ (task's handle on top of stack)
  7855.         07h close current task's OBJECTQ
  7856. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  7857.       ERASE message (AH=12h/BH=0Eh)
  7858.     when a panel object is closed, the panel file and any panels currently
  7859.       in use are freed; window and keyboard objects created by APPLY are
  7860.       not affected, but field mode input ceases
  7861.     open but idle timer objects consume a small amount of CPU time
  7862. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  7863. --------Q-1512--BH0E-------------------------
  7864. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  7865.     AH = 12h
  7866.     BH = 0Eh
  7867.     BL = object
  7868.         00h handle is DWORD on top of stack
  7869.         window:      clear from scroll origin to end of window
  7870.         keyboard: discard input
  7871.         timer:      cancel current interval
  7872.         pointer:  discard all pending messages
  7873.         mailbox:  discard all pending messages
  7874.         01h clear task's default window from scroll origin to end
  7875.         02h discard all queued messages in mailbox (handle on top of stack)
  7876.         03h discard all queued messages in current task's default mailbox
  7877.         04h discard all input queued to KEYBOARD (handle on top of stack)
  7878.         05h discard all input queued to task's default KEYBOARD
  7879.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  7880.         07h remove all objects from current task's OBJECTQ
  7881.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  7882.         0Dh (DV 2.26+) clear default window of parent of current task
  7883. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  7884. SeeAlso: AH=12h/BH=02h
  7885. --------Q-1512--BH0F-------------------------
  7886. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  7887.     AH = 12h
  7888.     BH = 0Fh
  7889.     BL = object
  7890.         00h handle is DWORD on top of stack
  7891.         timer:     is it running?
  7892.         pointer: return status of last message
  7893.         panel:     verify success of last OPEN or APPLY
  7894.         02h return status of last msg READ from mailbox (handle on stack)
  7895.         03h return status of last msg READ from task's default mailbox
  7896.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  7897.         05h get status of last msg from task's default KEYBOARD
  7898.         06h return whether OBJECTQ is open or not (handle on top of stack)
  7899.         07h return whether task's default OBJECTQ is open or not
  7900. Return: DWORD on top of stack is status
  7901. Notes:    if object is a panel object, the status indicates the error code:
  7902.       00h successful
  7903.       14h panel name not in panel directory
  7904.       15h not enough memory to apply panel
  7905.       16h invalid panel format
  7906.       17h panel file already open
  7907.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  7908.       95h not enough memory to open panel file     > that the panel was
  7909.       98h null panel file name            /  not opened
  7910.     if object is a timer, the status is:
  7911.       00000000h open but not running
  7912.       40000000h open and running
  7913.       80000000h closed
  7914.     if object is an OBJECTQ, the status is:
  7915.       00000000h open
  7916.       80000000h closed
  7917.     if object is a keyboard in keystroke mode, the status is the extended
  7918.       character code (scan code) of the last keystroke
  7919.     if object is a keyboard in field mode, the status indicates the reason
  7920.       for the last return from the field manager
  7921.       00h Enter key pressed
  7922.       01h Button 1 or keystroke selection
  7923.       02h Button 2
  7924.       03h validation
  7925.       04h auto Enter on field
  7926.       1Bh Escape pressed
  7927.       46h ^Break pressed
  7928.       other: extended code for key terminating input
  7929.     the status of mailbox messages sent by the window manager is always 80h
  7930.     the status of a pointer message is the same as the status field in the
  7931.       message
  7932. SeeAlso: AH=12h/BH=04h"READ"
  7933. --------Q-1512--BH10-------------------------
  7934. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  7935.     AH = 12h
  7936.     BH = 10h
  7937.     BL = object
  7938.         00h handle is DWORD on top of stack
  7939.         window: return TRUE if logical cursor past end of window
  7940.         mailbox: ???
  7941.         01h returns TRUE if logical cursor past end of task's def window
  7942.         02h return ??? for task's mailbox (task's handle on top of stack)
  7943.         03h return ??? for current task's mailbox
  7944.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  7945.         0Dh (DV 2.26+) check log cursor of window of parent task
  7946. Return: DWORD on top of stack is status
  7947. --------Q-1512--BH11-------------------------
  7948. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  7949.     AH = 12h
  7950.     BH = 11h
  7951.     BL = window for which to move cursor
  7952.         00h window's handle is DWORD on top of stack
  7953.         01h task's default window
  7954.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  7955.         0Dh (DV 2.26+) default window of parent of current task
  7956.     STACK: DWORD column
  7957.            DWORD row
  7958. --------Q-1512--BH11-------------------------
  7959. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  7960.     AH = 12h
  7961.     BH = 11h
  7962.     BL = mailbox to name
  7963.         00h DWORD on top of stack is mailbox handle
  7964.         02h use given task's mailbox (task's handle on top of stack)
  7965.         03h use current task's default mailbox
  7966.     STACK: DWORD length of name
  7967.            DWORD address of name
  7968. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  7969. --------Q-1512--BX1100-----------------------
  7970. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  7971.     AH = 12h
  7972.     BX = 1100h
  7973.     STACK: DWORD object handle for pointer object
  7974.            DWORD number of colums to scale pointer position to
  7975.            DWORD number of rows to scale pointer position to
  7976. SeeAlso: AH=12h/BX=1200h
  7977. --------Q-1512--BH12-------------------------
  7978. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  7979.     AH = 12h
  7980.     BH = 12h
  7981.     BL = window to read from
  7982.         00h handle is DWORD on top of stack
  7983.         01h read next N chars or attributes on task's default window
  7984.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  7985.         0Dh (DV 2.26+) read default window of parent of current task
  7986.     STACK: DWORD count
  7987. Return: STACK: DWORD number of bytes actually read
  7988.            DWORD address of buffer containing data
  7989. Notes:    reading starts at the current logical cursor position; the cursor is
  7990.       updated to point at the character following the last one read
  7991.     any translucent blanks (FFh) which are visible on screen are changed
  7992.       to the character which is seen through them
  7993.     the string produced by the read is placed in an input buffer which may
  7994.       be reused by the next READ or READN of a window
  7995.     window stream opcodes D8h and D9h determine whether the read returns
  7996.       characters or attributes
  7997. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  7998. --------Q-1512--BH12-------------------------
  7999. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  8000.     AH = 12h
  8001.     BH = 12h
  8002.     BL = mailbox for which to retrieve name
  8003.         00h DWORD on top of stack is mailbox handle
  8004.         02h use given task's mailbox (task's handle on top of stack)
  8005.         03h use current task's default mailbox
  8006.     STACK: DWORD length of buffer for name
  8007.            DWORD pointer to buffer
  8008. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  8009. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  8010. Note:    the returned name is not NUL-terminated
  8011. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  8012. --------Q-1512--BX1200-----------------------
  8013. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  8014.     AH = 12h
  8015.     BX = 1200h
  8016.     STACK: DWORD object handle for pointer
  8017. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  8018.            DWORD pointer pos scaled as if window were this many rows high
  8019. SeeAlso: AH=12h/BX=1100h
  8020. --------Q-1512--BH13-------------------------
  8021. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  8022.     AH = 12h
  8023.     BH = 13h
  8024.     BL = window object
  8025.         00h DWORD on top of stack is handle for window to redraw
  8026.         01h redraw task's default window
  8027.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  8028.         0Dh (DV 2.26+) redraw default window of parent of current task
  8029. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  8030. --------Q-1512--BH13-------------------------
  8031. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  8032.     AH = 12h
  8033.     BH = 13h
  8034.     BL = mailbox from which to read
  8035.         00h DWORD on top of stack is mailbox handle
  8036.         02h use given task's mailbox (task's handle on top of stack)
  8037.         03h use current task's default mailbox
  8038.     STACK: DWORD size of buffer in bytes
  8039.            DWORD pointer to buffer
  8040. Return: STACK: DWORD number of bytes read
  8041. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  8042. Notes:    this call blocks if no input is available, but will return less than
  8043.       the requested number of bytes if some (but insufficient) data is
  8044.       available
  8045.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  8046.       4 or 5 set, as common memory may be exhausted by that call when
  8047.       attempting to read the next message
  8048. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  8049. --------Q-1512--BX1300-----------------------
  8050. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  8051.     AH = 12h
  8052.     BX = 1300h
  8053.     STACK: DWORD object handle for pointer
  8054.            DWORD character to use for pointer
  8055. Return: STACK popped
  8056. --------Q-1512--BH14-------------------------
  8057. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  8058.     AH = 12h
  8059.     BH = 14h
  8060.     BL = message modifier
  8061.         00h handle is DWORD on top of stack
  8062.         01h define user stream
  8063.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  8064.         05h intercept keystrokes from task's default KEYBOARD to a window
  8065.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  8066.                  DWORD address of FAR user stream handler
  8067.            (if keyboard) DWORD address of FAR filter function (see #0341)
  8068. Return: STACK popped
  8069.  
  8070. (Table 0341)
  8071. Values keyboard filter function is called with when keyboard is in field mode:
  8072.     AL = character
  8073.     AH = 00h or extended ASCII code if AL = 00h
  8074.     BL = field number
  8075.     CH = cursor column
  8076.     CL = cursor row
  8077.     DL = field type modifier (sixth item in field table entry)
  8078.     DH = seventh item in field table entry
  8079.     ES:SI = window's handle
  8080.     DS:DI -> field table entry for field containing the cursor
  8081. Return:    AH = action to take
  8082.         00h use keystroke
  8083.         01h ignore keystroke
  8084.         FFh beep and ignore keystroke
  8085. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  8086. --------Q-1512--BH14-------------------------
  8087. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  8088.     AH = 12h
  8089.     BH = 14h
  8090.     BL = object
  8091.         00h mailbox handle is DWORD on top of stack
  8092.         02h use given task's mailbox (task's handle on top of stack)
  8093.         03h use current task's default mailbox
  8094. Return: STACK popped if BL=00h
  8095. Note:    release exclusive access by sending CLOSE message to mailbox
  8096.     access may be requested multiple times, and requires multiple CLOSEs
  8097. SeeAlso: AH=12h/BH=0Dh
  8098. --------Q-1512--BH15-------------------------
  8099. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  8100.     AH = 12h
  8101.     BH = 15h
  8102.     BL = object
  8103.         00h DWORD on top of stack
  8104.         mailbox, keyboard, or pointer only
  8105.         02h mailbox for task whose handle is on top of stack
  8106.         03h mailbox for current task
  8107.         04h keyboard for task whose handle is on top of stack
  8108.         05h keyboard for current task
  8109.     STACK: DWORD flags (see #0342,#0343)
  8110. Return: STACK popped
  8111. Notes:    only available if the API level has been set to at least 2.20
  8112.     equivalent to performing SUBFROM and ADDTO calls on the object
  8113.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  8114.       "READ" (see AH=12h/BX=1300h"READINTO") to retrieve messages
  8115. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  8116.  
  8117. Bitfields for DESQview mailbox object flags:
  8118. Bit(s)    Description    (Table 0342)
  8119.  0    all mail messages in common memory
  8120.  1    allow write even if closed
  8121.  2    don't erase messages when mailbox closed
  8122.  4    (DV/X) append messages with like status and sender (stream-oriented
  8123.       mail)
  8124.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  8125.  6    (DV/X) make mailbox into non-owned mailbox
  8126.  
  8127. Bitfields for DESQview keyboard object flags:
  8128. Bit(s)    Description    (Table 0343)
  8129.  5    exclusive input when keyboard in use for input
  8130. --------Q-1512--BH16-------------------------
  8131. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  8132.     AH = 12h
  8133.     BH = 16h
  8134.     BL = object
  8135.         00h DWORD on top of stack
  8136.         mailbox, keyboard, or pointer only
  8137.         02h mailbox for task whose handle is on top of stack
  8138.         03h mailbox for current task
  8139.         04h keyboard for task whose handle is on top of stack
  8140.         05h keyboard for current task
  8141. Return: STACK: DWORD current control flags (see #0342,#0343)
  8142. Notes:    only available if the API level has been set to at least 2.20
  8143.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  8144.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  8145. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  8146. --------Q-1512--BH17-------------------------
  8147. INT 15 - DESQview v2.42-2.52 - BUG
  8148.     AH = 12h
  8149.     BH = 17h
  8150.     BL = object
  8151.         00h DWORD on top of stack
  8152.         mailbox, keyboard, or pointer only
  8153.         02h mailbox for task whose handle is on top of stack
  8154.         03h mailbox for current task
  8155.         04h keyboard for task whose handle is on top of stack
  8156.         05h keyboard for current task
  8157. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  8158.       keyboards, and pointers, but causes a random branch
  8159.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  8160. --------Q-1512--BH80-------------------------
  8161. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  8162.     AH = 12h
  8163.     BH = 80h
  8164. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  8165.       not pop up a "Programming Error" window, instead returning an error
  8166.       code in AL (see #0344)
  8167. SeeAlso: AH=12h/BH=00h
  8168.  
  8169. (Table 0344)
  8170. Values for DESQview error code:
  8171.  00h    no error
  8172.  01h    invalid values
  8173.  02h    alias invalid
  8174.  03h    handle valid but wrong type
  8175.  04h    invalid handle
  8176. --------Q-1512--BH81-------------------------
  8177. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  8178.     AH = 12h
  8179.     BH = 81h
  8180. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  8181.       not pop up a "Programming Error" window, instead returning an error
  8182.       code in AL (see #0344)
  8183. SeeAlso: AH=12h/BH=01h
  8184. --------Q-1512--BH82-------------------------
  8185. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  8186.     AH = 12h
  8187.     BH = 82h
  8188. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  8189.       not pop up a "Programming Error" window, instead returning an error
  8190.       code in AL (see #0344)
  8191. SeeAlso: AH=12h/BH=02h
  8192. --------Q-1512--BH83-------------------------
  8193. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  8194.     AH = 12h
  8195.     BH = 83h
  8196. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  8197.       not pop up a "Programming Error" window, instead returning an error
  8198.       code in AL (see #0344)
  8199. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  8200. --------Q-1512--BH84-------------------------
  8201. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  8202.     AH = 12h
  8203.     BH = 84h
  8204. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  8205.       not pop up a "Programming Error" window, instead returning an error
  8206.       code in AL (see #0344)
  8207. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  8208. --------Q-1512--BH85-------------------------
  8209. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  8210.     AH = 12h
  8211.     BH = 85h
  8212. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  8213.       not pop up a "Programming Error" window, instead returning an error
  8214.       code in AL (see #0344)
  8215. SeeAlso: AH=12h/BH=05h
  8216. --------Q-1512--BH86-------------------------
  8217. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  8218.     AH = 12h
  8219.     BH = 86h
  8220. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  8221.       not pop up a "Programming Error" window, instead returning an error
  8222.       code in AL (see #0344)
  8223. SeeAlso: AH=12h/BH=06h
  8224. --------Q-1512--BH87-------------------------
  8225. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  8226.     AH = 12h
  8227.     BH = 87h
  8228. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  8229.       not pop up a "Programming Error" window, instead returning an error
  8230.       code in AL (see #0344)
  8231. SeeAlso: AH=12h/BH=07h
  8232. --------Q-1512--BH88-------------------------
  8233. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  8234.     AH = 12h
  8235.     BH = 88h
  8236. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  8237.       not pop up a "Programming Error" window, instead returning an error
  8238.       code in AL (see #0344)
  8239. SeeAlso: AH=12h/BH=08h
  8240. --------Q-1512--BH89-------------------------
  8241. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  8242.     AH = 12h
  8243.     BH = 89h
  8244. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  8245.       not pop up a "Programming Error" window, instead returning an error
  8246.       code in AL (see #0344)
  8247. SeeAlso: AH=12h/BH=09h
  8248. --------Q-1512--BH8A-------------------------
  8249. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  8250.     AH = 12h
  8251.     BH = 8Ah
  8252. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  8253.       not pop up a "Programming Error" window, instead returning an error
  8254.       code in AL (see #0344)
  8255. SeeAlso: AH=12h/BH=0Ah
  8256. --------Q-1512--BH8B-------------------------
  8257. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  8258.     AH = 12h
  8259.     BH = 8Bh
  8260. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  8261.       not pop up a "Programming Error" window, instead returning an error
  8262.       code in AL (see #0344)
  8263. SeeAlso: AH=12h/BH=0Bh
  8264. --------Q-1512--BH8C-------------------------
  8265. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  8266.     AH = 12h
  8267.     BH = 8Ch
  8268. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  8269.       not pop up a "Programming Error" window, instead returning an error
  8270.       code in AL (see #0344)
  8271. SeeAlso: AH=12h/BH=0Ch
  8272. --------Q-1512--BH8D-------------------------
  8273. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  8274.     AH = 12h
  8275.     BH = 8Dh
  8276. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  8277.       not pop up a "Programming Error" window, instead returning an error
  8278.       code in AL (see #0344)
  8279. SeeAlso: AH=12h/BH=0Dh
  8280. --------Q-1512--BH8E-------------------------
  8281. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  8282.     AH = 12h
  8283.     BH = 8Eh
  8284. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  8285.       not pop up a "Programming Error" window, instead returning an error
  8286.       code in AL (see #0344)
  8287. SeeAlso: AH=12h/BH=0Eh
  8288. --------Q-1512--BH8F-------------------------
  8289. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  8290.     AH = 12h
  8291.     BH = 8Fh
  8292. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  8293.       not pop up a "Programming Error" window, instead returning an error
  8294.       code in AL (see #0344)
  8295. SeeAlso: AH=12h/BH=0Fh
  8296. --------Q-1512--BH90-------------------------
  8297. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  8298.     AH = 12h
  8299.     BH = 90h
  8300. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  8301.       not pop up a "Programming Error" window, instead returning an error
  8302.       code in AL (see #0344)
  8303. SeeAlso: AH=12h/BH=10h
  8304. --------Q-1512--BH91-------------------------
  8305. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  8306.     AH = 12h
  8307.     BH = 91h
  8308. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  8309.       not pop up a "Programming Error" window, instead returning an error
  8310.       code in AL (see #0344)
  8311. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  8312. --------Q-1512--BH92-------------------------
  8313. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  8314.     AH = 12h
  8315.     BH = 92h
  8316. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  8317.       not pop up a "Programming Error" window, instead returning an error
  8318.       code in AL (see #0344)
  8319. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  8320. --------Q-1512--BH93-------------------------
  8321. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  8322.     AH = 12h
  8323.     BH = 93h
  8324. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  8325.       not pop up a "Programming Error" window, instead returning an error
  8326.       code in AL (see #0344)
  8327. SeeAlso: AH=12h/BH=13h
  8328. --------Q-1512--BH94-------------------------
  8329. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  8330.     AH = 12h
  8331.     BH = 94h
  8332. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  8333.       not pop up a "Programming Error" window, instead returning an error
  8334.       code in AL (see #0344)
  8335. SeeAlso: AH=12h/BH=14h
  8336. --------Q-1512--BH95-------------------------
  8337. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  8338.     AH = 12h
  8339.     BH = 95h
  8340. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  8341.       not pop up a "Programming Error" window, instead returning an error
  8342.       code in AL (see #0344)
  8343. SeeAlso: AH=12h/BH=15h
  8344. --------Q-1512--BH96-------------------------
  8345. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  8346.     AH = 12h
  8347.     BH = 96h
  8348. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  8349.       not pop up a "Programming Error" window, instead returning an error
  8350.       code in AL (see #0344)
  8351. SeeAlso: AH=12h/BH=16h
  8352. --------T-1513-------------------------------
  8353. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  8354.     AH = 13h
  8355.     STACK:    WORD    process ID
  8356. Return: AX = status (SYS_OK or SYS_ERROR)
  8357. SeeAlso: AH=12h"VMiX"
  8358. --------T-1513-------------------------------
  8359. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  8360.     AH = 13h
  8361. Return: BX:AX -> task control block (see #0345)
  8362. SeeAlso: AH=15h"MultiDOS"
  8363.  
  8364. Format of MultiDOS Plus v4.0 task control block:
  8365. Offset    Size    Description    (Table 0345)
  8366.  00h    DWORD    pointer to next TCB
  8367.  04h  8 BYTEs    ASCIZ task name
  8368.  0Ch  2 BYTEs    ???
  8369.  0Eh    WORD    task PSP segment
  8370.  10h    WORD    abort/suspend flags
  8371.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  8372.  14h    WORD    priority level (0000h-FFFEh)
  8373.  16h    WORD    time slice counter
  8374.  18h  2 BYTEs    ???
  8375.  1Ah    WORD    suspend timer value
  8376.  1Ch    WORD    stack segment
  8377.  1Eh    WORD    stack pointer
  8378.  20h    WORD    display type
  8379.  22h    WORD    display memory
  8380.  24h  2 BYTEs    ???
  8381.  26h    WORD    termination count
  8382.  28h    WORD    equipment flag for BIO10 driver
  8383.  2Ah    BYTE    background CRT mode
  8384.  2Bh    WORD    screen width in columns
  8385.  2Dh    WORD    screen size in bytes
  8386.  2Fh    WORD    segment of physical screen memory
  8387.  31h 16 BYTEs    eight cursor positions
  8388.  41h    WORD    current cursor shape
  8389.  43h    BYTE    active display page
  8390.  44h    WORD    CRT controller I/O port base
  8391.  46h  2 BYTEs    ???
  8392.  48h    WORD    foreground task flag
  8393.  4Ah  6 BYTEs    ???
  8394.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  8395.  52h    DWORD    old INT 22
  8396.  56h    DWORD    old INT 23
  8397.  5Ah    DWORD    old INT 24
  8398.  5Eh    WORD    top of memory for task
  8399.  60h  4 BYTEs    ???
  8400.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  8401.  66h    WORD    DTA offset
  8402.  68h  4 BYTEs    ???
  8403.  6Ch    BYTE    current ANSI.SYS attribute
  8404.  6Dh    BYTE    current ANSI.SYS column
  8405.  6Eh    BYTE    current ANSI.SYS row
  8406.  6Fh    BYTE    current ANSI.SYS display state
  8407.  70h    BYTE    maximum ANSI.SYS columns
  8408.  71h    BYTE    current ANSI.SYS page
  8409.  72h    WORD    saved ANSI.SYS cursor position
  8410.  74h    BYTE    ANSI.SYS parameter buffer index
  8411.  75h    BYTE    current ANSI.SYS screen mode
  8412.  76h    BYTE    ANSI.SYS wrap flag
  8413.  77h  6 BYTEs    ANSI.SYS parameter buffer
  8414.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  8415.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  8416.  85h  3 BYTEs    ???
  8417.  88h 16 BYTEs    request header for DOS driver calls
  8418.  98h 14 BYTEs    ???
  8419.  A6h    WORD    segment of EMS map if EMS task
  8420.  A8h    WORD    flag: task makes EMS calls
  8421.  AAh    WORD    EMS handle for task
  8422.  ACh    WORD    keyboard shift state
  8423.  AEh 12 BYTEs    ???
  8424.  BAh    WORD    TCB of parent if child task
  8425.  BCh    WORD    termination code
  8426.  BEh    WORD    COM port number
  8427.  C0h  4 BYTEs    ???
  8428.  C4h    WORD    current IRQ number
  8429.  C6h  2 BYTEs    ???
  8430.  C8h    WORD    miscellaneous flag word
  8431.  CAh  2 BYTEs    ???
  8432.  CCh    DWORD    old INT 10
  8433.  D0h    WORD    EMS alternate map set number
  8434.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  8435. --------T-1514-------------------------------
  8436. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  8437.     AH = 14h
  8438.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  8439.         WORD    bottom right corner of window (high = row, low = col)
  8440. Return: AX = status (SYS_OK)
  8441. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  8442. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  8443. --------T-1514-------------------------------
  8444. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  8445.     AH = 14h
  8446. Return: AX = current state
  8447.         0000h MultiDOS Plus command prompt is background task
  8448.         0001h command prompt is foreground task
  8449. SeeAlso: AH=0Bh"MultiDOS"
  8450. --------T-1515-------------------------------
  8451. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  8452.     AH = 15h
  8453.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  8454. Return: AX = status (SYS_OK)
  8455. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  8456. --------T-1515-------------------------------
  8457. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  8458.     AH = 15h
  8459. Return: BX:AX -> system block (see #0346)
  8460. SeeAlso: AH=13h"MultiDOS"
  8461.  
  8462. Format of MultiDOS Plus 4.0 system block:
  8463. Offset    Size    Description    (Table 0346)
  8464.  00h    WORD    segment of system control block
  8465.  02h    WORD    redirection flag set by /NOREDIRECT
  8466.  04h    WORD    no-INT 10 flag set by /NO10
  8467.  06h    DWORD    old INT 10
  8468.  0Ah    DWORD    new INT 10
  8469.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0345)
  8470.  12h    DWORD    pointer to WORD with idle task TCB offset
  8471.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0345)
  8472.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0345)
  8473.  1Eh    WORD    Task Control Block size
  8474.  20h    WORD    number of TCBs
  8475.  22h    WORD    flag: EMS present
  8476.  24h    WORD    EMS page frame base segment
  8477.  26h    WORD    16K pages in EMS page frame
  8478.  28h    WORD    base segment for conventional memory tasks
  8479.  2Ah    WORD    conventional memory size in paragraphs
  8480.  2Ch    DWORD    pointer to list of queue pointers
  8481. --------T-1516-------------------------------
  8482. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  8483.     AH = 16h
  8484.     STACK:    DWORD    pointer to I/O Request Packet
  8485.         WORD    top left corner of window (high byte = row, low = col)
  8486.         WORD    bottom right corner of window (high = row, low = col)
  8487. Return: AX = status (SYS_OK or SYS_ERROR)
  8488. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  8489. --------T-1516-------------------------------
  8490. INT 15 - MultiDOS Plus - INITIALIZATION
  8491.     AH = 16h
  8492. Note:    used internally during initialization; any other calls will cause
  8493.       unpredictable results
  8494. --------T-1517-------------------------------
  8495. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  8496.     AH = 17h
  8497. Return: AH = foreground color
  8498.     AL = background color
  8499. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  8500. --------T-1517-------------------------------
  8501. INT 15 - MultiDOS Plus - MAP IRQ
  8502.     AH = 17h
  8503.     AL = IRQ to map (01h-0Fh)
  8504.     BX = offset of task control block (see #0345) to associate with IRQ
  8505. Return: AX = status
  8506.         0000h successful
  8507.         other invalid IRQ
  8508. Note:    the EMS map of the specified TCB is associated with the given interrupt
  8509. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  8510. --------T-1518-------------------------------
  8511. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  8512.     AH = 18h
  8513.     STACK:    WORD    new background/foreground colors
  8514.             bits 3-0: foreground
  8515.             bits 7-4: background
  8516.             bits 15-8: unused
  8517. Return: AX = color
  8518. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  8519. --------T-1518-------------------------------
  8520. INT 15 - MultiDOS Plus - UNMAP IRQ
  8521.     AH = 18h
  8522.     AL = IRQ to unmap (01h-0Fh)
  8523. Return: AX = status
  8524.         0000h successful
  8525.         0001h invalid IRQ
  8526. Note:    results are unpredictable if the IRQ has not been mapped
  8527. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  8528. --------T-1519-------------------------------
  8529. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  8530.     AH = 19h
  8531.     STACK:    WORD    new background/foreground colors
  8532.             bits 3-0: foreground
  8533.             bits 7-4: background
  8534.             bits 15-8: unused
  8535. Return: AX = color
  8536. SeeAlso: AH=18h"VMiX"
  8537. --------T-1519-------------------------------
  8538. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  8539.     AH = 19h
  8540. Return: AX destroyed
  8541. Note:    for MultiDOS internal use only
  8542. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  8543. --------T-151A-------------------------------
  8544. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  8545.     AH = 1Ah
  8546.     STACK:    WORD    interrupt number
  8547.         DWORD    pointer to register structure
  8548. Return: AX = returned flags
  8549. --------T-151A-------------------------------
  8550. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  8551.     AH = 1Ah
  8552.     DS:SI -> 8-byte name
  8553. Return: AL = status
  8554.         00h successful
  8555.         AH = semaphore number (20h-3Fh)
  8556.         04h out of string space
  8557. Notes:    all eight bytes of the name are significant
  8558.     if the name does not already exist, it is added to the name table and
  8559.       associated with a free semaphore number
  8560.     names cannot be destroyed
  8561. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  8562. --------T-151B-------------------------------
  8563. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  8564.     AH = 1Bh
  8565.     STACK:    DWORD    source address
  8566.         DWORD    destination address
  8567.         WORD    number of words to move
  8568. Return: nothing
  8569. --------T-151B-------------------------------
  8570. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  8571.     AH = 1Bh
  8572.     DS:SI -> 8-byte name
  8573. Return: AH = status
  8574.         00h successful
  8575.         02h invalid semaphore number
  8576.         03h caller already owns semaphore
  8577.         04h out of string space
  8578. Notes:    (see AH=01h"MultiDOS")
  8579.     equivalent to AH=1Ah followed by AH=01h
  8580. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  8581. --------T-151C-------------------------------
  8582. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  8583.     AH = 1Ch
  8584.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  8585.         DWORD    pointer to object bitmap
  8586.         WORD    object width in pixels
  8587.         WORD    object height in pixels
  8588. Return: nothing
  8589. SeeAlso: AH=1Dh"VMiX"
  8590. --------T-151C-------------------------------
  8591. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  8592.     AH = 1Ch
  8593.     DS:SI -> 8-byte name
  8594. Return: AH = status
  8595.         00h successful
  8596.         01h not semaphore owner
  8597.         02h invalid semaphore number
  8598.         04h out of string space
  8599. Notes:    (see AH=02h"MultiDOS")
  8600.     equivalent to AH=1Ah followed by AH=02h
  8601. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  8602. --------T-151D-------------------------------
  8603. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  8604.     AH = 1Dh
  8605. Return: AX = current font number (00h-03h)
  8606. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  8607. --------T-151D-------------------------------
  8608. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  8609.     AH = 1Dh
  8610.     DS:SI -> 8-byte name
  8611. Return: AH = status
  8612.         00h semaphore not in use
  8613.         01h semaphore owned by another task
  8614.         02h invalid semaphore number
  8615.         03h caller owns semaphore
  8616.         04h out of string space
  8617. Notes:    (see AH=10h"MultiDOS")
  8618.     equivalent to AH=1Ah followed by AH=10h
  8619. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  8620. --------T-151E-------------------------------
  8621. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  8622.     AH = 1Eh
  8623.     STACK: WORD new font number (00h-03h)
  8624. Return: AX = current font number (00h-03h)
  8625. SeeAlso: AH=1Dh"VMiX"
  8626. --------T-151E00-----------------------------
  8627. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  8628.     AX = 1E00h
  8629.     DX = event/trigger number (00h-3Fh)
  8630. Return: AH = status
  8631.         00h successful
  8632. SeeAlso: AX=1E01h,AX=1E02h
  8633. --------T-151E01-----------------------------
  8634. INT 15 - MultiDOS Plus - TRIGGER EVENT
  8635.     AX = 1E01h
  8636.     DX = event/trigger number (00h-3Fh)
  8637. Return: AH = status
  8638.         00h successful
  8639.         01h invalid event/trigger number
  8640. Notes:    schedules any task waiting for event; if no task is waiting, the event
  8641.       counter is incremented (and will roll over if it was 65535)
  8642.     may be invoked by interrupt handler
  8643. SeeAlso: AX=1E00h,AX=1E02h
  8644. --------T-151E02-----------------------------
  8645. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  8646.     AX = 1E02h
  8647.     DX = event/trigger number (00h-3Fh)
  8648. Return: AH = status
  8649.         00h successful
  8650.         01h invalid event/trigger number
  8651. Note:    if the event counter is zero, the task is suspended until the event is
  8652.       triggered with AX=1E01h; else, the counter is decremented and the
  8653.       call returns immediately
  8654. SeeAlso: AX=1E00h,AX=1E01h
  8655. --------T-151E08-----------------------------
  8656. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  8657.     AX = 1E08h
  8658.     DX:BX -> context save handler (see #0347)
  8659.     DX:CX -> context restore handler (see #0347)
  8660. Note:    handlers may be removed by setting addresses to 0000h:0000h
  8661.  
  8662. (Table 0347)
  8663. Values MultiDOS Plus context-switch handlers are called with:
  8664.     ES:BX -> task's TCB
  8665. Return: all registers preserved
  8666. --------T-151F-------------------------------
  8667. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  8668.     AH = 1Fh
  8669.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  8670.         WORD    bottom right corner of window
  8671. Return: AX = status (SYS_OK)
  8672. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  8673. --------T-151F-------------------------------
  8674. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  8675.     AH = 1Fh
  8676. Return: BX = first segment of conventional memory
  8677.     DX = first segment of EMS swap frame into which MultiDOS will load
  8678.         programs
  8679. --------T-1520-------------------------------
  8680. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  8681.     AH = 20h
  8682. Return: AX = current state
  8683.         0000h multitasking enabled
  8684.         other TCB of task that disabled multitasking
  8685. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  8686. --------c-152000-----------------------------
  8687. INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  8688.     AX = 2000h
  8689. Desc:    stop setting user flag on entry to PRINT critical region
  8690. Note:    also supported by PC Network v1.00 RECEIVER.COM
  8691. SeeAlso: AX=2001h
  8692. --------c-152001-----------------------------
  8693. INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG
  8694.     AX = 2001h
  8695.     ES:BX -> byte which is to be incremented while in a DOS call
  8696. Desc:    specify a user flag which PRINT should set to let an interested
  8697.       application know it is in a critical region
  8698. Note:    also supported by PC Network v1.00 RECEIVER.COM
  8699. SeeAlso: AX=2000h
  8700. --------O-152010-----------------------------
  8701. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  8702.     AX = 2010h
  8703.     ???
  8704. Return: ???
  8705. SeeAlso: AX=2011h
  8706. --------O-152011-----------------------------
  8707. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  8708.     AX = 2011h
  8709.     ???
  8710. Return: ???
  8711. SeeAlso: AX=2010h
  8712. --------B-1521-------------------------------
  8713. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  8714.     AH = 21h
  8715.     AL = subfunction
  8716.         00h read POST log
  8717.         01h write POST log
  8718.         BH = device ID
  8719.         BL = error code
  8720. Return: CF set on error
  8721.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  8722.     if function 00h:
  8723.        BX = number of error codes stored
  8724.        ES:DI -> error log
  8725. Notes:    the log is a series of words, the first byte of which identifies the
  8726.       error code and the second the device.
  8727.     supported by AMI PCI BIOS
  8728. --------B-1522-------------------------------
  8729. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  8730.     AH = 22h
  8731. Return: CF set on error
  8732.         AH = status (86h if function not supported)
  8733.     CF clear on success
  8734.         AH = 00h
  8735.         ES:BX -> ROM BASIC
  8736. Note:    if this function is not supported, ROM BASIC is at F600h:0000h
  8737. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  8738. --------B-152300-----------------------------
  8739. INT 15 U - SYSTEM - PS/1s - GET ??? CMOS DATA
  8740.     AX = 2300h
  8741. Return: CF clear if successful
  8742.         CL = value of CMOS location 2Dh
  8743.         CH = value of CMOS location 2Eh
  8744.     CF set on error
  8745.         AH = error code (80h,86h)
  8746. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  8747. --------B-152301-----------------------------
  8748. INT 15 U - SYSTEM - PS/1s - SET ??? CMOS DATA
  8749.     AX = 2301h
  8750.     CL = new value for CMOS location 2Dh
  8751.     CH = new value for CMOS location 2Eh
  8752. Return: CF clear if successful
  8753.     CF set on error
  8754.         AH = error code (80h,86h)
  8755. Note:    sets the contents of CMOS locations 2Dh and 2Eh
  8756. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  8757. --------B-152304-----------------------------
  8758. INT 15 U - SYSTEM - PS/1s - SYSTEM SETUP
  8759.     AX = 2304h
  8760.     DX = segment of 32K buffer
  8761. Return: CF clear if successful
  8762.         AX = 0003h (left over from setting video mode 3)
  8763.         BX,CX,DX,BP,DS,ES destroyed
  8764.     CF set on error
  8765.         AH = error code (80h,86h)
  8766. SeeAlso: AX=2301h,AX=2305h
  8767. ----------152305-----------------------------
  8768. INT 15 U - SYSTEM - PS/1s - GET PROCESSOR SPEED
  8769.     AX = 2305h
  8770. Return: CF clear if successful
  8771.         AL = processor speed in MHz
  8772.     CF set on error
  8773.         AL = FFh (speed > 80 MHz)
  8774.         AL = error code (80h,86h = unsupported function)
  8775. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  8776. --------b-152400-----------------------------
  8777. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  8778.     AX = 2400h
  8779. Return: CF clear if successful
  8780.         AH = 00h
  8781.     CF set on error
  8782.         AH = status
  8783.         01h keyboard controller is in secure mode
  8784.         86h function not supported
  8785. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  8786. SeeAlso: AX=2401h,AX=2402h,AX=2403h
  8787. --------b-152401-----------------------------
  8788. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  8789.     AX = 2401h
  8790. Return: CF clear if successful
  8791.         AH = 00h
  8792.     CF set on error
  8793.         AH = status
  8794.         01h keyboard controller is in secure mode
  8795.         86h function not supported
  8796. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  8797. SeeAlso: AX=2400h,AX=2402h
  8798. --------b-152402-----------------------------
  8799. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  8800.     AX = 2402h
  8801. Return: CF clear if successful
  8802.         AH = 00h
  8803.         AL = current state (00h disabled, 01h enabled)
  8804.     CF set on error
  8805.         AH = status
  8806.         01h keyboard controller is in secure mode
  8807.         86h function not supported
  8808. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  8809. SeeAlso: AX=2400h,AX=2401h
  8810. --------b-152403-----------------------------
  8811. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  8812.     AX = 2403h
  8813. Return: CF clear if successful
  8814.         AH = 00h
  8815.         BX = status of A20 gate support (see #0348)
  8816.     CF set on error
  8817.         AH = status
  8818.         01h keyboard controller is in secure mode
  8819.         86h function not supported
  8820. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  8821. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  8822.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  8823.       thus causing a random branch on any value of AL greater than 3.
  8824. SeeAlso: AX=2402h
  8825.  
  8826. Bitfields for A20 gate support status:
  8827. Bit(s)    Description    (Table 0348)
  8828.  0    supported on keyboard controller
  8829.  1    supported with bit 1 of I/O port 92h
  8830.  15    additional data is available (location not yet defined)
  8831. ----------153000-----------------------------
  8832. INT 15 - Object Kernel for DOS - INSTALLATION CHECK
  8833.     AX = 3000h
  8834. Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
  8835.         CX = resident segment
  8836. Program: the Object Kernel is a program by M.W. Pieters which is currently
  8837.       under development
  8838. SeeAlso: AX=3001h,AX=3008h
  8839. ----------153001-----------------------------
  8840. INT 15 - Object Kernel for DOS - GET STATUS BLOCK
  8841.     AX = 3001h
  8842. Return: AX = FFFFh
  8843.     ES:DI -> status block
  8844. SeeAlso: AX=3000h,AX=3008h
  8845. ----------153002-----------------------------
  8846. INT 15 - Object Kernel for DOS - KILL PROCESS
  8847.     AX = 3002h
  8848.     (not yet implemented)
  8849. SeeAlso: AX=3000h
  8850. ----------153003-----------------------------
  8851. INT 15 - Object Kernel for DOS - STOP PROCESS
  8852.     AX = 3003h
  8853.     (not yet implemented)
  8854. SeeAlso: AX=3000h
  8855. ----------153004-----------------------------
  8856. INT 15 - Object Kernel for DOS - START PROCESS
  8857.     AX = 3004h
  8858.     (not yet implemented)
  8859. SeeAlso: AX=3000h
  8860. ----------153005-----------------------------
  8861. INT 15 - Object Kernel for DOS - RESTART PROCESS
  8862.     AX = 3005h
  8863.     (not yet implemented)
  8864. SeeAlso: AX=3000h
  8865. ----------153006-----------------------------
  8866. INT 15 - Object Kernel for DOS - EXECUTE PROCESS
  8867.     AX = 3006h
  8868.     (not yet implemented)
  8869. SeeAlso: AX=3000h
  8870. ----------153007-----------------------------
  8871. INT 15 - Object Kernel for DOS - LIST PROCESSES
  8872.     AX = 3007h
  8873.     (not yet implemented)
  8874. SeeAlso: AX=3000h
  8875. ----------153008-----------------------------
  8876. INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
  8877.     AX = 3008h
  8878.     BH = new state (00h disabled, 01h enabled)
  8879. Return: AX = FFFFh
  8880. SeeAlso: AX=3000h,AX=3009h
  8881. ----------153009-----------------------------
  8882. INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
  8883.     AX = 3009h to 30FFh
  8884. SeeAlso: AX=3000h
  8885. Program: the Object Kernel is a program by M.W. Pieters which is currently
  8886.       under development
  8887. --------B-1540-------------------------------
  8888. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  8889.     AH = 40h
  8890.     AL = subfunction
  8891.         00h get system profile in CX and BX
  8892.         01h set system profile from CX and BX
  8893.         02h get internal modem profile in BX
  8894.         03h set internal modem profile from BX
  8895. Return: CF clear if successful
  8896.         AH = 00h
  8897.     CF set on error
  8898.         AH = status (80h = profile execution failed)
  8899. --------V-154000-----------------------------
  8900. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  8901.     AX = 4000h
  8902. Return: AX = 4000h
  8903.     CL = timeout in minutes, 00h if disabled
  8904. SeeAlso: AX=4001h,AX=4600h
  8905. --------V-154001-----------------------------
  8906. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  8907.     AX = 4001h
  8908.     CL = timeout in minutes, 00h to disable
  8909. Return: AL = status
  8910.         00h timeout modified
  8911.         01h timeout cannot be modified
  8912.         40h timeout cannot be modified
  8913.     CL = timeout in minutes, 00h if disabled
  8914. SeeAlso: AX=4000h,AX=4601h
  8915. --------B-1541-------------------------------
  8916. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  8917.     AH = 41h
  8918.     AL = condition type (see #0349)
  8919.     BH = condition compare or mask value
  8920.     BL = timeout value times 55 milliseconds
  8921.         00h means no timeout
  8922.     DX = I/O port address if AL bit 4 set
  8923.     ES:DI -> user byte if AL bit 4 clear
  8924. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  8925.       this function is supported
  8926. SeeAlso: AH=83h,AH=86h,AH=C0h
  8927.  
  8928. Bitfields for external event wait condition type:
  8929. Bit(s)    Description    (Table 0349)
  8930.  0-2    condition to wait for
  8931.     0 any external event
  8932.     1 compare and return if equal
  8933.     2 compare and return if not equal
  8934.     3 test and return if not zero
  8935.     4 test and return if zero
  8936.  3    reserved
  8937.  4    1=port address, 0=user byte
  8938.  5-7    reserved
  8939. --------B-1542-------------------------------
  8940. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  8941.     AH = 42h
  8942.     AL = suspend type
  8943.         00h to use system profile
  8944.         01h to force suspend regardless of system profile
  8945. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  8946.       power-up, execution will resume following the instruction calling
  8947.       this function
  8948. SeeAlso: AH=44h
  8949. --------b-154280-----------------------------
  8950. INT 15 - Compaq SLT/286 - ENTER STANDBY
  8951.     AX = 4280h
  8952. Return: AH = 42h
  8953.     CF clear if successful
  8954.     CF set if unable to enter standby
  8955. SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h
  8956. --------B-1543-------------------------------
  8957. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  8958.     AH = 43h
  8959. Return: AL = status bits (see #0350)
  8960.  
  8961. Bitfields for Convertible system status:
  8962. Bit(s)    Description    (Table 0350)
  8963.  7    power low
  8964.  6    external power in use
  8965.  5    standby power lost
  8966.  4    power activated by alarm
  8967.  3    internal modem powered on
  8968.  2    RS232/parallel adapter powered on
  8969.  1    reserved
  8970.  0    LCD detached
  8971. --------B-1544-------------------------------
  8972. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  8973.     AH = 44h
  8974.     AL = new modem power state (00h power off, 01h power on)
  8975. SeeAlso: AH=42h
  8976. --------b-1544C0-----------------------------
  8977. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  8978.     AX = 44C0h
  8979.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  8980.     ES:SI -> ??? buffer
  8981. Return: ES:DI -> old DSP procedure
  8982.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  8983.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  8984. Note:    this function is also supported by XBIOS.COM
  8985. SeeAlso: AX=44C9h
  8986. --------b-1544C1-----------------------------
  8987. INT 15 - Olivetti Quaderno - ???
  8988.     AX = 44C1h
  8989.     ???
  8990. Return: ???
  8991. Note:    this function is also supported by XBIOS.COM
  8992. SeeAlso: AX=44C9h
  8993. --------b-1544C2-----------------------------
  8994. INT 15 - Olivetti Quaderno - ???
  8995.     AX = 44C2h
  8996.     DL = byte to be written to I/O port 350h
  8997. Note:    this function is also supported by XBIOS.COM
  8998. SeeAlso: AX=44C3h,AX=44C9h
  8999. --------b-1544C3-----------------------------
  9000. INT 15 - Olivetti Quaderno - GET ???
  9001.     AX = 44C3h
  9002. Return: DH = bitfields (see #0351)
  9003.     DL = value read from I/O port 350h
  9004. Note:    this function is also supported by XBIOS.COM
  9005. SeeAlso: AX=44C2h,AX=44C9h
  9006.  
  9007. Bitfields for Olivetti Quaderno ???:
  9008. Bit(s)    Description    (Table 0351)
  9009.  5-7    5-7 read from I/O port 351h
  9010.  2-4    zero
  9011.  1-0    "tres complique"
  9012. --------b-1544C4-----------------------------
  9013. INT 15 - Olivetti Quaderno - ???
  9014.     AX = 44C4h and 44C5h
  9015.     ???
  9016. Return: ???
  9017. Note:    this function is also supported by XBIOS.COM
  9018. SeeAlso: AX=44C9h
  9019. --------b-1544C6-----------------------------
  9020. INT 15 - Olivetti Quaderno - READ LCD
  9021.     AX = 44C6h
  9022. Return: DX = FFFFh clock is displayed on LCD display
  9023.     DX = other: hex number displayed in first four positions of display
  9024.     BH = left alphanumeric character on display (see #0352)
  9025.     BL = right alphanumeric character on display (see #0352)
  9026.     CL = colon flags (see #0353)
  9027. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  9028.       is an alphanumeric character
  9029.     this function is also supported by XBIOS.COM
  9030. SeeAlso: AX=44C7h,AX=44C9h
  9031.  
  9032. (Table 0352)
  9033. Values for Olivetti Quaderno LCD alphanumeric characters:
  9034.  00h-0Fh hex digit
  9035.  2Bh    "+"
  9036.  2Dh    "-"
  9037.  30h-39h "0" to "9"
  9038.  41h-5Ah "A" to "Z"
  9039.  61h-6Ah "a" to "z"
  9040.  else    blank
  9041.  
  9042. Bitfields for Olivetti Quaderno LCD colon flags:
  9043. Bit(s)    Description    (Table 0353)
  9044.  0    left colon on
  9045.  1    right colon on
  9046.  2-7    unused
  9047. --------b-1544C7-----------------------------
  9048. INT 15 - Olivetti Quaderno - WRITE LCD
  9049.     AX = 44C7h
  9050.     DX = hex display
  9051.         FFFFh display clock and "HI", "Md", or "Lo"
  9052.         BH,BL,CL unused
  9053.         other: display specified hex number in first four positions
  9054.         BH = left alphanumeric character on display (see #0352)
  9055.         BL = right alphanumeric character on display (see #0352)
  9056.         CL = colon flags (see #0353)
  9057. Note:    this function is also supported by XBIOS.COM
  9058. SeeAlso: AX=44C6h
  9059. --------b-1544C8-----------------------------
  9060. INT 15 - Olivetti Quaderno - ???
  9061.     AX = 44C8h
  9062.     CL = ??? (00h,02h,21h)
  9063.     CH = ???
  9064.     ???
  9065. Return: ???
  9066. Note:    this function is also supported by XBIOS.COM
  9067. SeeAlso: AX=44C9h
  9068. --------b-1544C9-----------------------------
  9069. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  9070.     AX = 44C9h
  9071. Return: AL = major version
  9072.     AH = minor version
  9073. Note:    this function is also supported by XBIOS.COM
  9074. --------b-1545-------------------------------
  9075. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS
  9076.     AH = 45h
  9077.     AL = new display control status
  9078.         bit 0: DISPCTL flag +C instead of -C
  9079.         bit 1: DISPCTL flag +K instead of -K
  9080. SeeAlso: AH=46h"HP",AX=4700h"HP"
  9081. --------b-1546-------------------------------
  9082. INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
  9083.     AH = 46h
  9084.     BX = timeout value in ticks
  9085.         0000h inhibit auto power off
  9086. Note:    the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
  9087. SeeAlso: AH=45h"HP",AX=4700h"HP"
  9088. --------b-154600-----------------------------
  9089. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  9090.     AX = 4600h
  9091. Return: AH = modem configuration information (see #0354)
  9092.     AL = power conservation status information (see #0355)
  9093.     BH = default system inactivity timeout (1-21 minutes)
  9094.     BL = current system inactivity timeout (1-21 minutes)
  9095.     CH = default video display inactivity timeout (1-63 minutes)
  9096.     CL = current video display inactivity timeout (1-63 minutes)
  9097.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  9098.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  9099. SeeAlso: AX=4280h,AX=4601h,INT 77
  9100.  
  9101. Bitfields for Compaq SLT/286 modem configuration information:
  9102. Bit(s)    Description    (Table 0354)
  9103.  0    powerup state (0 off, 1 on)
  9104.  1    modem installed
  9105.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  9106.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  9107.  4    modem state (0 not assigned, 1 assigned)
  9108.  5    modem is on
  9109.  
  9110. Bitfields for Compaq SLT/286 power conservation status:
  9111. Bit(s)    Description    (Table 0355)
  9112.  0    power source (0 internal, 1 external)
  9113.  1-2    low battery state
  9114.     00 no low battery condition
  9115.     01 low battery 1
  9116.     10 reserved
  9117.     11 low battery 2
  9118.  3-4    power conservation mode
  9119.     00 automatic, 01 on, 10 off, 11 reserved
  9120. --------b-154601-----------------------------
  9121. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  9122.     AX = 4601h
  9123.     BL = system inactivity timeout (1-21 minutes)
  9124.         FFh do not change
  9125.     CL = video display inactivity timeout (1-63 minutes)
  9126.         FFh do not change
  9127.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  9128.         FFh do not change
  9129.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  9130. Return: CF clear if successful
  9131.         AH = 00h
  9132.         BL = current system inactivity timeout (1-21 minutes)
  9133.         CL = current video display inactivity timeout (1-63 minutes)
  9134.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  9135.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  9136.     CF set on error
  9137.         AH = error code
  9138.         01h input is out of range
  9139.         02h no modem present
  9140. SeeAlso: AX=4600h,INT 77
  9141. --------b-154604-----------------------------
  9142. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  9143.     AX = 4604h
  9144. Return: CF clear if successful
  9145.         AL = byte read from I/O port 03F8h
  9146.     CF set on error (not supported)
  9147.         AH = 86h (unsupported function)
  9148. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  9149. --------b-154605-----------------------------
  9150. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  9151.     AX = 4605h
  9152. Return: CF clear if successful
  9153.     CF set on error (not supported)
  9154.         AH = 86h (unsupported function)
  9155. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  9156.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  9157.       LTE Lite 386 ROM
  9158. --------b-1547-------------------------------
  9159. INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST
  9160.     AH = 47h
  9161.     AL = subfunction
  9162.        00h set contrast
  9163.         BL = new contrast
  9164.             (00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh)
  9165.        other get current contrast
  9166. Return:    AL = contrast (00h-0Fh, 0Fh is darkest)
  9167. Note:    may be for backward compatibility with HP95LX, as INT 15/AH=62h does
  9168.       substantially the same thing as this function
  9169. SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP"
  9170. --------b-1548-------------------------------
  9171. INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME
  9172.     AH = 48h
  9173.     AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h)
  9174. SeeAlso: AH=47h"HP"
  9175. --------S-1549-------------------------------
  9176. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
  9177.     AH = 49h
  9178.     AL = serial interface
  9179.         00h wired (COM1)
  9180.         01h infrared
  9181. Note:    interface should only be changed in deactivated state (see AH=4Ah)
  9182. SeeAlso: AH=4Ah"HP"
  9183. --------J-154900-----------------------------
  9184. INT 15 - Far East MS-DOS - GET BIOS TYPE
  9185.     AX = 4900h
  9186. Return: CF clear if successful
  9187.         AH = 00h
  9188.         BL = BIOS mode
  9189.         00h DOS/V
  9190.         01h standard DBCS DOS (hardware DBCS support)
  9191.     CF set on error
  9192.         AH = 86h (function not supported)
  9193. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  9194. SeeAlso: AH=50h,INT 21/AH=30h
  9195. --------S-154A-------------------------------
  9196. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
  9197.     AH = 4Ah
  9198.     AL = control
  9199.         00h deactivate
  9200.         01h activate
  9201. Note:    interface selected with AH=49h will be (de)activated
  9202. SeeAlso: AH=49h"HP",AH=4Bh"HP"
  9203. --------b-154B-------------------------------
  9204. INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME
  9205.     AH = 4Bh
  9206. Desc:    adjust system time based on real-time clock
  9207. SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch
  9208. --------b-154DD4-----------------------------
  9209. INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
  9210.     AX = 4DD4h
  9211. Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
  9212.         CX = model
  9213.         0101h HP 95LX
  9214.         0102h HP 100LX/200LX
  9215.         DH = ???
  9216.         02h HP 200LX 2MB BIOS 1.01 A D german
  9217.         DL = ???
  9218.         00h HP 95LX
  9219.         01h HP 200LX 2MB BIOS 1.01 A D german
  9220. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  9221. SeeAlso: INT 61"HP 95LX"
  9222. --------b-154E-------------------------------
  9223. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  9224.     AH = 4Eh
  9225.     AL = light sleep
  9226.         00h disabled
  9227.         01h enabled
  9228. Note:    when light sleep is disabled, the system will continue running at full
  9229.       speed; when enabled, it may automatically slow to conserve batteries
  9230. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  9231. --------B-154F-------------------------------
  9232. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  9233.     AH = 4Fh
  9234.     AL = hardware scan code
  9235.     CF set
  9236. Return: CF set
  9237.        AL = hardware scan code
  9238.     CF clear
  9239.        scan code should be ignored
  9240. Notes:    called by INT 09 handler to translate scan codes; the INT 09 code does
  9241.       not examine the scan code it reads from the keyboard until after
  9242.       this function returns.  This permits software to rearrange the
  9243.       keyboard; for example, swapping the CapsLock and Control keys, or
  9244.       turning the right Shift key into Enter.
  9245.     DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is
  9246.       pressed and a SmartDrive v4-compatible cache is installed which has
  9247.       dirty cache buffers; some other disk caches such as HyperDisk
  9248.       operate similarly in order to prevent loss of cached data which has
  9249.       not yet been written to disk
  9250. SeeAlso: INT 09,INT 15/AH=C0h
  9251. --------!---Section--------------------------
  9252.