home *** CD-ROM | disk | FTP | other *** search
/ Hot Shareware 32 / hot34.iso / ficheros / DTOOL / INTER57A.ZIP / INTERRUP.B < prev    next >
Text File  |  1998-03-22  |  341KB  |  9,430 lines

  1. Interrupt List, part 2 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998 Ralf Brown
  3. --------V-10FE-------------------------------
  4. INT 10 - TopView - GET SHADOW BUFFER
  5.     AH = FEh
  6.     ES:DI -> assumed video buffer
  7.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  8.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  9. Return: ES:DI -> actual video buffer for calling process
  10. Desc:    Determine the address of the virtual screen to which the program
  11.       should write instead of the actual video memory; this permits
  12.       programs to be multitasked without interfering with each other's
  13.       output, and allows memory managers to move the video memory to
  14.       permit larger programs to be loaded.
  15. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  16.       returned unchanged; RSIS is the Relocated Screen Interface
  17.       Specification
  18.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  19.       whether a particular page exists
  20.     TopView requires a call to AH=FFh to notify it that the screen has
  21.       changed; DESQview will check for changes itself until the first call
  22.       to AH=FFh
  23. SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  24. SeeAlso: INT 21/AH=ECh"DoubleDOS"
  25. --------V-10FF-------------------------------
  26. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  27.     AH = FFh
  28.     CX = number of consecutive changed characters
  29.     ES:DI -> first changed character in shadow buffer
  30. Return: nothing
  31. Notes:    avoid CX=0000h
  32.     DESQview will discontinue the automatic screen updating initiated by
  33.       AH=FEh after this call
  34.     not supported (ignored) by DESQview/X 1.0x
  35. SeeAlso: AH=93h,AH=FEh
  36. --------E-10FF-------------------------------
  37. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  38.     AH = FFh
  39.     AL = video mode (see #0157)
  40. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  41.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  42. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  43.  
  44. (Table 0157)
  45. Values for GO32 video mode number:
  46.  00h    80x25 text
  47.  01h    default text
  48.  02h    CXxDX text
  49.  03h    biggest text
  50.  04h    320x200 graphics
  51.  05h    default graphics
  52.  06h    CXxDX graphics
  53.  07h    biggest non-interlaced graphics
  54.  08h    biggest graphics
  55. Index:    video modes;GO32
  56. --------V-10FF-------------------------------
  57. INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION
  58.     AH = FFh
  59.     AL = emulation
  60.         43h ('C') CGA emulation
  61.         45h ('E') EGA emulation
  62.         4Dh ('M') Hercules emulation
  63.         56h ('V') VGA emulation
  64.     ES:DI -> signature string "Calamity"
  65. Return: VGA switched to suggested mode
  66. SeeAlso: AH=00h,AX=007Fh/BH=00h,AX=007Fh/BH=02h,AX=5F01h
  67. --------R-10FF00-----------------------------
  68. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  69.     AX = FF00h
  70. Return: BL = state
  71.         00h not connected
  72.         01h connected
  73. SeeAlso: AX=FF01h,AX=FF02h
  74. --------R-10FF01-----------------------------
  75. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  76.     AX = FF01h
  77. Return: nothing
  78. SeeAlso: AX=FF00h,AX=FF02h
  79. --------R-10FF02-----------------------------
  80. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  81.     AX = FF02h
  82. Return: ES:DI -> ASCIZ phone number
  83. SeeAlso: AX=FF00h,AX=FF01h
  84. --------C-11---------------------------------
  85. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  86. Desc:    automatically generated by the CPU when the AC flag is set, the current
  87.       privilege level is 3, and a misaligned memory access (WORD not on an
  88.       even address or DWORD not on a multiple of 4) is made
  89. Note:    not all V86 monitors allow the AC flag to be set, such as Turbo
  90.       Debugger 386
  91. SeeAlso: INT 12"CPU"
  92. --------B-11---------------------------------
  93. INT 11 - BIOS - GET EQUIPMENT LIST
  94. Return: (E)AX = BIOS equipment list word (see #0158,#2886 at INT 4B"Tandy")
  95. Note:    since older BIOSes do not know of the existence of EAX, the high word
  96.       of EAX should be cleared before this call if any of the high bits
  97.       will be tested
  98. SeeAlso: INT 4B"Tandy 2000",MEM 0040h:0010h
  99.  
  100. Bitfields for BIOS equipment list:
  101. Bit(s)    Description    (Table 0158)
  102.  0    floppy disk(s) installed (number specified by bits 7-6)
  103.  1    80x87 coprocessor installed
  104.  3-2    number of 16K banks of RAM on motherboard (PC only)
  105.     number of 64K banks of RAM on motherboard (XT only)
  106.  2    pointing device installed (PS)
  107.  3    unused (PS)
  108.  5-4    initial video mode
  109.     00 EGA, VGA, or PGA
  110.     01 40x25 color
  111.     10 80x25 color
  112.     11 80x25 monochrome
  113.  7-6    number of floppies installed less 1 (if bit 0 set)
  114.  8    DMA support installed (PCjr, Tandy 1400LT)
  115.     DMA support *not* installed (Tandy 1000's)
  116.  11-9    number of serial ports installed
  117.  12    game port installed
  118.  13    serial printer attached (PCjr)
  119.     internal modem installed (PC/Convertible)
  120.  15-14    number of parallel ports installed
  121. ---Compaq, Dell, and many other 386/486 machines--
  122.  23    page tables set so that Weitek coprocessor addressable in real mode
  123.  24    Weitek math coprocessor present
  124. ---Compaq Systempro---
  125.  25    internal DMA parallel port available
  126.  26    IRQ for internal DMA parallel port (if bit 25 set)
  127.     0 = IRQ5
  128.     1 = IRQ7
  129.  28-27    parallel port DMA channel
  130.     00 DMA channel 0
  131.     01 DMA channel 0 ???
  132.     10 reserved
  133.     11 DMA channel 3
  134. SeeAlso: INT 12"BIOS",#2886 at INT 4B"Tandy 2000"
  135. --------d-11----SI6A6A-----------------------
  136. INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
  137.     SI = 6A6Ah
  138.     AH = command (see #0159)
  139.     AL = SCSI Addressing (see #0160)
  140. Return: CF clear if successful
  141.         DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
  142.         AH = ??? for command 01h
  143.     CF set on error
  144.         AL = error code
  145. SeeAlso: INT 21/AX=4402h"ASPI"
  146.  
  147. (Table 0159)
  148. Values for SDLP command:
  149.  00h    SDLP initialization
  150.  01h    SDLP System Identify
  151.  02h    simple read sectors
  152.  03h    simple write sectors
  153.  04h    simple verify sectors/seek to sector
  154.  05h    get device size/type
  155.  06h    ready unit
  156.  07h    format unit
  157.  08h    diagnostics
  158.  09h    rewind
  159.  0Ah    erase
  160.  0Bh    write filemarks
  161.  0Ch    space
  162.  0Dh    prevent/allow media removal
  163.  0Eh    load/unload media
  164.  0Fh    reserved - returns good status
  165.  10h    set block size
  166.  11h    write setmark
  167.  12h    set error level
  168.  13h    get address of Request Sense Buffer
  169.  14h    get SDLP error via Request Sense
  170.  F0h    Vendor Unique Function (WD7000-FASST2 only)
  171.  FDh    reset current SCSI HAC
  172.  FEh    get/set current SCSI HAC
  173.  FFh    execute SCSI command
  174.  
  175. Bitfields for SDLP SCSI addressing:
  176. Bit(s)    Description    (Table 0160)
  177.  7-6    Host Adapter
  178.  5-3    SCSI Target ID
  179.  2-0    SCSI Target LUN (logical unit number)
  180. --------V-110225BX6900-----------------------
  181. INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK
  182.     AX = 0225h
  183.     BX = 6900h
  184. Return: BL = 23h
  185.     ES:DI -> ASCIZ "BLNKIT"
  186. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  187.       Inc.
  188. SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h,INT 14/AX=AA01h
  189. Index:    screen saver;Blank-It
  190. --------V-110225BX6901-----------------------
  191. INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING
  192.     AX = 0225h
  193.     BX = 6901h
  194.     CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout
  195.          largest value is 59 minutes (FBACh or 64428)
  196. Return: CF clear if successful
  197.         DI = 6A6Ah (possibly also 6A6Ah for all following functions)
  198.         AH = ???
  199.     CF set on error
  200.         AL = error code
  201. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6904h
  202. Index:    screen saver;Blank-It
  203. --------V-110225BX6902-----------------------
  204. INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE
  205.     AX = 0225h
  206.     BX = 6902h
  207. Return: CF clear if successful
  208.     CF set on error
  209.         AL = error code
  210. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6903h
  211. Index:    screen saver;Blank-It
  212. --------V-110225BX6903-----------------------
  213. INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE
  214.     AX = 0225h
  215.     BX = 6903h
  216. Return: CF clear if successful
  217.     CF set on error
  218.         AL = error code
  219. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6902h
  220. Index:    screen saver;Blank-It
  221. --------V-110225BX6904-----------------------
  222. INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT
  223.     AX = 0225h
  224.     BX = 6904h
  225. Return: CF clear if successful
  226.         BX = timeout (see AX=0225h/BX=6901h)
  227.     CF set on error
  228.         AL = error code
  229. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6901h
  230. Index:    screen saver;Blank-It
  231. --------V-110225BX6905-----------------------
  232. INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE
  233.     AX = 0225h
  234.     BX = 6905h
  235. Return: CF clear if successful
  236.     CF set on error
  237.         AL = error code
  238. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6906h
  239. Index:    screen saver;Blank-It
  240. --------V-110225BX6906-----------------------
  241. INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE
  242.     AX = 0225h
  243.     BX = 6906h
  244. Return: CF clear if successful
  245.     CF set on error
  246.         AL = error code
  247. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  248.       Inc.
  249. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6905h
  250. Index:    screen saver;Blank-It
  251. --------V-110225BX6907-----------------------
  252. INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN
  253.     AX = 0225h
  254.     BX = 6907h
  255. Return: CF clear if successful
  256.     CF set on error
  257.         AL = error code
  258. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6908h
  259. Index:    screen saver;Blank-It
  260. --------V-110225BX6908-----------------------
  261. INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN
  262.     AX = 0225h
  263.     BX = 6908h
  264. Return: CF clear if successful
  265.     CF set on error
  266.         AL = error code
  267. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6907h
  268. Index:    screen saver;Blank-It
  269. --------V-110225BX6909-----------------------
  270. INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING
  271.     AX = 0225h
  272.     BX = 6909h
  273.     CL = key scan code (see #0161)
  274. Return: CF clear if successful
  275.     CF set on error
  276.         AL = error code
  277. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  278.       Inc.
  279. SeeAlso: AX=0225h/BX=6900h
  280. Index:    screen saver;Blank-It|hotkeys;Blank-It
  281.  
  282. (Table 0161)
  283. Values for Blank-It hotkey scan code:
  284.  00h    No hot key
  285.  1Dh    Left CTRL
  286.  2Ah    Left Shift
  287.  36h    Right Shift
  288.  57h    F11
  289.  58h    F12
  290. SeeAlso: #0005
  291. --------G-1105D7-----------------------------
  292. INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT
  293.     AX = 05D7h
  294.     BX = product ID (0088h)
  295. Note:    called by the BC++ IDE when an application calls
  296.       INT 12/AX=05D7h/BX=05D7h
  297. SeeAlso: INT 12/AX=05D7h/BX=05D7h
  298. Index:    installation check;Borland C++ IDE
  299. --------F-1177-------------------------------
  300. INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL
  301.     AH = 77h
  302.     AL = subfunction
  303.         01h request SFENGINE start
  304.         Return: AX = 0001h
  305.         02h check if SFENGINE started
  306.         Return: AX = 0000h or 0001h
  307.         03h request SFENGINE stop
  308.         Return: AX = 0001h
  309.         04h check if SFENGINE stopped
  310.         Return: AX = 0000h or 0001h
  311.         05h installation check
  312.         Return: AX = 0001h
  313.         06h uninstall???
  314.         BX:DX -> return address for successful uninstall???
  315.         Return: (at caller's address)
  316.             AX = 0000h
  317.         else
  318.         Return: AX = FFFFh (invalid subfunction)
  319. Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0"
  320.         followed by internal data area???
  321. SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch
  322. Index:    installation check;RainbowFAX|installation check;SFENGINE
  323. Index:    uninstall;RainbowFAX|uninstall;SFENGINE
  324. --------F-1178-------------------------------
  325. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  326.     AH = 78h
  327.     AL = subfunction
  328.         01h set ???
  329.         BX = new state for ???
  330.             0000h ???
  331.             else ???
  332.         Return: AX = 0001h
  333.         02h set ???
  334.         BX = ???
  335.         CX = ???
  336.         Return: AX = 0001h
  337.         03h set ???
  338.         BX = new state for ???
  339.             0000h ???
  340.             else ???
  341.         Return: AX = 0001h
  342.         else
  343.         Return: AX = FFFFh (invalid subfunction)
  344. SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch
  345. --------F-1179-------------------------------
  346. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  347.     AH = 79h
  348.     AL = subfunction
  349.         01h set ??? flag
  350.         Return: AX = previous state (0000h already set, 0001h clear)
  351.         02h clear ??? flag (refer to subfunc 01h)
  352.         Return: AX = 0001h
  353.         03h set ??? flag (different from subfn 02h or 04h)
  354.         Return: AX = 0001h
  355.         04h clear ??? flag (different from subfn 02h or 03h)
  356.         Return: AX = 0001h
  357.         else
  358.         Return: AX = FFFFh (invalid subfunction)
  359. SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch
  360. --------F-117A-------------------------------
  361. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  362.     AH = 7Ah
  363.     AL = subfunction
  364.         01h set ??? flag
  365.         Return: AX = previous state (0000h already set, 0001h clear)
  366.         02h clear ??? flag
  367.         Return: AX = 0001h
  368.         03h set ??? flag (different from subfn 02h)
  369.         Return: AX = 0001h
  370.         else
  371.         Return: AX = FFFFh (invalid subfunction)
  372. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch
  373. --------F-117C01-----------------------------
  374. INT 11 - RainbowFAX v1.3 - SFENGINE API - SET ??? FLAG
  375.     AX = 7C01h
  376. Return: AX = 0001h
  377. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C02h,AX=7C03h
  378. --------F-117C02-----------------------------
  379. INT 11 - RainbowFAX v1.3 - SFENGINE API - CLEAR ??? FLAG
  380.     AX = 7C02h
  381. Return: AX = 0001h
  382. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C01h,AX=7C03h
  383. --------F-117C03-----------------------------
  384. INT 11 - RainbowFAX v1.3 - SFENGINE API - UNSUPPORTED FUNCTIONS
  385.     AX = 7C03h-7CFFh
  386. Return: AX = FFFFh
  387. SeeAlso: AH=77h,AX=7C01h,AX=7C02h
  388. --------S-11BC--DX1954-----------------------
  389. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  390.     AH = BCh
  391.     DX = 1954h
  392. Return: AX = 1954h
  393.     ES:DX -> entry point of driver (instead of INT 14)
  394. SeeAlso: INT 14/AH=04h"FOSSIL"
  395. --------d-11FF--SI6A6A-----------------------
  396. INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
  397.     AH = FFh
  398.     SI = 6A6Ah
  399.     AL = SCSI Addressing (see #0162)
  400.     CX = bytes of data to be transmitted (max FFF0h)
  401.     DH = 00h
  402.     DL = length of SCSI Command Descriptor Block
  403.     DS:DI -> SCSI Command Descriptor Block
  404.     ES:BX -> data buffer
  405. Return: CF set on error
  406.         AL = error code
  407.     CF clear if successful
  408. Note:    because of busmaster operations with WD7000FASST avoid accessing
  409.       video memory directly; check 386 memory manager for VDS support.
  410.       The WD7000XTAT works with programmed IO and does not have this
  411.       limitation.
  412. SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h
  413.  
  414. Bitfields for SDLP SCSI addressing:
  415. Bit(s)    Description    (Table 0162)
  416.  2-0    SCSI Target LUN (logical unit number)
  417.  5-3    SCSI Target ID
  418.  7    write flag, set for write operations, clear otherwise
  419. --------T-11FFFECXFFFE-----------------------
  420. INT 11 - BACK&FORTH (before v1.62) API
  421.     AX = FFFEh
  422.     CX = FFFEh
  423.     BX = function
  424.         00h installation check
  425.         Return: AX = installation state
  426.                 0001h BNFHIGH and BNFLOW both loaded
  427.                 0003h only BNFHIGH loaded
  428.                 else neither loaded
  429.         01h ???
  430.         Return: DX:AX -> ???
  431.         02h ???
  432.         03h ???
  433.         04h ???
  434.         05h ??? switches current PSP segment and stack if BNFLOW has not
  435.             yet announced itself installed
  436.         06h ???
  437.         Return: AX = ???
  438. SeeAlso: INT 12/AX=FFFEh
  439. Index:    installation check;BACK&FORTH
  440. --------B-12---------------------------------
  441. INT 12 - BIOS - GET MEMORY SIZE
  442. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  443. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  444.       XT, this value is set from the switches on the motherboard
  445. SeeAlso: INT 11"BIOS",INT 2F/AX=4A06h,INT 4C"Tandy 2000",MEM 0040h:0013h
  446. --------C-12---------------------------------
  447. INT 12 - CPU-generated (Pentium) - MACHINE CHECK EXCEPTION
  448. Notes:    Intel documents this interrupt as CPU model-dependent; for current
  449.       Pentium processors, the reason for the machine check exception may
  450.       be read from model-specific registers 00h and 01h (described, for
  451.       example, in Christian Ludloff's 4P package)
  452.     this exception is enabled by bit 6 of CR4
  453. SeeAlso: INT 11"CPU",MSR 00000000h,MSR 00000001h
  454. --------K-12----CX1806-----------------------
  455. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  456.     CX = 1806h
  457. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  458.     CX = 1960h if installed
  459. Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  460.       accented characters and box drawing on standard QWERTY keyboards; it
  461.       also provides break-to-DOS and screen blanking capabilities
  462. SeeAlso: INT 14/AX=AA01h
  463. Index:    screen saver;KEYBUI
  464. --------d-12----CX1807-----------------------
  465. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  466.     CX = 1807h
  467. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  468.     CX = 1961h if installed
  469. Program: PARKER is an optionally-resident hard disk parking program by Johan
  470.       Zwiekhorst
  471. --------G-1205D7BX05D7-----------------------
  472. INT 12 U - Borland C++ IDE - INSTALLATION CHECK
  473.     AX = 05D7h (1495d)
  474.     BX = 05D7h
  475. Note:    the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
  476. SeeAlso: INT 11/AX=05D7h
  477. --------v-124350BX4920-----------------------
  478. INT 12 C - CPI-standard virus - "FRIEND" CHECK
  479.     AX = 4350h
  480.     BX = 4920h
  481.     CX = AB46h
  482.     DX = 554Eh
  483. Return: if friendly (not to be infected)
  484.         CX:DX -> ASCIZ identity code (changes yearly)
  485. SeeAlso: INT 13/AX=EC00h"VIRUS",INT 13/AX=5001h,INT 21/AX=0B56h
  486. --------T-12FFFECXFFFE-----------------------
  487. INT 12 - Back&Forth v1.62+ - API
  488.     AX = FFFEh
  489.     CX = FFFEh
  490.     BX = function
  491.         00h installation check
  492.         Return: AX = 0001h installed
  493.                  else  not loaded
  494.         01h (reserved)
  495.         02h build program ID list (shareware Back&Forth)
  496.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  497.         Return: AX = number of programs defined
  498.             ES:DI buffer filled with AX words
  499.         02h get memory statistics (Back&Forth Professional)
  500.         Return: AX = available swap memory, KBytes
  501.             BX = maximum task size, KBytes
  502.             DX = fixed overhead per task, excluding video/macro
  503.                   storage
  504.         03h switch to specified task (task need not be open yet)
  505.         DX = two-letter program ID
  506.         Return: AX = status
  507.                 0000h if task undefined
  508.                 0001h task switch will occur when safe
  509.         04h (reserved)
  510.         05h (reserved)
  511.         06h get version (documented only for Back&Forth Professional)
  512.         Return: AX = version * 100 (v1.71 = 00ABh)
  513.         07h spawn program (Back&Forth Professional only???)
  514.         ES:DI -> BF_SPAWN record (see #0164)
  515.         Return: AX = status
  516.                 0000h if no task handles free
  517.                 0001h spawn will occur when safe
  518.         08h get open tasks (documented only for Back&Forth Professional)
  519.         ES:DI -> task info buffer (see #0163,#0165)
  520.         Return: AX = number of open tasks (max 20)
  521.         Note:    the supplied buffer must be large enough to hold 21
  522.               task entries
  523.         09h (reserved)
  524.         ---Back&Forth Professional---
  525.         0Ah get active clipboard filename
  526.         Return: DX:AX -> ASCIZ clipboard filename
  527.         0Bh get active task number
  528.         AX = active task number (00h-13h)
  529.         BX = number of tasks allocated
  530.         DX = maximum number of tasks
  531.         0Ch (reserved)
  532.         0Dh (reserved)
  533.         0Eh (reserved)
  534.         0Fh stuff string into keyboard buffer
  535.         ES:DI -> ASCIZ string to be stuffed
  536.         Return: nothing
  537.         10h check if in graphics mode
  538.         Return: AX = state
  539.                 0000h color text mode
  540.                 0004h mono text mode
  541.                 FFFFh graphics mode
  542.         11h get Back&Forth Professional user number
  543.         Return: AX = user number (0000h-00FFh)
  544.         12h switch task by task number
  545.         DX = task number
  546.         Return: AX = status
  547.                 0000h attempted to switch to active task
  548.                 0001h task switch will occur when safe
  549.                 FFFFh invalid task number
  550.         13h delete (kill) task
  551.         DX = task number
  552.         Return: AX = status
  553.                 0000h attempted to delete the active task
  554.                 0001h successfully deleted
  555.                 FFFFh invalid task number
  556.         Note:    the active task number will change if the deleted task
  557.               was lower in the task list than the active task
  558.         14h get next available task handle
  559.         Return:    AX = next available task handle
  560.                 FFFFh if task table is full
  561. Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
  562. SeeAlso: INT 11/AX=FFFEh
  563. Index:    installation check;BACK&FORTH
  564.  
  565. Format of Back&Forth task info buffer:
  566. Offset    Size    Description    (Table 0163)
  567.  00h 21 BYTEs    ASCIZ task name
  568.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  569.  16h    WORD    hotkey scan code (see also #0005)
  570.  18h    WORD    program ID
  571. Index:    hotkeys;Back&Forth
  572. SeeAlso: #0164,#0165
  573.  
  574. Format of Back&Forth Professional BF_SPAWN record:
  575. Offset    Size    Description    (Table 0164)
  576.  00h 21 BYTEs    task description
  577.  15h    BYTE    flag: disable hotkeys
  578.  16h    WORD    environment size in bytes
  579.  18h    BYTE    hotkey shift flags
  580.  19h    WORD    hotkey scancode
  581.  1Bh    WORD    maximum number of EMS pages
  582.  1Dh    WORD    required memory in KBytes
  583.  1Fh  3 BYTEs    DESQview-style two-letter program ID
  584.  22h 13 BYTEs    base name of program to be run (no path or extension)
  585.  2Fh 66 BYTEs    directory from which to start program
  586.  71h 66 BYTEs    initial current directory for program
  587. SeeAlso: #0163,#0165
  588.  
  589. Format of Back&Forth Professional BF_TASK record:
  590. Offset    Size    Description    (Table 0165)
  591.  00h    DWORD    Unix-style task start time (seconds since 1/1/1970)
  592.  04h 21 BYTEs    task description
  593.  19h    DWORD    elapsed time in task (seconds)
  594.  1Dh    WORD    task ID
  595.  1Fh    BYTE    task hotkey keyboard flags
  596.  20h    WORD    task hotkey scan code (see also #0005)
  597.  22h    DWORD    time task was suspended/exited
  598.  26h    WORD    task handle
  599. SeeAlso: #0163,#0164
  600. --------B-1300-------------------------------
  601. INT 13 - DISK - RESET DISK SYSTEM
  602.     AH = 00h
  603.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  604. Return: AH = status (see #0166)
  605.     CF clear if successful (returned AH=00h)
  606.     CF set on error
  607. Note:    forces controller to recalibrate drive heads (seek to track 0)
  608.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  609.       both the master drive and the slave drive respond to the Reset
  610.       function that is issued to either drive
  611. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional"
  612. SeeAlso: INT 56"Tandy 2000",MEM 0040h:003Eh
  613. --------B-1301-------------------------------
  614. INT 13 - DISK - GET STATUS OF LAST OPERATION
  615.     AH = 01h
  616.     DL = drive (bit 7 set for hard disk)
  617. Return: CF clear if successful (returned status 00h)
  618.     CF set on error
  619.     AH = status of previous operation (see #0166)
  620. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  621.       status in both AH and AL
  622. SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h
  623.  
  624. (Table 0166)
  625. Values for disk operation status:
  626.  00h    successful completion
  627.  01h    invalid function in AH or invalid parameter
  628.  02h    address mark not found
  629.  03h    disk write-protected
  630.  04h    sector not found/read error
  631.  05h    reset failed (hard disk)
  632.  05h    data did not verify correctly (TI Professional PC)
  633.  06h    disk changed (floppy)
  634.  07h    drive parameter activity failed (hard disk)
  635.  08h    DMA overrun
  636.  09h    data boundary error (attempted DMA across 64K boundary or >80h sectors)
  637.  0Ah    bad sector detected (hard disk)
  638.  0Bh    bad track detected (hard disk)
  639.  0Ch    unsupported track or invalid media
  640.  0Dh    invalid number of sectors on format (PS/2 hard disk)
  641.  0Eh    control data address mark detected (hard disk)
  642.  0Fh    DMA arbitration level out of range (hard disk)
  643.  10h    uncorrectable CRC or ECC error on read
  644.  11h    data ECC corrected (hard disk)
  645.  20h    controller failure
  646.  31h    no media in drive (IBM/MS INT 13 extensions)
  647.  32h    incorrect drive type stored in CMOS (Compaq)
  648.  40h    seek failed
  649.  80h    timeout (not ready)
  650.  AAh    drive not ready (hard disk)
  651.  B0h    volume not locked in drive (INT 13 extensions)
  652.  B1h    volume locked in drive (INT 13 extensions)
  653.  B2h    volume not removable (INT 13 extensions)
  654.  B3h    volume in use (INT 13 extensions)
  655.  B4h    lock count exceeded (INT 13 extensions)
  656.  B5h    valid eject request failed (INT 13 extensions)
  657.  BBh    undefined error (hard disk)
  658.  CCh    write fault (hard disk)
  659.  E0h    status register error (hard disk)
  660.  FFh    sense operation failed (hard disk)
  661. SeeAlso: #M022
  662. --------B-1302-------------------------------
  663. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  664.     AH = 02h
  665.     AL = number of sectors to read (must be nonzero)
  666.     CH = low eight bits of cylinder number
  667.     CL = sector number 1-63 (bits 0-5)
  668.          high two bits of cylinder (bits 6-7, hard disk only)
  669.     DH = head number
  670.     DL = drive number (bit 7 set for hard disk)
  671.     ES:BX -> data buffer
  672. Return: CF set on error
  673.         if AH = 11h (corrected ECC error), AL = burst length
  674.     CF clear if successful
  675.     AH = status (see #0166)
  676.     AL = number of sectors transferred (only valid if CF set for some
  677.           BIOSes)
  678. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  679.       enough; the read should be retried at least three times, resetting
  680.       the disk with AH=00h between attempts
  681.     most BIOSes support "multitrack" reads, where the value in AL
  682.       exceeds the number of sectors remaining on the track, in which
  683.       case any additional sectors are read beginning at sector 1 on
  684.       the following head in the same cylinder; the MSDOS CONFIG.SYS command
  685.       MULTITRACK (or the Novell DOS DEBLOCK=) can be used to force DOS to
  686.       split disk accesses which would wrap across a track boundary into two
  687.       separate calls
  688.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  689.       DH (head number) since the WD-1003 controller which is the standard
  690.       AT controller (and the controller that IDE emulates) only supports
  691.       16 heads
  692.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  693.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  694.       into bits 6 and 7 of DH
  695.     under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh)
  696.       in order to perform direct accesses such as INT 13h reads and writes
  697.     all versions of MS-DOS (including v7 [Win95]) have a bug which prevents
  698.       booting on hard disks with 256 heads, so many modern BIOSes provide
  699.       mappings with at most 255 heads
  700. SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM"
  701. SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h
  702. --------B-1303-------------------------------
  703. INT 13 - DISK - WRITE DISK SECTOR(S)
  704.     AH = 03h
  705.     AL = number of sectors to write (must be nonzero)
  706.     CH = low eight bits of cylinder number
  707.     CL = sector number 1-63 (bits 0-5)
  708.          high two bits of cylinder (bits 6-7, hard disk only)
  709.     DH = head number
  710.     DL = drive number (bit 7 set for hard disk)
  711.     ES:BX -> data buffer
  712. Return: CF set on error
  713.     CF clear if successful
  714.     AH = status (see #0166)
  715.     AL = number of sectors transferred
  716.           (only valid if CF set for some BIOSes)
  717. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  718.       enough; the write should be retried at least three times, resetting
  719.       the disk with AH=00h between attempts
  720.     most BIOSes support "multitrack" writes, where the value in AL
  721.       exceeds the number of sectors remaining on the track, in which
  722.       case any additional sectors are written beginning at sector 1 on
  723.       the following head in the same cylinder; the CONFIG.SYS command
  724.       MULTITRACK can be used to force DOS to split disk accesses which
  725.       would wrap across a track boundary into two separate calls
  726.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  727.       DH (head number) since the WD-1003 controller which is the standard
  728.       AT controller (and the controller that IDE emulates) only supports
  729.       16 heads
  730.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  731.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  732.       into bits 6 and 7 of DH
  733.     under Windows95, an application must issue a physical volume lock on
  734.       the drive via INT 21/AX=440Dh before it can successfully write to
  735.       the disk with this function
  736. SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM"
  737. SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03h
  738. --------B-1304-------------------------------
  739. INT 13 - DISK - VERIFY DISK SECTOR(S)
  740.     AH = 04h
  741.     AL = number of sectors to verify (must be nonzero)
  742.     CH = low eight bits of cylinder number
  743.     CL = sector number 1-63 (bits 0-5)
  744.          high two bits of cylinder (bits 6-7, hard disk only)
  745.     DH = head number
  746.     DL = drive number (bit 7 set for hard disk)
  747.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  748. Return: CF set on error
  749.     CF clear if successful
  750.     AH = status (see #0166)
  751.     AL = number of sectors verified
  752. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  753.       enough; the write should be retried at least three times, resetting
  754.       the disk with AH=00h between attempts
  755.     this function does not compare the disk with memory, it merely
  756.       checks whether the sector's stored CRC matches the data's actual CRC
  757.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  758.       DH (head number) since the WD-1003 controller which is the standard
  759.       AT controller (and the controller that IDE emulates) only supports
  760.       16 heads
  761.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  762.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  763.       into bits 6 and 7 of DH
  764. SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06h
  765. --------B-1305-------------------------------
  766. INT 13 - FLOPPY - FORMAT TRACK
  767.     AH = 05h
  768.     AL = number of sectors to format
  769.     CH = track number
  770.     DH = head number
  771.     DL = drive number
  772.     ES:BX -> address field buffer (see #0167)
  773. Return: CF set on error
  774.     CF clear if successful
  775.     AH = status (see #0166)
  776. Notes:    on AT or higher, call AH=17h first
  777.     the number of sectors per track is read from the diskette parameter
  778.       table pointed at by INT 1E
  779. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  780.  
  781. Format of floppy format address field buffer entry (one per sector in track):
  782. Offset    Size    Description    (Table 0167)
  783.  00h    BYTE    track number
  784.  01h    BYTE    head number (0-based)
  785.  02h    BYTE    sector number
  786.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  787. --------B-1305-------------------------------
  788. INT 13 - FIXED DISK - FORMAT TRACK
  789.     AH = 05h
  790.     AL = interleave value (XT-type controllers only)
  791.     ES:BX -> 512-byte format buffer
  792.         the first 2*(sectors/track) bytes contain F,N for each sector
  793.            F = sector type
  794.             00h for good sector
  795.             20h to unassign from alternate location
  796.             40h to assign to alternate location
  797.             80h for bad sector
  798.            N = sector number
  799.     CH = cylinder number (bits 8,9 in high bits of CL)
  800.     CL = high bits of cylinder number (bits 7,6)
  801.     DH = head
  802.     DL = drive
  803. Return: CF set on error
  804.     CF clear if successful
  805.     AH = status code (see #0166)
  806. Notes:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  807.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  808.       into bits 6 and 7 of DH
  809.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  810.       first
  811.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  812.       DH (head number) since the WD-1003 controller which is the standard
  813.       AT controller (and the controller that IDE emulates) only supports
  814.       16 heads
  815.     not all controller support sector types 20h and 40h
  816.     under Windows95, an application must issue a physical volume lock on
  817.       the drive via INT 21/AX=440Dh before it can successfully write to
  818.       the disk with this function
  819. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  820. --------d-1305-------------------------------
  821. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  822.     AH = 05h
  823.     DL = hard drive ID
  824.     ES:BX -> mode select data (see #0168)
  825. Return: CF set on error
  826.     CF clear if successful
  827.     AH = status code (see #0166)
  828. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
  829.       format a SCSI disk with the desired parameters
  830.     the mode select data below is from the SCSI-1 specification
  831.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  832.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  833. SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
  834.  
  835. Format of Future Domain SCSI mode select data:
  836. Offset    Size    Description    (Table 0168)
  837.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  838.  01h    BYTE    reserved (0)
  839.  02h    BYTE    medium type (0 for hard disk)
  840.  03h    BYTE    reserved (0)
  841.  04h    BYTE    block descriptor length (8)
  842.  05h    BYTE    density code (0 for hard disk)
  843.  06h  3 BYTEs    (big-endian) number of blocks (000000h for entire disk)
  844.  09h    BYTE    reserved (0)
  845.  0Ah  3 BYTEs    (big-endian) block length (512 standard, or 256)
  846.  0Dh    ???    vendor-specific parameter bytes (optional)
  847. --------d-13057FSI324D-----------------------
  848. INT 13 - 2M - FORMAT TRACK
  849.     AX = 057Fh
  850.     SI = 324Dh ("2M")
  851.     CH = track number
  852.     DH = head number
  853.     DL = drive number
  854.     ES:BX -> boot sector of future 2M diskette
  855. Return: CF set on error
  856.     CF clear if successful
  857.     AH = status (see #0166)
  858. Program: 2M is a TSR developed by Ciriaco Garcia de Celis to support
  859.       non standard diskettes with 820-902/1476-1558K (5.25 DD/HD)
  860.       and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED)
  861. InstallCheck: must search for a "CiriSOFT:2M:1.3" or "CiriSOFT:2MX:3.0" or
  862.       similar (recomended ":2M:", ":2MX:", or ":2MB:" substrings) in the
  863.       CiriSOFT TSR interface
  864. Notes:    it is not necessary to call AH=17h or AH=18h first (will be ignored)
  865.     the diskette format must always begin on cylinder 0 head 0
  866.     the boot sector can be obtained from an already-formatted 2M diskette
  867.       (by calling AH=02h with head number 00h in 2M v1.x and with head
  868.       number 80h for 2M v2+)
  869.     since 2M v2.0, the BOOT sector is emulated using the first physical
  870.       sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED
  871.       diskettes store the SuperBOOT code. To skip the FAT2 emulation (using
  872.       FAT1) of 2M, in order to read the SuperBOOT code, head number must be
  873.       80h-81h instead 0-1 (bit 7 active) in standard read/write functions.
  874.       This lets diskcopy programs format 2M target diskettes copying
  875.       SuperBOOT code. If the target diskette is already 2MF formatted
  876.       (containing boot code) this trick it is not necessary.
  877.     when using STV technology (offset 65 of boot sector equal to 1) it is
  878.       necessary to write the full track before formatting (except track 0
  879.       side 0) to complete the format and skip future CRC errors on read; in
  880.       track 0 side 1 the head used must be 81h instead 1. Diskcopy programs
  881.       may do a format-write-verify sequential phases to improve performance
  882. SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT"
  883. --------B-1306-------------------------------
  884. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  885.     AH = 06h
  886.     AL = interleave value
  887.     CH = cylinder number (bits 8,9 in high bits of CL)
  888.     CL = sector number
  889.     DH = head
  890.     DL = drive
  891. Return: AH = status code (see #0166)
  892. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  893.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  894.       into bits 6 and 7 of DH
  895. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  896. --------d-1306-------------------------------
  897. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  898.     AH = 06h
  899.     AL = interleave
  900.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  901.     DL = hard drive ID
  902.     DH = defect list info (see #0169)
  903.     ES:BX -> defect table A, B or C (see #0170,#0171,#0172)
  904. Return: CF set on error
  905.     CF clear if successful
  906.     AH = status code (see #0166)
  907. Notes:    block addresses must be in ascending order (for table B, cylinder is
  908.       most significant, byte from index least significant; for table C,
  909.       cylinder is most significant, sector number least significant)
  910.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  911.       track shall be reassigned
  912.     table C defect sector number of FFFFFFFFh indicates that the entire
  913.       track shall be reassigned
  914.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  915.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  916. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  917.  
  918. Bitfields for Future Domain SCSI defect list info:
  919. Bit(s)    Description    (Table 0169)
  920.  7-5    drive LUN
  921.  4    defect list is available
  922.  3    defect list is complete (erase drive's defect list)
  923.  2-0    defect table format
  924.     (000=use defect table A, 100=use defect table B,
  925.      101=use defect table C)
  926.  
  927. Format of Future Domain SCSI defect table A:
  928. Offset    Size    Description    (Table 0170)
  929.  00h    WORD    number of bytes remaining in table
  930.  02h    BYTE    reserved (0)
  931.  03h    BYTE    reserved (0)
  932.  04h    WORD    (big-endian) defect list length (4*number of defects)
  933.  06h  4 DWORDs    (big-endian) defect block addresses
  934.  
  935. Format of Future Domain SCSI defect table B:
  936. Offset    Size    Description    (Table 0171)
  937.  00h    WORD    number of bytes remaining in table
  938.  02h    BYTE    reserved (0)
  939.  03h    BYTE    reserved (0)
  940.  04h    WORD    (big-endian) defect list length (8*number of defects)
  941.  06h 8N BYTEs    defect list [array] (see #0173)
  942.  
  943. Format of Future Domain SCSI defect table C:
  944. Offset    Size    Description    (Table 0172)
  945.  00h    WORD    number of bytes remaining in table
  946.  02h    BYTE    reserved (0)
  947.  03h    BYTE    reserved (0)
  948.  04h    WORD    (big-endian) defect list length (8*number of defects)
  949.  06h 8N BYTEs    defect list [array] (see #0173)
  950.  
  951. Format of Future Domain SCSI defect list entry:
  952. Offset    Size    Description    (Table 0173)
  953.  00h  3 BYTEs    (big-endian) cylinder number of defect
  954.  03h    BYTE    head number of defect
  955.  04h    DWORD    (big-endian) defect bytes from index
  956. --------d-1306-------------------------------
  957. INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
  958.     AH = 06h
  959. Return: AH = status code (see #0166)
  960.     CF clear if successful
  961.         AL = first drive supported
  962.         (80h nonconcurrent operation, 81h concurrent operation)
  963.     CF set on error
  964. Desc:    determine the number of the first supported SCSI drive
  965. Note:    the return value is 80h when two SCSI drives are supported, 81h if
  966.       only one SCSI drive is installed
  967. SeeAlso: AH=08h"PC",#0656 at INT 1A/AX=B102h
  968. --------d-1306-------------------------------
  969. INT 13 - V10DISK.SYS - READ DELETED SECTORS
  970.     AH = 06h
  971.     AL = number of sectors
  972.     CH = cylinder number (bits 8,9 in high bits of CL)
  973.     CL = sector number
  974.     DH = head
  975.     DL = drive
  976.     ES:BX -> buffer
  977. Return: AH = status code (see #0166)
  978. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  979. SeeAlso: AH=02h,AH=07h"V10DISK.SYS"
  980. --------B-1307-------------------------------
  981. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  982.     AH = 07h
  983.     AL = interleave value (XT only)
  984.     ES:BX = 512-byte format buffer (see AH=05h)
  985.     CH = cylinder number (bits 8,9 in high bits of CL)
  986.     CL = sector number
  987.     DH = head
  988.     DL = drive
  989. Return: AH = status code (see #0166)
  990. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  991.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  992.       into bits 6 and 7 of DH
  993. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  994. --------d-1307-------------------------------
  995. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  996.     AH = 07h
  997.     AL = interleave (0 = default, 1 = consecutive sectors,
  998.            2 - 255 = vendor unique)
  999.     DL = hard drive ID
  1000. Return: CF set on error
  1001.     CF clear if successful
  1002.     AH = status code (see #0166)
  1003. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  1004. --------d-1307-------------------------------
  1005. INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
  1006.     AH = 07h
  1007.     AL = number of sectors
  1008.     CH = cylinder number (bits 8,9 in high bits of CL)
  1009.     CL = sector number
  1010.     DH = head
  1011.     DL = drive
  1012.     ES:BX -> buffer
  1013. Return: AH = status code (see #0166)
  1014. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  1015. SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
  1016. --------B-1308-------------------------------
  1017. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  1018.     AH = 08h
  1019.     DL = drive (bit 7 set for hard disk)
  1020. Return: CF set on error
  1021.         AH = status (07h) (see #0166)
  1022.     CF clear if successful
  1023.         AH = 00h
  1024.         AL = 00h on at least some BIOSes
  1025.         BL = drive type (AT/PS2 floppies only) (see #0174)
  1026.         CH = low eight bits of maximum cylinder number
  1027.         CL = maximum sector number (bits 5-0)
  1028.          high two bits of maximum cylinder number (bits 7-6)
  1029.         DH = maximum head number
  1030.         DL = number of drives
  1031.         ES:DI -> drive parameter table (floppies only)
  1032. Notes:    may return successful even though specified drive is greater than the
  1033.       number of attached drives of that type (floppy/hard); check DL to
  1034.       ensure validity
  1035.     for systems predating the IBM AT, this call is only valid for hard
  1036.       disks, as it is implemented by the hard disk BIOS rather than the
  1037.       ROM BIOS
  1038.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  1039.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  1040.     may indicate only two drives present even if more are attached; to
  1041.       ensure a correct count, one can use AH=15h to scan through possible
  1042.       drives
  1043.     for BIOSes which reserve the last cylinder for testing purposes, the
  1044.       cylinder count is automatically decremented
  1045.     on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear,
  1046.       BX=CX=0000h, and ES:DI = 0000h:0000h
  1047.     the PC-Tools PCFORMAT program requires that AL=00h before it will
  1048.       proceed with the formatting
  1049. SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E
  1050. SeeAlso: INT 41"HARD DISK 0"
  1051.  
  1052. (Table 0174)
  1053. Values for diskette drive type:
  1054.  01h    360K
  1055.  02h    1.2M
  1056.  03h    720K
  1057.  04h    1.44M
  1058.  05h    ??? (reportedly an obscure drive type shipped on some IBM machines)
  1059.     2.88M on some machines (at least AMI 486 BIOS)
  1060.  06h    2.88M
  1061.  10h    ATAPI Removable Media Device
  1062. --------d-1308-------------------------------
  1063. INT 13 - V10DISK.SYS - SET FORMAT
  1064.     AH = 08h
  1065.     AL = number of sectors
  1066.     CH = cylinder number (bits 8,9 in high bits of CL)
  1067.     CL = sector number
  1068.     DH = head
  1069.     DL = drive
  1070. Return: AH = status code (see #0166)
  1071. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  1072. Note:    details not available
  1073. SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
  1074. --------y-130800DLF0-------------------------
  1075. INT 13 - SecureDrive - INSTALLATION CHECK
  1076.     AX = 08000h
  1077.     DL = F0h
  1078. Return: AX = EDCBh for version 1.0-1.2
  1079.     AX = EDCCh for version 1.3
  1080.     CX = code segment
  1081.     DX = data address within code segment
  1082. Program: SecureDrive by Mike Ingle <mikeingle@delphi.com> allows you to create
  1083.       an encrypted partition on your harddisk.
  1084. --------B-1309-------------------------------
  1085. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  1086.     AH = 09h
  1087.     DL = drive (80h for first, 81h for second)
  1088. Return: CF clear if successful
  1089.     CF set on error
  1090.     AH = status (see #0166)
  1091. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  1092.       INT 41
  1093.     on the AT and later, this function uses the parameter table pointed at
  1094.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  1095.       DL=81h
  1096. SeeAlso: INT 41"HARD DISK 0",INT 46"HARD DISK 1"
  1097. --------B-130A-------------------------------
  1098. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  1099.     AH = 0Ah
  1100.     AL = number of sectors (01h may be only value supported)
  1101.     CH = low eight bits of cylinder number
  1102.     CL = sector number (bits 5-0)
  1103.          high two bits of cylinder number (bits 7-6)
  1104.     DH = head number
  1105.     DL = drive number (80h = first, 81h = second)
  1106.     ES:BX -> data buffer
  1107. Return: CF clear if successful
  1108.     CF set on error
  1109.     AH = status (see #0166)
  1110.     AL = number of sectors transferred
  1111. Notes:    this function reads in four to seven bytes of error-correcting code
  1112.       along with each sector's worth of information
  1113.     data errors are not automatically corrected, and the read is aborted
  1114.       after the first sector with an ECC error
  1115.     used for diagnostics only on PS/2 systems; IBM officially classifies
  1116.       this function as optional
  1117. SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074h
  1118. --------B-130B-------------------------------
  1119. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  1120.     AH = 0Bh
  1121.     AL = number of sectors (01h may be only value supported)
  1122.     CH = low eight bits of cylinder number
  1123.     CL = sector number (bits 5-0)
  1124.          high two bits of cylinder number (bits 7-6)
  1125.     DH = head number
  1126.     DL = drive number (80h = first, 81h = second)
  1127.     ES:BX -> data buffer
  1128. Return: CF clear if successful
  1129.     CF set on error
  1130.     AH = status (see #0166)
  1131.     AL = number of sectors transferred
  1132. Notes:    each sector's worth of data must be followed by four to seven bytes of
  1133.       error-correction information
  1134.     used for diagnostics only on PS/2 systems; IBM officially classifies
  1135.       this function as optional
  1136. SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074h
  1137. --------B-130C-------------------------------
  1138. INT 13 - HARD DISK - SEEK TO CYLINDER
  1139.     AH = 0Ch
  1140.     CH = low eight bits of cylinder number
  1141.     CL = sector number (bits 5-0)
  1142.         high two bits of cylinder number (bits 7-6)
  1143.     DH = head number
  1144.     DL = drive number (80h = first, 81h = second hard disk)
  1145. Return: CF set on error
  1146.     CF clear if successful
  1147.     AH = status (see #0166)
  1148. SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47h
  1149. --------B-130D-------------------------------
  1150. INT 13 - HARD DISK - RESET HARD DISKS
  1151.     AH = 0Dh
  1152.     DL = drive number (80h = first, 81h = second hard disk)
  1153. Return: CF set on error
  1154.     CF clear if successful
  1155.     AH = status (see #0166)
  1156. Notes:    reinitializes the hard disk controller, resets the specified drive's
  1157.       parameters, and recalibrates the drive's heads (seek to track 0)
  1158.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  1159.       both the master drive and the slave drive respond to the Reset
  1160.       function that is issued to either drive
  1161.     not for PS/2 ESDI drives
  1162. SeeAlso: AH=00h,INT 21/AH=0Dh
  1163. --------B-130E-------------------------------
  1164. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  1165.     AH = 0Eh
  1166.     DL = drive number (80h = first, 81h = second hard disk)
  1167.     ES:BX -> buffer
  1168. Return: CF set on error
  1169.     CF clear if successful
  1170.     AH = status code (see #0166)
  1171. Notes:    transfers controller's sector buffer.  No data is read from the drive
  1172.     used for diagnostics only on PS/2 systems
  1173. SeeAlso: AH=0Ah
  1174. --------B-130F-------------------------------
  1175. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  1176.     AH = 0Fh
  1177.     DL = drive number (80h = first, 81h = second hard disk)
  1178.     ES:BX -> buffer
  1179. Return: CF set on error
  1180.     CF clear if successful
  1181.     AH = status code (see #0166)
  1182. Notes:    does not write data to the drive
  1183.     should be called before formatting to initialize an XT-type
  1184.       controller's sector buffer
  1185.     used for diagnostics only on PS/2 systems
  1186. SeeAlso: AH=0Bh
  1187. --------B-1310-------------------------------
  1188. INT 13 - HARD DISK - CHECK IF DRIVE READY
  1189.     AH = 10h
  1190.     DL = drive number (80h = first, 81h = second hard disk)
  1191. Return: CF set on error
  1192.     CF clear if successful
  1193.     AH = status (see #0166 at AH=01h)
  1194. SeeAlso: AH=11h
  1195. --------B-1311-------------------------------
  1196. INT 13 - HARD DISK - RECALIBRATE DRIVE
  1197.     AH = 11h
  1198.     DL = drive number (80h = first, 81h = second hard disk)
  1199. Return: CF set on error
  1200.     CF clear if successful
  1201.     AH = status (see #0166 at AH=01h)
  1202. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  1203. SeeAlso: AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED DISK",MEM 0040h:003Eh
  1204. --------B-1312-------------------------------
  1205. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  1206.     AH = 12h
  1207.     DL = drive number (80h = first, 81h = second hard disk)
  1208. Return: CF set on error
  1209.     CF clear if successful
  1210.     AH = status code (see #0166 at AH=01h)
  1211.     AL = 00h
  1212. SeeAlso: AH=13h,AH=14h
  1213. --------d-1312-------------------------------
  1214. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  1215.     AH = 12h
  1216.     DL = hard drive ID
  1217. Return: CF set on error
  1218.     CF clear if successful
  1219.     AH = status code (see #0166 at AH=01h)
  1220. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  1221.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  1222.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  1223.       is displayed
  1224.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1225.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1226. --------d-1312-------------------------------
  1227. INT 13 - SyQuest - START/STOP SCSI DISK
  1228.     AH = 12h
  1229.     AL = subfunction
  1230.         00h start disk
  1231.         01h stop disk
  1232.     CX = wait flag
  1233.         00h wait for ready
  1234.         01h don't wait for ready
  1235.     DL = hard drive ID (bit 7 for hard disks must be set)
  1236. Return: CF set on error
  1237.     CF clear if successful
  1238.     AH = status
  1239.         00h successful
  1240.         01h invalid function request
  1241.         80h timeout
  1242. SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"
  1243. --------B-1313-------------------------------
  1244. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  1245.     AH = 13h
  1246.     DL = drive number (80h = first, 81h = second hard disk)
  1247. Return: CF set on error
  1248.     CF clear if successful
  1249.     AH = status code (see #0166 at AH=01h)
  1250.     AL = 00h
  1251. SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK"
  1252. --------d-1313-------------------------------
  1253. INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
  1254.     AH = 13h
  1255.     DL = drive ID (bit 7 set for hard disks)
  1256. Return: CF set on error
  1257.         AH = status (07h) (see #0166 at AH=01h)
  1258.     CF clear if successful
  1259.         AH = 00h
  1260.         BL = drive type (AT/PS2 floppies only) (see #0174)
  1261.         CH = low eight bits of maximum cylinder number
  1262.         CL = maximum sector number (bits 5-0)
  1263.          high two bits of maximum cylinder number (bits 7-6)
  1264.         DH = maximum head number
  1265.         DL = number of drives
  1266.         ES:DI -> drive parameter table (floppies only)
  1267. Notes:    the return values are identical to the standard INT 13/AH=08h, but the
  1268.       number of drives is not limited to 2, so
  1269.     scanning all possible drive numbers with the Read DASD Type call
  1270.       (AH=15h) should generally be preferred to determine the number of
  1271.       drives attached to the system.
  1272. SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"
  1273. --------B-1314-------------------------------
  1274. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  1275.     AH = 14h
  1276. Return: CF set on error
  1277.     CF clear if successful
  1278.     AH = status code (see #0166 at AH=01h)
  1279.     AL = 00h
  1280. SeeAlso: AH=12h,AH=13h
  1281. --------B-1315-------------------------------
  1282. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  1283.     AH = 15h
  1284.     DL = drive number (bit 7 set for hard disk)
  1285. Return: CF clear if successful
  1286.         AH = type code
  1287.         00h no such drive
  1288.         01h floppy without change-line support
  1289.         02h floppy (or other removable drive) with change-line support
  1290.         03h hard disk
  1291.             CX:DX = number of 512-byte sectors
  1292.     CF set on error
  1293.         AH = status (see #0166 at AH=01h)
  1294. Note:    SyQuest can report type 01h or 02h for 'hard disks', since its media
  1295.       is removable
  1296. BUG:    many versions of the Award 486 BIOS do not return the sector count
  1297.       because the BIOS exit code restores CX and DX to their original
  1298.       values after the function had already set them to correct values
  1299. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  1300. --------B-1316-------------------------------
  1301. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  1302.     AH = 16h
  1303.     DL = drive number (00h-7Fh)
  1304. Return: CF clear if change line inactive
  1305.         AH = 00h (disk not changed)
  1306.     CF set if change line active
  1307.         AH = status
  1308.         01h invalid command (SyQuest)
  1309.         06h change line active or not supported
  1310.         80h drive not ready or not present
  1311. Notes:    call AH=15h first to determine whether the drive supports a change
  1312.       line
  1313.     this call also clears the media-change status, so that a disk change
  1314.       is only reported once
  1315. BUG:    some versions of Award 386 Modular BIOS and AMI BIOS fail to clear
  1316.       the media-change status
  1317. SeeAlso: AH=15h,AH=49h
  1318. --------B-1317-------------------------------
  1319. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  1320.     AH = 17h
  1321.     AL = format type
  1322.         01h = 320/360K disk in 360K drive
  1323.         02h = 320/360K disk in 1.2M drive
  1324.         03h = 1.2M disk in 1.2M drive
  1325.         04h = 720K disk in 720K or 1.44M drive
  1326.     DL = drive number
  1327. Return: CF set on error
  1328.     CF clear if successful
  1329.     AH = status (see #0166 at AH=01h)
  1330. Note:    this function does not handle 1.44M drives; use AH=18h instead
  1331. SeeAlso: AH=15h,AH=18h
  1332. --------d-131700-----------------------------
  1333. INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
  1334.     AX = 1700h
  1335.     CL = length of buffer
  1336.     DL = hard drive ID
  1337.     ES:BX -> buffer for info (see #0175)
  1338. Return: CF clear if successful
  1339.         CH = number of bytes returned in buffer???
  1340.     CF set on error
  1341.         AH = status code (see #0166 at AH=01h)
  1342. Notes:    this function is not available with 8-bit controller ROM versions < 7.0
  1343.     information block bytes 5-n are vendor-specific in older SCSI devices
  1344.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1345.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1346. SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
  1347.  
  1348. Format of Future Domain SCSI inquiry information block:
  1349. Offset    Size    Description    (Table 0175)
  1350.  00h    BYTE    device type
  1351.         bits 0-4: peripheral device type (see #0176)
  1352.         bits 5-7: peripheral qualifier (see #0177)
  1353.  01h    BYTE    device type modifier
  1354.         bits 0-6: device type modifier
  1355.         bit 7: removable medium
  1356.  02h    BYTE    SCSI version (see #0178)
  1357.  03h    BYTE    data format/capabilities (see #0179)
  1358.  04h    BYTE    additional data length (total remaining bytes)
  1359.  05h  2 BYTEs    reserved
  1360.  07h    BYTE    device capabilities (see #0180)
  1361.  08h  8 BYTEs    vendor identification (space-padded ASCII)
  1362.  10h  8 BYTEs    product identification (space-padded ASCII)
  1363.  20h  4 BYTEs    product revision level (space-padded ASCII)
  1364.  24h 20 BYTEs    vendor specific
  1365.  38h 40 BYTEs    reserved
  1366.  60h    var    vendor specific parameters
  1367.  
  1368. (Table 0176)
  1369. Values for Future Domain SCSI peripheral device type:
  1370.  00h    direct-access device (e.g., magnetic disk)
  1371.  01h    sequential-access device (e.g., magnetic tape)
  1372.  02h    printer device
  1373.  03h    processor device
  1374.  04h    write-once device (e.g., some optical disks)
  1375.  05h    CD-ROM device
  1376.  06h    scanner device
  1377.  07h    optical memory device (e.g., some optical disks)
  1378.  08h    medium changer device (e.g., jukeboxes)
  1379.  09h    communications device
  1380.  0Ah    (defined by ASC IT8)
  1381.  0Bh    (defined by ASC IT8)
  1382.  0Ch-1Eh reserved
  1383.  1Fh    unknown or no device type
  1384.  
  1385. (Table 0177)
  1386. Values for Future Domain SCSI peripheral qualifier:
  1387.  000b    device is currently connected to this logical unit and available
  1388.  001b    target is capable of supporting the specified peripheral, but the
  1389.       physical device is not currently connected to this logical unit
  1390.  010b    reserved
  1391.  011b    target can't support a physical device on this logical unit
  1392.  1xxb    vendor specific
  1393.  
  1394. Bitfields for Future Domain SCSI version:
  1395. Bit(s)    Description    (Table 0178)
  1396.  0-2    ANSI-approved version
  1397.     000 device might or might not comply to ANSI standard
  1398.     001 device complies to ANSI SCSI-1
  1399.     010 device complies to ANSI SCSI-2
  1400.     other reserved
  1401.  3-5    ECMA version
  1402.  6-7    ISO version
  1403.  
  1404. Bitfields for Future Domain SCSI data format/capabilities:
  1405. Bit(s)    Description    (Table 0179)
  1406.  0-2    response data format
  1407.     000 information block is as specified in SCSI-1
  1408.     001 information block is as specified in CCS
  1409.     010 information block is as specified in SCSI-2
  1410.     other reserved
  1411.  4-5    reserved
  1412.  6    terminate I/O process supported
  1413.  7    asynchronous event notification supported
  1414.  
  1415. Bitfields for Future Domain SCSI device capabilities:
  1416. Bit(s)    Description    (Table 0180)
  1417.  0    device responds to RESET with a hard RESET
  1418.  1    tagged command queuing supported
  1419.  2    reserved
  1420.  3    linked commands supported
  1421.  4    synchronous data transfer supported
  1422.  5    16-transfers supported
  1423.  6    32-transfers supported
  1424.  7    relative addressing supported
  1425. --------B-1318-------------------------------
  1426. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  1427.     AH = 18h
  1428.     DL = drive number
  1429.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  1430.     CL = sectors per track (bits 0-5)
  1431.          top 2 bits of highest cylinder number (bits 6,7)
  1432. Return: AH = status
  1433.         00h requested combination supported
  1434.         01h function not available
  1435.         0Ch not supported or drive type unknown
  1436.         80h there is no disk in the drive
  1437.     ES:DI -> 11-byte parameter table (see #0960 at INT 1E)
  1438. Note:    this function does not set the INT 1E vector to point at the returned
  1439.       parameter table; it is the caller's responsibility to do so
  1440. SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E
  1441. --------d-1318-------------------------------
  1442. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  1443.     AH = 18h
  1444.     DL = hard drive ID
  1445. Return: CF set on error
  1446.         AH = status code (see #0166 at AH=01h)
  1447.     CF clear if successful
  1448.         AX = 4321h (magic number)
  1449.         CX = controller family code (see #0181)
  1450.         ---if family code=0200h
  1451.         DH = number of exclusively ROM-controlled SCSI devices
  1452.         DL = canonical SCSI device number for specified drive
  1453.         ---if family code <> 0200h
  1454.         BH = number of exclusively ROM-controlled SCSI devices
  1455.         BL = canonical SCSI device number for specified drive
  1456. Notes:    also sets an internal flag (non-resettable) which prevents some
  1457.       controller messages from being displayed, allows writes to
  1458.       removable devices (use caution!), and enables the INT 13 interface
  1459.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  1460.       versions
  1461.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1462.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1463. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  1464.  
  1465. (Table 0181)
  1466. Values for Future Domain SCSI controller family code:
  1467.  0200h    TMC-1680/? (ROM 3.0)
  1468.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  1469.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  1470.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  1471.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  1472. --------d-1318--CX5055-----------------------
  1473. INT 13 - PU_1700.COM - INSTALLATION CHECK
  1474.     AH = 18h
  1475.     CX = 5055h ('PU')
  1476.     DL = 00h
  1477. Return: AX = 7570h ('up') if PU_1700 is installed
  1478. Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits
  1479.       formatting diskettes at higher capacity (1.78M instead of 1.44M)
  1480. SeeAlso: AX=057Fh/SI=324Dh"2M"
  1481. --------d-1318--CXD2C9-----------------------
  1482. INT 13 - XDF.COM - API
  1483.     AH = 18h
  1484.     CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
  1485.     DX = 0000h
  1486.     BX = function
  1487.         0000h installation check
  1488.           Return: AH = 0Ch
  1489.               CX = 7269h ("ri" = Roger Ivey)
  1490.               ES = segment of driver
  1491.               CF set
  1492.         2F64h ("/d") disable the driver
  1493.           Return: AH = 0Ch
  1494.               ES:BX = pointer to activation flag (it is set to 0:
  1495.                   set it to 1 to enable the driver again)
  1496.               CX = 7269h
  1497.               CF set
  1498.         2F75h ("/u") unload the driver (restore interrupts & free memory)
  1499.           Return: AH = 0Ch
  1500.               DL = 55h ("U") if successful
  1501.                  = 00h       if fails
  1502.               CX = 7269h
  1503.               ES = segment of driver
  1504.               CF set
  1505.               AL, BX, DH, and DI destroyed
  1506. Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
  1507.       developed by Roger D. Ivey
  1508. Note:    After disabling or enabling the driver, a disk change must be performed
  1509.       or simulated to reset the driver.
  1510. --------B-1319-------------------------------
  1511. INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
  1512.     AH = 19h
  1513.     DL = drive
  1514. Return: CF set on error
  1515.     CF clear if successful
  1516.     AH = status (see #0166 at AH=01h)
  1517. SeeAlso: AH=11h
  1518. --------d-1319-------------------------------
  1519. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  1520.     AH = 19h
  1521.     DL = hard drive ID
  1522. Return: CF set on error
  1523.         AH = status code (see #0166 at AH=01h)
  1524.     CF clear if successful
  1525.         AH = disk type (03h = fixed disk)
  1526.         CX:DX = number of 512-byte sectors
  1527. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  1528.       adjusts the result for 512-byte sectors
  1529.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  1530.       sector" (nnn=256 or 512, the only sizes supported in the translation
  1531.       code)
  1532.     should probably be called when a removable device has its media changed
  1533.     returns the same values as AH=15h
  1534.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1535.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1536. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  1537. --------d-131A-------------------------------
  1538. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  1539.     AH = 1Ah
  1540.     AL = defect table entry count
  1541.     CL = format modifiers (see #0182)
  1542.     DL = drive (80h,81h)
  1543.     ES:BX -> defect table (see #0183), ignored if AL=00h
  1544. Return: CF set on error
  1545.     CF clear if successful
  1546.     AH = status (see #0166 at AH=01h)
  1547. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  1548.       cylinder is formatted
  1549. SeeAlso: AH=07h,INT 15/AH=0Fh
  1550.  
  1551. Bitfields for ESDI format modifiers:
  1552. Bit(s)    Description    (Table 0182)
  1553.  4    generate periodic interrupt
  1554.  3    perform surface analysis
  1555.  2    update secondary defect map
  1556.  1    ignore secondary defect map
  1557.  0    ignore primary defect map
  1558.  
  1559. Format of defect table entry [array]:
  1560. Offset    Size    Description    (Table 0183)
  1561.  00h  3 BYTEs    relative sector address (little-endian)
  1562.  03h    BYTE    flags and defect count
  1563.         bit 7: last logical sector on track
  1564.         bit 6: first logical sector on track
  1565.         bit 5: last logical sector on cylinder
  1566.         bit 4: logical sectors are pushed onto next track
  1567.         bits 3-0: number of defects pushed from previous cylinder
  1568. --------d-131A-------------------------------
  1569. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  1570.     AH = 1Ah
  1571.     CH = track (bits 8,9 in high bits of CL)
  1572.     CL = sector (01h to number of sectors/track for drive)
  1573.     DH = head
  1574.     DL = hard drive ID
  1575. Return: CF set on error
  1576.     AH = status code (see #0166 at AH=01h)
  1577.     CX:DX = logical block number of last quickly-accessible block after
  1578.         given block
  1579. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  1580.       logical block address of the last block after which a substantial
  1581.       delay in data transfer will be encountered (usually the last block
  1582.       on the current cylinder).  No translation to 512 byte sectors is
  1583.       performed on the result if data is stored on the disk in other than
  1584.       512 byte sectors.
  1585.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1586.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1587. SeeAlso: AH=15h,AH=19h"SCSI"
  1588. --------d-131B-------------------------------
  1589. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  1590.     AH = 1Bh
  1591.     AL = number of sectors to read
  1592.     DL = drive
  1593.     ES:BX -> buffer for manufacturing header (defect list)
  1594. Return: CF set on error
  1595.     CF clear if successful
  1596.     AH = status
  1597. Note:    manufacturing header format (Defect Map Record format) can be found
  1598.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  1599.     the first sector read contains the manufacturing header with the number
  1600.       of defect entries and the beginning of the defect map; the remaining
  1601.       sectors contain the remainder of the defect map
  1602. --------d-131B-------------------------------
  1603. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  1604.     AH = 1Bh
  1605.     DL = hard drive ID
  1606. Return: CF set on error
  1607.         AH = status code (see #0166 at AH=01h)
  1608.     CF clear if successful
  1609.         ES:BX -> SCSI disk information block (see #0184)
  1610. Notes:    also sets a non-resettable flag which prevents some controller messages
  1611.       from being displayed
  1612.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1613.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1614. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  1615.  
  1616. Format of Future Domain SCSI disk information block:
  1617. Offset    Size    Description    (Table 0184)
  1618.  00h    BYTE    drive physical information (see #0185)
  1619.  01h    WORD    translated number of cylinders
  1620.  03h    BYTE    translated number of heads
  1621.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  1622.  05h    BYTE    drive address
  1623.         bits 0-2: logical unit number
  1624.         bits 3-5: device number
  1625.  06h    BYTE    01h at initialization
  1626.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  1627.  08h    BYTE    00h
  1628.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  1629.  0Ah    BYTE    00h
  1630.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB) (see #2907,#2908)
  1631.  15h    DWORD    translated number of sectors on device
  1632.  
  1633. Bitfields for Future Domain SCSI device physical information:
  1634. Bit(s)    Description    (Table 0185)
  1635.  0    ???
  1636.  1    device uses parity
  1637.  2    256 bytes per sector instead of 512
  1638.  3    don't have capacity yet???
  1639.  4    disk is removable
  1640.  5    logical unit number is not present
  1641. --------d-131C-------------------------------
  1642. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  1643.     AH = 1Ch
  1644.     DL = hard drive ID (any valid SCSI hard disk)
  1645. Return: CF set on error
  1646.         AH = status code (see #0166 at AH=01h)
  1647.     CF clear if successful
  1648.         ES:BX -> first byte of free RAM on controller
  1649. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  1650.       to 1BFFh on-board the controller for storing drive information and
  1651.       controller status; ES:BX points to the first byte available for other
  1652.       uses
  1653.     ES contains the segment at which the controller resides; the
  1654.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  1655. SeeAlso: AH=1Bh"SCSI"
  1656. --------d-131C-------------------------------
  1657. INT 13 U - ESDI FIXED DISK - ???
  1658.     AH = 1Ch
  1659.     AL = subfunction (01h-06h)
  1660.     DL = drive (80h,81h)
  1661.     ???
  1662. Return: ???
  1663. Note:    these functions perform a controller command 0612h without DMA
  1664. SeeAlso: AX=1C08h,PORT 3510h"ESDI"
  1665. --------d-131C08-----------------------------
  1666. INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
  1667.     AX = 1C08h
  1668.     DL = drive (80h,81h)
  1669.     ES:BX -> buffer for Command Complete Status Block (see #0186)
  1670. Return: CF set on error
  1671.     CF clear if successful
  1672.     AH = status (see #0166 at AH=01h)
  1673. SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI"
  1674.  
  1675. Format of ESDI Command Complete Status Block:
  1676. Offset    Size    Description    (Table 0186)
  1677.  00h    BYTE    07h
  1678.  01h    BYTE    size of block in words (07h)
  1679.  02h    BYTE    command error code (see #0187)
  1680.  03h    BYTE    command status code (see #0188)
  1681.  04h    BYTE    device error code, group 1 (see #0189)
  1682.  05h    BYTE    device error flags, group 2 (see #0190)
  1683.  06h    WORD    number of unprocessed sectors due to abnormal termination
  1684.  08h    DWORD    last Relative Sector Address processed by command
  1685.  0Ch    WORD    number of sectors corrected by ECC codes
  1686.  
  1687. (Table 0187)
  1688. Values for ESDI command error code:
  1689.  00h    successful
  1690.  01h    parameter invalid
  1691.  02h    unknown function
  1692.  03h    unsupported command
  1693.  04h    command cancelled
  1694.  05h    unknown function
  1695.  06h    controller diagnostics failed
  1696.  07h    formatting failed
  1697.  08h    format error in primary map
  1698.  09h    format error in secondary map
  1699.  0Ah    diagnostic failure during formatting
  1700.  0Bh    warning: secondary map too large during formatting
  1701.  0Ch    warning: non-zero defect
  1702.  0Dh    system checksum error during formatting
  1703.  0Eh    warning: incompatible device
  1704.  0Fh    warning: push table overflowed
  1705.  10h    warning: more than 15 sectors pushed to next cylinder
  1706.  11h    internal hardware error
  1707.  12h    warning: errors found while verifying sectors
  1708.  13h    invalid device
  1709.  FFh    device error
  1710.  
  1711. (Table 0188)
  1712. Values for ESDI command status code:
  1713.  01h    successful
  1714.  03h    successful after ECC
  1715.  05h    successful after retries
  1716.  06h    format partially completed
  1717.  07h    successful after ECC and retries
  1718.  08h    command completed with warning (see #0187)
  1719.  09h    abort complete
  1720.  0Ah    reset complete
  1721.  0Bh    data transfer ready (no status block)
  1722.  0Ch    command completed with failure (see #0189,#0190)
  1723.  0Dh    DMA error
  1724.  0Eh    command block error (see #0187)
  1725.  0Fh    bad attention code
  1726. SeeAlso: #0189
  1727.  
  1728. (Table 0189)
  1729. Values for ESDI device error code, group 1:
  1730.  00h    successful
  1731.  01h    seek fault detected by device
  1732.  02h    interface fault
  1733.  03h    sector ID not found
  1734.  04h    disk not formatted
  1735.  05h    unrecoverable ECC error
  1736.  06h    ECC error in sector ID
  1737.  07h    invalid relative sector address
  1738.  08h    timeout
  1739.  09h    sector defective
  1740.  0Ah    disk changed (removable media)
  1741.  0Bh    selection error
  1742.  0Ch    write protected (removable media)
  1743.  0Dh    write fault
  1744.  0Eh    read fault
  1745.  0Fh    no index or sector pulse
  1746.  10h    device not ready
  1747.  11h    seek error detected by adapter
  1748.  12h    bad format
  1749.  13h    volume overflow
  1750.  14h    data address mark not found
  1751.  15h    sector ID not found
  1752.  16h    missing device configuration data
  1753.  17h    first/last relative sector flags missing
  1754.  18h    track empty
  1755.  81h    timeout while waiting for stop
  1756.  82h    timeout while waiting for end of data transfer
  1757.  84h    stopped awaiting data transfer during formatting
  1758.  85h    timeout while waiting for head switch
  1759.  86h    timeout while awaiting DMA completion
  1760. SeeAlso: #0188,#0190
  1761.  
  1762. Bitfields for ESDI device error flags, group 2:
  1763. Bit(s)    Description    (Table 0190)
  1764.  7-5    unused
  1765.  4    ready
  1766.  3    selected
  1767.  2    write fault
  1768.  1    on track 0
  1769.  0    seek/command complete
  1770. SeeAlso: #0189
  1771. --------d-131C09-----------------------------
  1772. INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
  1773.     AX = 1C09h
  1774.     DL = drive (80h,81h)
  1775.     ES:BX -> buffer for Device Status Block (see #0191)
  1776. Return: CF set on error
  1777.     CF clear if successful
  1778.     AH = status (see #0166 at AH=01h)
  1779. SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI"
  1780.  
  1781. Format of ESDI Device Status Block:
  1782. Offset    Size    Description    (Table 0191)
  1783.  00h    BYTE    08h
  1784.  01h    BYTE    number of words in block (09h)
  1785.  02h    BYTE    error flags
  1786.  03h    BYTE    unused
  1787.  04h    BYTE    command error code (see #0187)
  1788.  05h    BYTE    command status code (see #0188)
  1789.  06h    WORD    ESDI standard status
  1790.  08h  5 WORDs    ESDI vendor-specific status codes
  1791. --------d-131C0A-----------------------------
  1792. INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  1793.     AX = 1C0Ah
  1794.     DL = drive (80h,81h)
  1795.     ES:BX -> buffer for Drive Configuration Status Block (see #0192)
  1796. Return: CF set on error
  1797.     CF clear if successful
  1798.     AH = status (see #0166 at AH=01h)
  1799. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  1800.       Adapter/A Technical Reference
  1801. SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
  1802.  
  1803. Format of ESDI Drive Configuration Status Block:
  1804. Offset    Size    Description    (Table 0192)
  1805.  00h    BYTE    09h
  1806.  01h    BYTE    number of words in block (06h)
  1807.  02h    BYTE    flags
  1808.  03h    BYTE    number of spare sectors per cylinder
  1809.  04h    DWORD    total number of usable sectors
  1810.  08h    WORD    total number of cylinders
  1811.  0Ah    BYTE    tracks per cylinder
  1812.  0Bh    BYTE    sectors per track
  1813. --------d-131C0B-----------------------------
  1814. INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  1815.     AX = 1C0Bh
  1816.     ES:BX -> buffer for Controller Configuration Status Block (see #0193)
  1817. Return: CF set on error
  1818.     CF clear if successful
  1819.     AH = status (see #0166 at AH=01h)
  1820. SeeAlso: AX=1C0Ch
  1821.  
  1822. Format of ESDI Controller Configuration Status Block:
  1823. Offset    Size    Description    (Table 0193)
  1824.  00h    BYTE    E9h
  1825.  01h    BYTE    number of words in block (06h)
  1826.  02h    WORD    unused (0000h)
  1827.  04h    DWORD    controller microcode revision level
  1828.  08h  2 WORDs    unused (0000h)
  1829. --------d-131C0C-----------------------------
  1830. INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
  1831.     AX = 1C0Ch
  1832.     ES:BX -> buffer for POS Information Status Block (see #0194)
  1833. Return: CF set on error
  1834.     CF clear if successful
  1835.     AH = status (see #0166 at AH=01h)
  1836. SeeAlso: AX=1C0Bh
  1837.  
  1838. Format of ESDI POS Information Status Block:
  1839. Offset    Size    Description    (Table 0194)
  1840.  00h    BYTE    EAh
  1841.  01h    BYTE    number of words in block (05h)
  1842.  02h    WORD    magic value FFDDh
  1843.  04h    BYTE    POS register 3
  1844.  05h    BYTE    POS register 2
  1845.  06h    BYTE    POS register 5 (unused, FFh)
  1846.  07h    BYTE    POS register 4 (unused, FFh)
  1847.  08h    BYTE    POS register 7 (unused, FFh)
  1848.  09h    BYTE    POS register 6 (unused, FFh)
  1849. --------d-131C0D-----------------------------
  1850. INT 13 U - ESDI FIXED DISK - ???
  1851.     AX = 1C0Dh
  1852.     DL = drive (80h,81h)
  1853.     ???
  1854. Return: ???
  1855. Note:    invokes controller command 0614h without DMA
  1856. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  1857. --------d-131C0E-----------------------------
  1858. INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  1859.     AX = 1C0Eh
  1860.     CH = low 8 bits of cylinder number
  1861.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  1862.     DH = head number
  1863.     DL = drive number (80h,81h)
  1864.     ES:BX -> ABA number
  1865. Return: CF set on error
  1866.     CF clear if successful
  1867.     AH = status (see #0166 at AH=01h)
  1868. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  1869.       Technical Reference by using its Device Configuration Status Block
  1870. SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"
  1871. --------d-131C0F-----------------------------
  1872. INT 13 U - ESDI FIXED DISK - ???
  1873.     AX = 1C0Fh
  1874.     DL = drive (80h,81h)
  1875.     ???
  1876. Return: ???
  1877. Note:    invokes controller command 0614h without DMA
  1878. SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"
  1879. --------d-131C12-----------------------------
  1880. INT 13 U - ESDI FIXED DISK - ???
  1881.     AX = 1C12h
  1882.     DL = drive (80h,81h)
  1883.     ???
  1884. Return: ???
  1885. Note:    invokes controller command 0612h without DMA
  1886. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  1887. --------c-131D-------------------------------
  1888. INT 13 - IBMCACHE.SYS - CACHE STATUS
  1889.     AH = 1Dh
  1890.     AL = subfunction
  1891.         01h get status record
  1892.         DL = drive???
  1893.         Return: ES:BX -> status record (see #0195)
  1894.             CF set on error
  1895.                 AH = error code
  1896.         02h set cache status
  1897.         ES:BX -> status record (see #0195)
  1898.         DL = drive???
  1899.         Return: CF set on error
  1900.  
  1901. Format of IBMCACHE.SYS status record:
  1902. Offset    Size    Description    (Table 0195)
  1903.  00h    DWORD    total number of read requests
  1904.  04h    DWORD    total number of hits
  1905.  08h    DWORD    number of physical disk reads
  1906.  0Ch    DWORD    total number of sectors requested by physical disk reads
  1907.  10h  6 BYTEs    ???
  1908.  16h    DWORD    pointer to start of error list (see #0196)
  1909.  1Ah    DWORD    pointer to end of error list
  1910.  1Eh    WORD    ???
  1911.  20h    BYTE    using extended memory if nonzero
  1912.  21h    BYTE    ???
  1913.  22h  4 BYTEs    ASCII version number
  1914.  26h    WORD    cache size in KB
  1915.  28h    WORD    sectors per page
  1916.  
  1917. Format of IBMCACHE.SYS error list:
  1918. Offset    Size    Description    (Table 0196)
  1919.  00h    DWORD    relative block address of bad page
  1920.  04h    BYTE    drive
  1921.  05h    BYTE    sector bit-map
  1922.  06h    WORD    next error
  1923. --------d-131F-------------------------------
  1924. INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
  1925.     AH = 1Fh
  1926.     AL = subfunction
  1927.         00h allow media removal
  1928.         01h prevent media removal (lock door)
  1929.     DL = drive ID (bit 7 set for hard disks)
  1930. Return: CF clear if successful
  1931.         AH = 00h
  1932.     CF set on error
  1933.         AH = error code
  1934.         00h successful
  1935.         01h invalid function request
  1936.         80h timeout
  1937.         DDh media change requested
  1938. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
  1939. --------d-1320-------------------------------
  1940. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  1941.     AH = 20h
  1942.     ???
  1943. Return: ???
  1944. Notes:    returns some kind of status related to whether the drive contains its
  1945.       default media type
  1946.     QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
  1947. --------b-1320-------------------------------
  1948. INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT
  1949.     AH = 20h
  1950.     DL = drive number (00h,01h)
  1951. Return: CF clear if successful
  1952.         AL = media type (see #0197)
  1953.         AH = 00h
  1954.     CF set on error
  1955.         AH = error code
  1956.         01h invalid request
  1957.         30h drive does not support media sense
  1958.         31h no such drive / media not present
  1959.         32h non-default media / drive does not supporte media type
  1960. Notes:    this function is supported by the 3/8/93 ROM BIOS, but only partially
  1961.       (AL is always 00h when successful) by the 8/3/93 version
  1962.     this function is also supported by some recent versions of the Phoenix
  1963.       486 BIOS
  1964.  
  1965. (Table 0197)
  1966. Values for Compaq/ATAPI diskette media type:
  1967.  03h    720K  (1M unformatted)
  1968.  04h    1.44M (2M unformatted)
  1969.  06h    2.88M (4M unformatted)
  1970.  0Ch    360K
  1971.  0Dh    1.2M
  1972.  0Eh    Toshiba 3mode
  1973.  0Fh    NEC 3mode (1024-byte sectors)
  1974.  10h    ATAPI Removable Media Device
  1975. --------c-1320-------------------------------
  1976. INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
  1977.     AH = 20h
  1978.     AL = drive (00h = A:, etc. or 7Fh for all removable drives???
  1979.                    or FFh for all drives)
  1980. Return: AX = status (0000h successful)
  1981. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  1982.       Associates, Inc.
  1983. Desc:    flush any dirty buffers for the specified drive(s) and then discard
  1984.       those sector buffers
  1985. SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
  1986. --------d-1321-------------------------------
  1987. INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
  1988.     AH = 21h
  1989.     AL = number of sectors to write
  1990.     CH = low byte of 12-bit cylinder number
  1991.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  1992.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  1993.     DL = drive number (80h,81h)
  1994.     ES:BX -> buffer for data to be read
  1995. Return: CF clear if successful
  1996.         ES:BX buffer filled
  1997.     CF set on error
  1998.     AH = status (see #0166 at AH=01h)
  1999. Desc:    read from the disk using the Multiple Block mode available on newer
  2000.       IDE drives and some hard disk controllers, which generates an
  2001.       interrupt only after the end of transferring a group of sectors
  2002.       rather than after each sector
  2003. Notes:    must call AH=24h"PS/1" before using this function
  2004.     input values in CL and DH are not range-checked
  2005.     the byte at address 0040h:0074h is set to the status of the operation
  2006. SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  2007. --------c-1321-------------------------------
  2008. INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
  2009.     AH = 21h
  2010. Return: AX = status (0000h successful)
  2011. Desc:    immediately write all dirty sectors back to disk
  2012. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
  2013. --------d-1322-------------------------------
  2014. INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
  2015.     AH = 22h
  2016.     AL = number of sectors to write
  2017.     CH = low byte of 12-bit cylinder number
  2018.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  2019.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  2020.     DL = drive number (80h,81h)
  2021.     ES:BX -> buffer containing data to be written
  2022. Return: CF clear if successful
  2023.     CF set on error
  2024.     AH = status (see #0166 at AH=01h)
  2025. Desc:    write to the disk using the Multiple Block mode available on newer
  2026.       IDE drives and some hard disk controllers, which generates an
  2027.       interrupt only after the end of transferring a group of sectors
  2028.       rather than after each sector
  2029. Notes:    must call AH=24h"PS/1" before using this function
  2030.     input values in CL and DH are not range-checked
  2031.     the byte at address 0040h:0074h is set to the status of the operation
  2032. SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  2033. --------c-1322-------------------------------
  2034. INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
  2035.     AH = 22h
  2036.     AL = new state (00h disabled, 01h enabled)
  2037. Return: AX = status (0000h successful)
  2038. Note:    enables/disables caching of all drives
  2039. SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
  2040. --------d-1323-------------------------------
  2041. INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
  2042.     AH = 23h
  2043.     AL = feature number (see #0198)
  2044.     DL = drive number (80h,81h)
  2045.     ???
  2046. Return: CF clear if successful
  2047.     CF set on error
  2048.     AH = status (see #0166 at AH=01h)
  2049. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
  2050.  
  2051. (Table 0198)
  2052. Values for PS/1 hard disk feature number:
  2053.  01h    select 8-bit data transfers instead of 16-bit
  2054.  02h    enable write cache
  2055.  22h    Write Same, user-specified area
  2056.  33h    disable retries
  2057.  44h    set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
  2058.  54h    set cache segments
  2059.  55h    disable lookahead
  2060.  66h    disable reverting to power-on defaults
  2061.  77h    disable error correctioni
  2062.  81h    select 16-bit data transfers (default)
  2063.  82h    disable write cache
  2064.  88h    enable error correction (default)
  2065.  99h    enable retries (default)
  2066.  AAh    enable lookahead
  2067.  BBh    set ECC length for read long/write long to four bytes
  2068.  CCh    enable reverting to power-on defaults
  2069.  DDh    Write Same, entire disk
  2070. SeeAlso: #P175
  2071. --------c-1323-------------------------------
  2072. INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
  2073.     AH = 23h
  2074. Return: AX = status (0000h successful)
  2075.     ES = segment of ??? data
  2076. --------d-1324-------------------------------
  2077. INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
  2078.     AH = 24h
  2079.     AL = number of sectors per block (2,4,8,16)
  2080.     DL = drive number (80h,81h)
  2081. Return: CF clear if successful
  2082.     CF set onerror
  2083.     AH = status (see #0166 at AH=01h)
  2084. Desc:    specify how many sectors the controller should transfer as a group
  2085.       between operation-complete interrupts when using the Read Multiple
  2086.       and Write Multiple functions (AH=21h,AH=22h)
  2087. Notes:    set the number of sectors to 0 to disable multiple-transfer mode
  2088.     the maximum value for the block size depends on the fixed disk
  2089.       drive type.  The value is stored in byte 15h of the fixed disk
  2090.       drive parameter table that is created by POST.
  2091.     the byte at address 0040h:0074h is set to status of operation.
  2092. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
  2093. --------c-1324-------------------------------
  2094. INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
  2095.     AH = 24h
  2096.     BX = new number of sector buffers in cache
  2097. Return: AX = status
  2098.         0000h successful
  2099.         0001h failed--size adjusted
  2100.         8000h cache cannot be resized while enabled
  2101. SeeAlso: AH=36h
  2102. --------d-1325-------------------------------
  2103. INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
  2104.     AH = 25h
  2105.     DL = drive number (80h,81h)
  2106.     ES:BX-> 512 byte buffer for reply packet
  2107. Return: CF clear if successful
  2108.     CF set on error
  2109.     AH = status (see #0166 at AH=01h)
  2110.     buffer filled with ATA/IDE-style drive information block (see #0199)
  2111. Desc:    retrieves the 256 words of drive data stored on an IDE hard disk
  2112. Notes:    the byte at address 0040h:0074h is set to the status of the operation
  2113.     IBM officially classifies this function as optional
  2114. SeeAlso: AH=23h"PS/1"
  2115.  
  2116. Format of drive information block:
  2117. Offset    Size    Description    (Table 0199)
  2118.  00h    WORD    general drive configuration (see #0200)
  2119.  02h    WORD    number of cylinders
  2120.  04h    WORD    reserved
  2121.  06h    WORD    number of heads
  2122.  08h    WORD    number of unformatted bytes per track
  2123.  0Ah    WORD    number of unformatted bytes per sector
  2124.  0Ch    WORD    number of sectors per track
  2125.  0Eh  6 BYTEs    vendor unique
  2126.  14h 20 BYTEs    serial number in ASCII, 0000h=not specified)
  2127.  28h    WORD    buffer type
  2128.  2Ah    WORD    buffer size in 512 byte increments (0000h=not specified)
  2129.  2Ch    WORD    number of ECC bytes passed on Read/Write Long cmds
  2130.         0000h = not specified
  2131.  2Eh  8 BYTEs    firmware revision in ASCII, 0000h=not specified
  2132.  36h 40 BYTEs    model number in ASCII, 0000h=not specified
  2133.  5Eh    WORD    bits 15-8  Vendor Unique
  2134.         bits 7-0  00h = Read/Write Multiple commands not implemented
  2135.               xxh = Maximum number of sectors that can be
  2136.               transferred per interrupt on Read and Write
  2137.               Multiple commands
  2138.  60h    WORD    0000h = cannot perform doubleword I/O
  2139.         0001h = can perform doubleword I/O
  2140.  62h    WORD    capabilities
  2141.         bit 15-9  0=reserved
  2142.         bit 8  1=DMA Supported
  2143.         bit 7-0     Vendor Unique
  2144.  64h    WORD    reserved
  2145.  66h    WORD    bits 15-8 PIO data transfer cycle timing mode
  2146.         bits 7-0  Vendor Unique
  2147.  68h    WORD    bits 15-8 DMA data transfer cycle timing mode
  2148.         bits 7-0  Vendor Unique
  2149.  6Ah    WORD    bits 15-1 reserved
  2150.         bit 0    1=the fields reported in tranlation mode are valid
  2151.             0=the fields reported in translation mode may be valid
  2152.  6Ch    WORD    number of current cylinders
  2153.  6Eh    WORD    number of current heads
  2154.  70h    WORD    number of current sectors per track
  2155.  72h    DWORD    current capacity in sectors
  2156.  76h    WORD    reserved
  2157.  78h 136 BYTEs    not defined by ATA spec 2.6
  2158. 100h 64 BYTEs    vendor unique
  2159. 140h 96 BYTEs    reserved
  2160. Note:    the above description is as in the ATA (AT Attachment) Specification.
  2161. SeeAlso: #P157
  2162.  
  2163. Bitfields for general drive configuration:
  2164. Bit(s)    Description    (Table 0200)
  2165.  15    0   reserved for non-magnetic drives
  2166.  14    format speed tolerance gap required
  2167.  13    track offset option available
  2168.  12    data strobe offset option available
  2169.  11    rotational speed tolerance is > 0.5%
  2170.  10    disk transfer rate > 10 Mbs
  2171.  9    disk transfer rate > 5Mbs but <= 10Mbs
  2172.  8    disk transfer rate <= 5Mbs
  2173.  7    removable cartridge drive
  2174.  6    fixed drive
  2175.  5    spindle motor control option implemented
  2176.  4    head switch time > 15 usec
  2177.  3    not MFM encoded
  2178.  2    soft sectored
  2179.  1    hard sectored
  2180.  0    reserved (0)
  2181. --------c-1325-------------------------------
  2182. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
  2183.     AH = 25h
  2184.     BX = interval
  2185. Return: AX = status (0000h successful)
  2186. Desc:    specify how often the cache should write dirty buffers to disk when
  2187.       buffered writes are enabled
  2188. SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
  2189. --------c-1326-------------------------------
  2190. INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
  2191.     AH = 26h
  2192. Return: AX = status
  2193.         0000h successful
  2194.         0001h-00FFh interrupt vector which was hooked by another TSR
  2195. SeeAlso: AH=27h
  2196. --------c-1327--BX0000-----------------------
  2197. INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
  2198.     AH = 27h
  2199.     BX = 0000h
  2200. Return: AX = 0000h if installed
  2201.     BX nonzero if installed
  2202.         BH = major version
  2203.         BL = binary minor version
  2204. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  2205.       Associates, Inc.
  2206. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
  2207. --------c-1328-------------------------------
  2208. INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
  2209.     AH = 28h
  2210.     AL = new state (00h disabled, 01h enabled)
  2211. Return: AX = status (0000h successful)
  2212. SeeAlso: AH=20h"QUICKCACHE"
  2213. --------c-1329-------------------------------
  2214. INT 13 U - QUICKCACHE II v4.20 - NOP
  2215.     AH = 29h
  2216. Return: AX = 0000h
  2217. --------c-132A-------------------------------
  2218. INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
  2219.     AH = 2Ah
  2220.     AL = buffer size (1-30)
  2221. Return: AX = status (0000h successful)
  2222. Desc:    specify the number of cache sector buffers to dedicate to buffered read
  2223.       and write operations
  2224. SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
  2225. --------c-132B-------------------------------
  2226. INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
  2227.     AH = 2Bh
  2228.     AL = new state (00h disabled, 01h enabled)
  2229. Return: AX = status (0000h successful)
  2230. --------c-132C-------------------------------
  2231. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
  2232.     AH = 2Ch
  2233.     AL = new state (00h disabled, 01h enabled)
  2234. Return: AX = status (0000h successful)
  2235. Desc:    specify whether the cache should delay disk writes
  2236. Note:    this function enables or disables delayed writes for all drives; use
  2237.       AH=38h to change a single drive
  2238. SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
  2239. --------c-132D-------------------------------
  2240. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
  2241.     AH = 2Dh
  2242.     AL = new state (00h disabled, 01h enabled)
  2243. Return: AX = status (0000h successful)
  2244. Desc:    specify whether the cache should attempt to read ahead of actual
  2245.       requests
  2246. Note:    this function enables or disables read-ahead for all drives; use AH=37h
  2247.       to change a single drive
  2248. SeeAlso: AH=2Ch,AH=37h
  2249. --------c-132E-------------------------------
  2250. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
  2251.     AH = 2Eh
  2252.     BX = flush count
  2253. Return: AX = status (0000h successful)
  2254. Desc:    specify how many dirty sectors the cache should write after each flush
  2255.       interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
  2256. SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
  2257. --------c-132F-------------------------------
  2258. INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
  2259.     AH = 2Fh
  2260. Return: AX = status (0000h successful)
  2261. Desc:    immediately flush up to "flushcount" dirty sectors to disk as if the
  2262.       flush interval had expired
  2263. SeeAlso: AH=21h"QUICKCACHE"
  2264. --------c-1330-------------------------------
  2265. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  2266.     AH = 30h
  2267.     AL = what to get
  2268.         00h system info (see #0201)
  2269.         01h drive info (see #0202)
  2270.         02h access frequency (array of 30 words)
  2271.         03h drive index
  2272.         (array of 32 bytes indicating BIOS drive for DOS drive)
  2273.     DS:DX -> buffer for info
  2274. Return: AX = status (0000h successful, 8000h invalid info specifier)
  2275. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  2276.       Associates, Inc.
  2277.  
  2278. Format of QUICKCACHE II system info:
  2279. Offset    Size    Description    (Table 0201)
  2280.  00h    BYTE    flag: cache enabled
  2281.  01h    BYTE    flag: buffered writes enabled
  2282.  02h    BYTE    flag: buffered reads enabled
  2283.  03h    BYTE    flag: sounds enabled
  2284.  04h    BYTE    flag: autodismount enabled
  2285.  05h    BYTE    ???
  2286.  06h    BYTE    flag: ???
  2287.  07h    BYTE    flag: ???
  2288.  08h    BYTE    flag: "em_assigned"
  2289.  09h    BYTE    flag: emulated EMS
  2290.  0Ah    BYTE    single sector bonus
  2291.  0Bh    BYTE    "sticky_max"
  2292.  0Ch    BYTE    write sector bonus
  2293.  0Dh    BYTE    bonus threshold
  2294.  0Eh    WORD    flush interval
  2295.  10h    WORD    flush count
  2296.  12h    WORD    reserve pool size
  2297.  14h    WORD    remaining space in reserve pool
  2298.  16h    WORD    required free memory
  2299.  18h    WORD    total cache sectors
  2300.  1Ah    WORD    dirty cache sectors
  2301.  1Ch    BYTE    trace buffer size
  2302.  1Dh    BYTE    reserved (padding)
  2303. SeeAlso: #0202
  2304.  
  2305. Format of QUICKCACHE II drive info [16-element array, one element]:
  2306. Offset    Size    Description    (Table 0202)
  2307.  00h    BYTE    DOS drive number
  2308.  01h    BYTE    BIOS drive number
  2309.  02h    BYTE    maximum sector number
  2310.  03h    BYTE    maximum head number
  2311.  04h    BYTE    read buffer size
  2312.  05h    BYTE    write buffer size
  2313.  06h    BYTE    last status
  2314.  07h    BYTE    flag: enabled
  2315.  08h    BYTE    flag: buffered write enabled
  2316.  09h    BYTE    flag: buffered read enabled
  2317.  0Ah    BYTE    flag: in use (drive info is valid)
  2318.  0Bh    BYTE    flag: cylinder flush
  2319.  0Ch    BYTE    reserved (padding)
  2320.  0Dh    BYTE    sectors per track
  2321.  0Eh    WORD    sector size
  2322.  10h    WORD    sectors assigned
  2323.  12h    WORD    dirty sectors
  2324.  14h    WORD    reserved sectors
  2325.  16h    WORD    number of read errors
  2326.  18h    WORD    number of write errors
  2327.  1Ah    DWORD    "rio_count"
  2328.  1Eh    DWORD    number of cache misses
  2329.  22h    DWORD    "wio_count"
  2330.  26h    DWORD    "dio_count"
  2331. SeeAlso: #0201
  2332. --------c-1331-------------------------------
  2333. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  2334.     AH = 31h
  2335.     BX = number of paragraphs of conventional memory to reserve for apps
  2336. Return: AX = status (0000h successful)
  2337. --------c-1332-------------------------------
  2338. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  2339.     AH = 32h
  2340.     AL = drive number (00h=A:)
  2341. Return: AX = status (0000h successful)
  2342. SeeAlso: AH=22h"QUICKCACHE",AH=33h
  2343. --------c-1333-------------------------------
  2344. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  2345.     AH = 33h
  2346.     AL = drive number (00h=A:)
  2347. Return: AX = status (0000h successful)
  2348. SeeAlso: AH=22h"QUICKCACHE",AH=32h
  2349. --------c-1334-------------------------------
  2350. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  2351.     AH = 34h
  2352.     AL = function
  2353.         00h end sector locking/unlocking
  2354.         01h lock all accessed sectors into cache
  2355.         02h unlock all accessed sectors and discard from cache
  2356. Return: AX = status (0000h successful)
  2357. SeeAlso: AH=20h"QUICKCACHE",AH=35h
  2358. --------c-1335-------------------------------
  2359. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  2360.     AH = 35h
  2361.     BX = number of sectors in lock pool
  2362. Return: AX = status (0000h successful)
  2363. Desc:    specify the number of cache sector buffers which may be dedicated to
  2364.       data locked into the cache
  2365. SeeAlso: AH=34h
  2366. --------c-1336-------------------------------
  2367. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  2368.     AH = 36h
  2369.     AL = new size of trace buffer
  2370. Return: AX = status (0000h successful)
  2371. Note:    called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
  2372. SeeAlso: AH=24h"QUICKCACHE"
  2373. --------c-1337-------------------------------
  2374. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  2375.     AH = 37h
  2376.     AL = new state (00h disabled, else enabled)
  2377.     DL = drive number (00h = A:)
  2378. Return: AX = status (0000h successful)
  2379. SeeAlso: AH=2Dh,AH=38h
  2380. --------c-1338-------------------------------
  2381. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  2382.     AH = 38h
  2383.     AL = new state (00h disabled, else enabled)
  2384.     DL = drive number (00h = A:)
  2385. Return: AX = status (0000h successful)
  2386. SeeAlso: AH=2Ch,AH=37h
  2387. --------c-1339-------------------------------
  2388. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  2389.     AH = 39h
  2390.     AL = new size of read buffer
  2391.     DL = drive number (00h = A:)
  2392. Return: AX = status (0000h successful)
  2393. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  2394.       Associates, Inc.
  2395. SeeAlso: AH=2Ah,AH=3Ah
  2396. --------c-133A-------------------------------
  2397. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  2398.     AH = 3Ah
  2399.     AL = new size of write buffer
  2400.     DL = drive number (00h = A:)
  2401. Return: AX = status (0000h successful)
  2402. SeeAlso: AH=2Ah,AH=39h
  2403. --------c-133B-------------------------------
  2404. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  2405.     AH = 3Bh
  2406.     AL = new state of ??? (01h enabled, else disabled)
  2407. Return: AX = status (0000h successful)
  2408. Note:    is affected by the flag reported at offset 05h of the system info
  2409.       returned by AH=30h, and sets the flag at offset 06h
  2410. SeeAlso: AH=3Ch
  2411. --------c-133C-------------------------------
  2412. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  2413.     AH = 3Ch
  2414.     AL = new state of ??? (01h enabled, else disabled)
  2415. Return: AX = status (0000h successful)
  2416. Note:    is affected by the flag reported at offset 05h of the system info
  2417.       returned by AH=30h, and sets the flag at offset 07h
  2418. SeeAlso: AH=3Bh
  2419. --------c-133D-------------------------------
  2420. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  2421.     AH = 3Dh
  2422.     AL = new state (01h enabled, else disabled)
  2423.     DL = drive number (00h = A:)
  2424. Return: AX = status (0000h successful)
  2425. --------c-133E-------------------------------
  2426. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  2427.     AH = 3Eh
  2428.     AL = new value for bonus
  2429. Return: AX = status (0000h successful)
  2430. Desc:    specify the bonus score to give to single-sector transfers in order to
  2431.       keep those sectors in the cache longer
  2432. --------c-133F-------------------------------
  2433. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  2434.     AH = 3Fh
  2435.     AL = new value for bonus threshold
  2436. Return: AX = status (0000h successful)
  2437. --------c-1340-------------------------------
  2438. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  2439.     AH = 40h
  2440.     AL = new value for "sticky_max"
  2441. Return: AX = status (0000h successful)
  2442. SeeAlso: AH=41h"QUICKCACHE"
  2443. --------d-1341--BX55AA-----------------------
  2444. INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
  2445.     AH = 41h
  2446.     BX = 55AAh
  2447.     DL = drive (80h-FFh)
  2448. Return: CF set on error (not supported)
  2449.         AH = 01h (invalid function)
  2450.     CF clear if successful
  2451.         BX = AA55h if installed
  2452.         AH = major version of extensions
  2453.         (01h = 1.x, 20h = 2.0/EDD-1.0, 21h = 2.1/EDD-1.1)
  2454.         AL = internal use
  2455.         CX = API subset support bitmap (see #0203)
  2456.         DH = extension version (v2.0+ ??? -- not present in 1.x)
  2457. Note:    the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
  2458.       the INT 13 Extensions API
  2459. SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
  2460.  
  2461. Bitfields for IBM/MS INT 13 Extensions API support bitmap:
  2462. Bit(s)    Description    (Table 0203)
  2463.  0    extended disk access functions (AH=42h-44h,47h,48h) supported
  2464.  1    removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
  2465.       supported
  2466.  2    enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
  2467.     extended drive parameter table is valid (see #0205,#0208)
  2468.  3-15    reserved (0)
  2469. --------c-1341-------------------------------
  2470. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  2471.     AH = 41h
  2472.     AL = direction
  2473.         01h save to file
  2474.         else restore from file
  2475.     ES:DI -> 1024-byte buffer for ???
  2476. Return: AX = status (0000h successful, 8000h failed)
  2477. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  2478.       Associates, Inc.
  2479. SeeAlso: AH=40h"QUICKCACHE"
  2480. --------d-1342-------------------------------
  2481. INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
  2482.     AH = 42h
  2483.     DL = drive number
  2484.     DS:SI -> disk address packet (see #0204)
  2485. Return: CF clear if successful
  2486.         AH = 00h
  2487.     CF set on error
  2488.         AH = error code (see #0166)
  2489.         disk address packet's block count field set to number of blocks
  2490.           successfully transferred
  2491. SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
  2492.  
  2493. Format of disk address packet:
  2494. Offset    Size    Description    (Table 0204)
  2495.  00h    BYTE    10h (size of packet)
  2496.  01h    BYTE    reserved (0)
  2497.  02h    WORD    number of blocks to transfer (max 007Fh for Phoenix EDD)
  2498.  04h    DWORD    -> transfer buffer
  2499.  08h    QWORD    starting absolute block number
  2500.         (for non-LBA devices, compute as
  2501.           (Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
  2502.           SelectedSector - 1
  2503. --------N-134257DX1234-----------------------
  2504. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  2505.     AX = 4257h ("BW")
  2506.     DX = 1234h
  2507. Return: BX = 414Ch if installed
  2508. Program: BWLPD is the printer daemon from the BW-NFS package
  2509. SeeAlso: INT 62/AH=00h"ETHDEV"
  2510. --------d-1343-------------------------------
  2511. INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
  2512.     AH = 43h
  2513.     AL = write flags
  2514.        ---v1.0,2.0---
  2515.        bit 0: verify write
  2516.        bits 7-1 reserved (0)
  2517.        ---v2.1---
  2518.        00h,01h write without verify
  2519.        02h write with verify
  2520.     DL = drive number
  2521.     DS:SI -> disk address packet (see #0204)
  2522. Return: CF clear if successful
  2523.         AH = 00h
  2524.     CF set on error
  2525.         AH = error code (see #0166)
  2526.         disk address packet's block count field set to number of blocks
  2527.           successfully transferred
  2528. Note:    the BIOS returns CF set/AH=01h (invalid function) if verify is
  2529.       requested but not supported
  2530. SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
  2531. --------d-1344-------------------------------
  2532. INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
  2533.     AH = 44h
  2534.     DL = drive number
  2535.     DS:SI -> disk address packet (see #0204)
  2536. Return: CF clear if successful
  2537.         AH = 00h
  2538.     CF set on error
  2539.         AH = error code (see #0166)
  2540.         disk address packet's block count field set to number of blocks
  2541.           successfully verified
  2542. SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
  2543. --------d-1345-------------------------------
  2544. INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
  2545.     AH = 45h
  2546.     AL = operation
  2547.         00h lock media in drive
  2548.         01h unlock media
  2549.         02h check lock status
  2550.     DL = drive number
  2551. Return: CF clear if successful
  2552.         AH = 00h
  2553.         AL = lock state (00h = unlocked)
  2554.     CF set on error
  2555.         AH = error code (see #0166)
  2556. Notes:    this function is required to be supported for any removable drives
  2557.       numbered 80h or higher
  2558.     up to 255 locks may be placed on a drive, and the media will not
  2559.       be physically unlocked until all locks have been removed
  2560. SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"
  2561. --------d-1346-------------------------------
  2562. INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
  2563.     AH = 46h
  2564.     AL = 00h (reserved)
  2565.     DL = drive number
  2566. Return: CF clear if successful
  2567.         AH = 00h
  2568.     CF set on error
  2569.         AH = error code (see #0166)
  2570. SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"
  2571. --------d-1347-------------------------------
  2572. INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
  2573.     AH = 47h
  2574.     DL = drive number
  2575.     DS:SI -> disk address packet (see #0204)
  2576. Return: CF clear if successful
  2577.         AH = 00h
  2578.     CF set on error
  2579.         AH = error code (see #0166)
  2580. SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
  2581. --------d-1348-------------------------------
  2582. INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
  2583.     AH = 48h
  2584.     DL = drive (80h-FFh)
  2585.     DS:SI -> buffer for drive parameters (see #0205)
  2586. Return: CF clear if successful
  2587.         AH = 00h
  2588.         DS:SI buffer filled
  2589.     CF set on error
  2590.         AH = error code (see #0166)
  2591. SeeAlso: AH=08h,AH=41h,AH=49h
  2592.  
  2593. Format of IBM/MS INT 13 Extensions drive parameters:
  2594. Offset    Size    Description    (Table 0205)
  2595.  00h    WORD    (call) size of buffer (001Ah for v1.x, 001Eh for v2.x)
  2596.         (ret) size of returned data
  2597.  02h    WORD    information flags (see #0206)
  2598.  04h    DWORD    number of physical cylinders on drive
  2599.  08h    DWORD    number of physical heads on drive
  2600.  0Ch    DWORD    number of physical sectors per track
  2601.  10h    QWORD    total number of sectors on drive
  2602.  18h    WORD    bytes per sector
  2603. ---v2.0+ ---
  2604.  1Ah    DWORD    -> EDD configuration parameters (see #0208)
  2605.         FFFFh:FFFFh if not available
  2606. Note:    if the size is less than 30 on call, the final DWORD will not be
  2607.       returned by a v2.x implementation
  2608. SeeAlso: #0207,#2867
  2609.  
  2610. Bitfields for IBM/MS INT 13 Extensions information flags:
  2611. Bit(s)    Description    (Table 0206)
  2612.  0    DMA boundary errors handled transparently
  2613.  1    cylinder/head/sectors-per-track information is valid
  2614.  2    removable drive
  2615.  3    write with verify supported
  2616.  4    drive has change-line support (required if drive >= 80h is removable)
  2617.  5    drive can be locked (required if drive >= 80h is removable)
  2618.  6    CHS information set to maximum supported values, not current media
  2619.  15-7    reserved (0)
  2620. SeeAlso: #0205
  2621.  
  2622. Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
  2623. Offset    Size    Description    (Table 0207)
  2624.  00h    WORD    number of cylinders
  2625.  02h    BYTE    number of heads
  2626.  03h    BYTE    A0h (signature indicating translated table)
  2627.  04h    BYTE    number of physical sectors per track
  2628.  05h    WORD    starting write precompensation cylinder number
  2629.  07h    BYTE    reserved
  2630.  08h    BYTE    control byte (see #2869 at INT 41"DISK 0")
  2631.  09h    WORD    number of physical cylinders
  2632.  0Bh    BYTE    number of physical heads
  2633.  0Ch    WORD    cylinder number of landing zone
  2634.  0Eh    BYTE    number of logical sectors per track
  2635.  0Fh    BYTE    checksum
  2636. Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
  2637.       IBM/MS INT 13 extensions
  2638. SeeAlso: #0208,#2867
  2639.  
  2640. Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table:
  2641. Offset    Size    Description    (Table 0208)
  2642.  00h    WORD    physical I/O port base address
  2643.  02h    WORD    disk-drive control port address
  2644.  04h    BYTE    drive flags (see #0209)
  2645.  05h    BYTE    proprietary information
  2646.         bits 7-4 reserved (0)
  2647.         bits 3-0: Phoenix proprietary (used by BIOS)
  2648.  06h    BYTE    IRQ (bits 3-0; bits 7-4 reserved and must be 0)
  2649.  07h    BYTE    sector count for multi-sector transfers
  2650.  08h    BYTE    DMA control
  2651.         bits 7-4: DMA type (0-2) as per ATA-2 specification
  2652.         bits 3-0: DMA channel
  2653.  09h    BYTE    programmed I/O control
  2654.         bits 7-4: reserved (0)
  2655.         bits 3-0: PIO type (1-4) as per ATA-2 specification
  2656.  0Ah    WORD    drive options (see #0210)
  2657.  0Ch  2 BYTEs    reserved (0)
  2658.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  2659.         (currently 10h for v1.0 and 11h for v1.1)
  2660.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  2661.         8-bit sum of all bytes 00h-0Fh should equal 00h
  2662. SeeAlso: #0207
  2663.  
  2664. Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
  2665. Bit(s)    Description    (Table 0209)
  2666.  7    reserved (1)
  2667.  6    LBA enabled
  2668.  5    reserved (1)
  2669.  4    drive is slave
  2670.  3-0    reserved (0)
  2671. SeeAlso: #0208,#0210
  2672.  
  2673. Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
  2674. Bit(s)    Description    (Table 0210)
  2675.  0    fast PIO enabled
  2676.  1    fast DMA access enabled
  2677.  2    block PIO (multi-sector transfers) enabled
  2678.  3    CHS translation enabled
  2679.  4    LBA translation enabled
  2680.  5    removable media
  2681.  6    ATAPI device (CD-ROM)
  2682.  7    32-bit transfer mode
  2683. ---v1.1---
  2684.  8    ATAPI device uses DRQ to signal readiness for packet command
  2685.     (must be 0 if bit 6 is 0)
  2686.  10-9    translation type (must be 00 if bit 3 is 0)
  2687.     00 Phoenix bit-shifting translation
  2688.     01 LBA-assisted translation
  2689.     10 reserved
  2690.     11 proprietary translation
  2691.  15-8    reserved
  2692. SeeAlso: #0208,#0209
  2693. --------d-1349-------------------------------
  2694. INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
  2695.     AH = 49h
  2696.     DL = drive number
  2697. Return: CF clear if media has not changed
  2698.         AH = 00h
  2699.     CF set if media may have changed
  2700.         AH = 06h (see #0166)
  2701. Note:    unlike AH=16h, any drive number may be specified
  2702. SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
  2703. --------d-134A-------------------------------
  2704. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
  2705.     AH = 4Ah
  2706.     AL = 00h
  2707.     DS:SI -> specification packet (see #0211)
  2708. Return: CF clear if successful
  2709.     CF set on error (drive will not be in emulation mode)
  2710.     AX = return codes
  2711. SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh
  2712.  
  2713. Format of Bootable CD-ROM Specification Packet:
  2714. Offset    Size    Description    (Table 0211)
  2715.  00h    BYTE    size of packet in bytes (13h)
  2716.  01h    BYTE    boot media type (see #0212)
  2717.  02h    BYTE    drive number
  2718.         00h floppy image
  2719.         80h bootable hard disk
  2720.         81h-FFh nonbootable or no emulation
  2721.  03h    BYTE    CD-ROM controller number
  2722.  04h    DWORD    Logical Block Address of disk image to emulate
  2723.  08h    WORD    device specification (see also #0212)
  2724.         (IDE) bit 0: drive is slave instead of master
  2725.         (SCSI)    bits 7-0: LUN and PUN
  2726.             bits 15-8: bus number
  2727.  0Ah    WORD    segment of 3K buffer for caching CD-ROM reads
  2728.  0Ch    WORD    load segment for initial boot image
  2729.         if 0000h, load at segment 07C0h
  2730.  0Eh    WORD    number of 512-byte virtual sectors to load
  2731.         (only valid for AH=4Ch)
  2732.  10h    BYTE    low byte of cylinder count (for INT 13/AH=08h)
  2733.  11h    BYTE    sector count, high bits of cylinder count (for INT 13/AH=08h)
  2734.  12h    BYTE    head count (for INT 13/AH=08h)
  2735. SeeAlso: #0213,AH=08h
  2736.  
  2737. Bitfields for Bootable CD-ROM boot media type:
  2738. Bit(s)    Description    (Table 0212)
  2739.  3-0    media type
  2740.     0000 no emulation
  2741.     0001 1.2M diskette
  2742.     0010 1.44M diskette
  2743.     0011 2.88M diskette
  2744.     0100 hard disk (drive C:)
  2745.     other reserved
  2746.  5-4    reserved (0)
  2747.  6    image contains ATAPI driver
  2748.  7    image contains SCSI driver(s)
  2749. SeeAlso: #0211
  2750. --------d-134B00-----------------------------
  2751. INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
  2752.     AX = 4B00h
  2753.     DL = drive number or 7Fh to terminate all emulations
  2754.     DS:SI -> empty specification packet (see #0211)
  2755. Return: CF clear if successful
  2756.     CF set on error (drive will still be in emulation mode)
  2757.     AX = return codes
  2758.     DS:SI specification packet filled
  2759. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  2760. --------d-134B01-----------------------------
  2761. INT 13 - Bootable CD-ROM - GET STATUS
  2762.     AX = 4B01h
  2763.     DL = drive number
  2764.     DS:SI -> empty specification packet (see #0211)
  2765. Return: CF clear if successful
  2766.     CF set on error
  2767.     AX = return codes
  2768.     DS:SI specification packet filled
  2769. Note:    same as AX=4B00h, but does not terminate emulation
  2770. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  2771. --------d-134C-------------------------------
  2772. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
  2773.     AH = 4Ch
  2774.     AL = 00h
  2775.     DS:SI -> specification packet (see #0211)
  2776. Return: never, if successful
  2777.     CF set (error while attempting to boot)
  2778.     AX = error codes
  2779. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh
  2780. --------d-134D00-----------------------------
  2781. INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
  2782.     AX = 4D00h
  2783.     DS:SI -> command packet (see #0213)
  2784. Return: CF clear if successful
  2785.     CF set on error
  2786.     AX = return codes
  2787. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch
  2788.  
  2789. Format of Bootable CD-ROM "get boot catalog" command packet:
  2790. Offset    Size    Description    (Table 0213)
  2791.  00h    BYTE    size of packet in bytes (08h)
  2792.  01h    BYTE    number of sectors of boot catalog to read
  2793.  02h    DWORD    -> buffer for boot catalog
  2794.  06h    WORD    first sector in boot catalog to transfer
  2795. SeeAlso: #0211
  2796. --------d-134E-------------------------------
  2797. INT 13 - IBM/MS INT 13 Extensions v2.1 - SET HARDWARE CONFIGURATION
  2798.     AH = 4Eh
  2799.     AL = function
  2800.         00h enable prefetch
  2801.         01h disable prefetch
  2802.         02h set maximum PIO transfer mode
  2803.         03h set PIO mode 0
  2804.         04h set default PIO transfer mode
  2805.         05h enable INT 13 DMA maximum mode
  2806.         06h disable INT 13 DMA
  2807.     DL = drive number
  2808. Return: CF clear if successful
  2809.         AH = 00h
  2810.         AL = status
  2811.         00h command was safe (only affected specified drive)
  2812.         01h other devices are affected
  2813.     CF set on error
  2814.         AH = error code (see #0166)
  2815. Note:    DMA and PIO modes are mutually exclusive, so selecting DMA disables
  2816.       PIO (for either the specified device or all devices on that
  2817.       controller), and selecting PIO disables DMA
  2818. SeeAlso: AH=41h"INT 13 Extensions"
  2819. --------v-135001------------------------
  2820. INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
  2821.     AX = 5001h
  2822. Return: AX = 0150h if resident
  2823. SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
  2824. --------v-135342CX0001-----------------------
  2825. INT 13 - ScanBoot - INSTALLATION CHECK
  2826.     AX = 5342h ("SB")
  2827.     CX = 0001h
  2828.     DX = 0000h
  2829. Return: CF clear if ScanBoot installed
  2830.        AX = 0000h
  2831.        CX = serial number ("SW" if shareware release)
  2832.        DX = version
  2833.        BX,SI,ES destroyed
  2834. Program: ScanBoot is a virus-detection TSR by PanSoft
  2835. --------d-135501-----------------------------
  2836. INT 13 - Seagate ST01/ST02 - Inquiry
  2837.     AX = 5501h
  2838.     DH = number of bytes to transfer
  2839.     DL = drive ID (80h, 81h, ...)
  2840.     ES:BX -> buffer for results
  2841. Return: ES:BX buffer filled with the Inquiry results
  2842. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  2843.       so all commands must be assumed to have been successful
  2844.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  2845.       drives without changing the BIOS drive count at 0040h:0075h
  2846.     this command is identical to the SCSI Inquiry command
  2847. --------d-135502-----------------------------
  2848. INT 13 - Seagate ST01/ST02 - RESERVED
  2849.     AX = 5502h
  2850. --------d-135503-----------------------------
  2851. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  2852.     AX = 5503h
  2853.     DH = DTQ byte (see #0214)
  2854.     DL = drive ID (80h, 81h, ...)
  2855. Return: nothing
  2856.  
  2857. Bitfields for DTQ byte:
  2858. Bit(s)    Description    (Table 0214)
  2859.  7    reserved
  2860.  6    SCSI drive attached
  2861.  5    reserved
  2862.  4    selected drive is ST225N/NP (Paired)
  2863.  3    selected drive is ST225N
  2864.  2    Host Adapter checks parity on the selected drive
  2865.  1    selected drive has been installed
  2866.  0    Seagate installation software present
  2867. --------d-135504-----------------------------
  2868. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  2869.     AX = 5504h
  2870.     DX = drive (bit 7 set for hard disk)
  2871. Return: CF clear if successful
  2872.         AX = 4321h if ST01/ST02h
  2873.         AX = 4322h if ??? Seagate controller
  2874.     CF set on error
  2875. SeeAlso: AX=5505h,AX=5514h
  2876. --------d-135504-----------------------------
  2877. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  2878.     AX = 5504h
  2879.     DL = drive ID (80h, 81h, ...)
  2880. Return: AX = 4321h
  2881.     BL = selected drive number (00h, 01h)
  2882.     BH = number of drives attached to Host Adapter (max. 2)
  2883. --------d-135505-----------------------------
  2884. INT 13 - Seagate - ??? - PARK HEADS
  2885.     AX = 5505h
  2886.     DX = drive (bit 7 set for hard disk)
  2887. Return: CF clear if successful
  2888.     CF set on error
  2889. SeeAlso: AX=5504h,AX=5515h
  2890. --------d-135505-----------------------------
  2891. INT 13 - Seagate ST01/ST02 - PARK HEADS
  2892.     AX = 5505h
  2893.     DL = drive ID (80h, 81h, ...)
  2894.     DH = subfunction
  2895.         00h park heads (SCSI Stop command)
  2896.         01h un-park heads (SCSI Start command)
  2897. Return: nothing
  2898. --------d-135506-----------------------------
  2899. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  2900.     AX = 5506h
  2901.     DL = drive ID (80h, 81h, ...)
  2902.     DH = subfunction
  2903.         00h disable parity check
  2904.         01h enable parity check
  2905.         02h return current parity setting
  2906. Return: AL = status
  2907.         00h parity checking disabled
  2908.         01h parity checking enabled
  2909. --------d-135507-----------------------------
  2910. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  2911.     AX = 5507h to 550Dh
  2912. Note:    officially listed as "reserved"
  2913. --------d-135514-----------------------------
  2914. INT 13 U - Seagate - ???
  2915.     AX = 5514h
  2916.     DX = drive (bit 7 set for hard disk)
  2917. Return: CF clear if successful
  2918.     CF set on error
  2919.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  2920. SeeAlso: AX=5504h,AX=5515h
  2921. --------d-135515-----------------------------
  2922. INT 13 U - Seagate - PARK HEADS???
  2923.     AX = 5515h
  2924.     DX = drive (bit 7 set for hard disk)
  2925. Return: CF clear if successful
  2926.     CF set on error
  2927. Note:    appears to be identical to AX=5505h
  2928. SeeAlso: AX=5504h,AX=5505h
  2929. --------d-1359-------------------------------
  2930. INT 13 - SyQuest - Generic SCSI pass through
  2931.     AH = 59h
  2932.     CX = HOST_ID, 0-based
  2933.     DX = 80h
  2934.     ES:BX pointer to SCSI structure (see #0215)
  2935. Return: CF clear
  2936.     AH = 95h
  2937. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  2938.  
  2939. Format of SyQuest SCSI structure:
  2940. Offset    Size    Description    (Table 0215)
  2941.  00h    WORD    opcode (see #0216)
  2942.  02h    BYTE    target's SCSI ID
  2943.  03h    BYTE    target's logical unit number
  2944.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  2945.  05h    BYTE    host status
  2946.         00h successful
  2947.         01h selection time out
  2948.         02h data over-run or under-run
  2949.  06h    BYTE    target status at command completion
  2950.         00h successful
  2951.         02h check status
  2952.         08h busy
  2953.  07h    BYTE    command data block length
  2954.  08h    DWORD    request data length
  2955.  0Ch    DWORD    result data length (actual length of data transferred)
  2956.  10h    DWORD    -> CDB (see #2907,#2908,#2909)
  2957.  14h    DWORD    -> data buffer
  2958. Note:    The handler does not perform a 'Request Sense' command if there was an
  2959.       error
  2960.  
  2961. (Table 0216)
  2962. Values for SCSI opcode:
  2963.  00h    verify interface
  2964.     clears carry flag and returns if function is available
  2965.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of
  2966.     length less than 40 byte including the terminator.
  2967.     The string is stored in the buffer pointed by p_buf.
  2968.  02h    device mapping info. The caller provides a one byte buffer.
  2969.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  2970.     It stores 0 if that target does not exists.
  2971.  03h    execute SCSI command
  2972.  04h    device reset
  2973.  05h    SCSI bus reset
  2974. SeeAlso: #0215
  2975. --------d-1370-------------------------------
  2976. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  2977.     AH = 70h
  2978.     ???
  2979. Return: ???
  2980. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  2981.       formatting program) make this call, presumably to EDVR.SYS (the
  2982.       partitioning driver)
  2983. SeeAlso: AH=ADh
  2984. ----------1375-------------------------------
  2985. INT 13 - ???
  2986.     AH = 75h
  2987.     ???
  2988. Return: AH = ???
  2989.     ???
  2990. Note:    intercepted by PC-Cache (v5.1 only)
  2991. ----------1376-------------------------------
  2992. INT 13 - ???
  2993.     AH = 76h
  2994.     ???
  2995. Return: AH = ???
  2996.     ???
  2997. Note:    intercepted by PC-Cache (v5.1 only)
  2998. --------c-137B00-----------------------------
  2999. INT 13 - NOW! v3.05 - GET INFORMATION
  3000.     AX = 7B00h
  3001.     CX:DX -> 1F8h-byte buffer for information record (see #0217)
  3002. Return: AX = 0000h
  3003.     BX = segment of main resident code
  3004.     ES = ???
  3005. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  3006. SeeAlso: AX=7B02h,AH=EFh
  3007.  
  3008. Format of NOW! information record:
  3009. Offset    Size    Description    (Table 0217)
  3010.  00h 80 BYTEs    name of directory from which NOW! was started
  3011.  50h 424 BYTEs    ???
  3012.  81h  ? BYTEs    array of bytes for ???
  3013.  F7h 250 BYTEs    array of 25 entries, one per drive???
  3014.     Offset    Size    Description
  3015.      00h  2 BYTEs    ???
  3016.      02h    WORD    ???
  3017.      04h    WORD    ???
  3018.      06h  4 BYTEs    ???
  3019. 1F1h  7 BYTEs    ???
  3020. --------c-137B01-----------------------------
  3021. INT 13 - NOW! v3.05 - ???
  3022.     AX = 7B01h
  3023. Return: DX = segment of ???
  3024. SeeAlso: AX=7B00h
  3025. --------c-137B02-----------------------------
  3026. INT 13 - NOW! v3.05 - SET INFORMATION
  3027.     AX = 7B02h
  3028.     BX = segment of ??? (10h above a PSP)
  3029.     CX:DX -> 1F8h-byte information record (see #0217)
  3030. Return: ???
  3031. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  3032. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  3033.       BX
  3034. SeeAlso: AX=7B00h
  3035. --------c-137B03-----------------------------
  3036. INT 13 - NOW! v3.05 - ???
  3037.     AX = 7B03h
  3038.     ???
  3039. Return: ???
  3040. SeeAlso: AX=7B00h,AX=7B04h
  3041. --------c-137B04-----------------------------
  3042. INT 13 - NOW! v3.05 - ???
  3043.     AX = 7B04h
  3044.     ???
  3045. Return: ???
  3046. SeeAlso: AX=7B03h
  3047. --------c-137B05-----------------------------
  3048. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  3049.     AX = 7B05h
  3050. Return: BX:AX = number of physical accesses???
  3051.     DX:CX = total disk accesses???
  3052. SeeAlso: AX=7B00h,AX=7B06h
  3053. --------c-137B06-----------------------------
  3054. INT 13 - NOW! v3.05 - GET ???
  3055.     AX = 7B06h
  3056.     BX = ???
  3057. Return: AX = 0000h
  3058.     BX = ???
  3059. SeeAlso: AX=7B05h,AX=7B07h
  3060. --------c-137B07-----------------------------
  3061. INT 13 - NOW! v3.05 - GET ???
  3062.     AX = 7B07h
  3063. Return: AX = ???
  3064.     BX = ???
  3065.     CX = ???
  3066.     DX = ???
  3067. SeeAlso: AX=7B06h
  3068. --------c-137B08-----------------------------
  3069. INT 13 - NOW! v3.05 - ???
  3070.     AX = 7B08h
  3071.     CX = ??? (default 00h)
  3072. Return: ???
  3073. SeeAlso: AX=7B00h
  3074. --------c-1380--CX6572-----------------------
  3075. INT 13 - FAST! v4.02+ - API
  3076.     AH = 80h
  3077.     CX = 6572h
  3078.     DX = 1970h
  3079.     ES:BX -> request packet (see #0219)
  3080.     AL = function number (see #0218)
  3081. Return: AH = status (except function 06h)
  3082.         00h if successful
  3083.         01h invalid function
  3084.         05h not supported by the installed variant
  3085.     CF clear if successful
  3086.     CF set on error
  3087.     AL may be destroyed
  3088. Program: FAST! is a disk cache by Future Computing Systems and marketed by
  3089.       BLOC Publishing Corp.
  3090. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  3091. Index:    hotkeys;FAST!
  3092.  
  3093. (Table 0218)
  3094. Values for FAST! function:
  3095.  01h    get cache information (see AX=8001h)
  3096.  04h    disable cache
  3097.  05h    enable cache and reset statistics
  3098.  06h    installation check (see AX=8006h)
  3099.  07h    unhook interrupts (see AX=8007h)
  3100.  09h    flush cache
  3101.  0Ah    (v4.02+) enable staged writes
  3102.  0Bh    (v4.02+) disable staged writes
  3103.  0Ch    (v4.02+) enable beep on flush
  3104.  0Dh    (v4.02+) disable beep on flush
  3105.  0Eh    ???
  3106.  0Fh    ???
  3107.  10h    (v4.12+) enable hotkeys
  3108.  11h    (v4.12+) disable hotkeys
  3109.  12h    (v4.13+) set idle delay
  3110.  13h    (v4.13+) set flush dirty percentage
  3111.  14h    (v5.00+) enable mouse checks
  3112.  15h    (v5.00+) disable mouse checks
  3113.  16h    (v5.00d+) reduce cache size to minimum
  3114.  17h    (v5.00d+) increase cache size to maximum
  3115.  
  3116. Format of FAST! request packet:
  3117. Offset    Size    Description    (Table 0219)
  3118.  00h    DWORD    pointer to 19-byte signature string (see #0220)
  3119.  04h    DWORD    pointer to buffer for data (if needed by function)
  3120.  
  3121. (Table 0220)
  3122. Values for FAST! v4.04-v5.03 signature string:
  3123.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  3124. --------c-138001CX6572-----------------------
  3125. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  3126.     AX = 8001h
  3127.     CX = 6572h
  3128.     DX = 1970h
  3129.     ES:BX -> request packet (see #0221)
  3130. Return: AH = 00h if successful
  3131. SeeAlso: AH=80h,AX=8006h
  3132.  
  3133. Format of FAST! request packet:
  3134. Offset    Size    Description    (Table 0221)
  3135.  00h    DWORD    -> 19-byte signature string (see #0220)
  3136.  04h    DWORD    -> buffer for cache information (see #0222)
  3137.  
  3138. Format of FAST! cache information (v5.00-5.03):
  3139. Offset    Size    Description    (Table 0222)
  3140.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  3141.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  3142.  03h    BYTE    FAST! variant
  3143.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  3144.  04h    DWORD    total number of read requests
  3145.  08h    DWORD    number of physical disk reads
  3146.  0Ch    DWORD    grabbed hash buckets
  3147.  10h    DWORD    "st_386mem"
  3148.  14h    DWORD    total number of writes (only counted when staging enabled)
  3149.  18h    DWORD    number of physical disk writes (only when staging enabled)
  3150.  1Ch    DWORD    number of write errors while flushing cache
  3151.  20h    WORD    flags1 (see #0223)
  3152.  22h    WORD    flags
  3153.         bit 0: ???
  3154.         bit 1: staged writes enabled
  3155.  24h    WORD    ???
  3156.  26h    WORD    maximum cache size in KB
  3157.  28h    WORD    minimum cache size in KB
  3158.  2Ah    WORD    segment of first cache buffer (FASTC)
  3159.         segment of EMS page frame (FASTE)
  3160.         XMS handle (FASTX XMS)
  3161.  2Ch    WORD    number of hash buckets containing no entries
  3162.  2Eh    WORD    number of hash buckets containing one entry
  3163.  30h    WORD    number of hash buckets containing two entries
  3164.  32h    WORD    number of hash buckets containing three entries
  3165.  34h    WORD    number of hash buckets containing four entries
  3166.  36h    WORD    number of hash buckets containing five entries
  3167.  38h    WORD    maximum contiguous sectors
  3168.  3Ah    WORD    hash factor
  3169.  3Ch    WORD    number of paragraphs of memory used below 1M
  3170.  3Eh    WORD    entries per hash bucket
  3171.  40h    WORD    idle delay in seconds
  3172.  42h  2 BYTEs    ???
  3173.  44h    WORD    staged write threshold percentage
  3174.  46h  2 BYTEs    ???
  3175.  48h    WORD    number of dirty sectors
  3176.  4Ah    WORD    number of staged write buffers
  3177.  4Ch    WORD    current cache size in KB
  3178.  4Eh    WORD    beep frequency in Hz
  3179.  50h    WORD    ???
  3180.  52h    WORD    ???
  3181.  
  3182. Bitfields for FAST! flags1:
  3183. Bit(s)    Description    (Table 0223)
  3184.  0    beep on flush
  3185.  3    hotkeys enabled
  3186.  4    mouse idle check enabled
  3187.  8    caching enabled
  3188.  13    ???
  3189. --------c-138006CX6572-----------------------
  3190. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  3191.     AX = 8006h
  3192.     CX = 6572h
  3193.     DX = 1970h
  3194.     ES:BX -> request packet (see #0224)
  3195. Return: AX = 1965h if installed
  3196. SeeAlso: AH=80h,AX=8001h,AX=8007h
  3197.  
  3198. Format of FAST! request packet:
  3199. Offset    Size    Description    (Table 0224)
  3200.  00h    DWORD    -> 19-byte signature string (see #0220)
  3201. --------c-138007CX6572-----------------------
  3202. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  3203.     AX = 8007h
  3204.     CX = 6572h
  3205.     DX = 1970h
  3206.     ES:BX -> request packet (see #0225)
  3207. Return: AX = 1965h if installed
  3208. SeeAlso: AH=80h,AX=8006h
  3209. Index:    uninstall;FAST!
  3210.  
  3211. Format of FAST! request packet:
  3212. Offset    Size    Description    (Table 0225)
  3213.  00h    DWORD    -> 19-byte signature string (see #0220)
  3214. --------c-1381--SI4358-----------------------
  3215. INT 13 - Super PC-Kwik v3.20+ - ???
  3216.     AH = 81h
  3217.     SI = 4358h
  3218.     ???
  3219. Return: ???
  3220. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  3221.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  3222.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  3223.     returns immediately in PC-Cache v5.x
  3224. Index:    PC-Cache|Qualitas Qcache
  3225. --------c-1382--SI4358-----------------------
  3226. INT 13 - Super PC-Kwik v3.20+ - ???
  3227.     AH = 82h
  3228.     SI = 4358h
  3229.     ???
  3230. Return: AL = ???
  3231. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  3232.       Super PC-Kwik, and thus support this call
  3233. SeeAlso: AH=84h
  3234. Index:    PC-Cache|Qualitas Qcache
  3235. --------c-1383--SI4358-----------------------
  3236. INT 13 - Super PC-Kwik v3.20+ - ???
  3237.     AH = 83h
  3238.     SI = 4358h
  3239.     AL = ???
  3240.     ES:BX -> ???
  3241.     ???
  3242. Return: ???
  3243. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  3244.       Super PC-Kwik, and thus support this call
  3245. SeeAlso: AH=85h
  3246. Index:    PC-Cache|Qualitas Qcache
  3247. --------c-1384--SI4358-----------------------
  3248. INT 13 - Super PC-Kwik v3.20+ - ???
  3249.     AH = 84h
  3250.     SI = 4358h
  3251.     AL = ???
  3252.     ???
  3253. Return: AL = ???
  3254. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  3255.       Super PC-Kwik, and thus support this call
  3256. SeeAlso: AH=82h
  3257. Index:    PC-Cache|Qualitas Qcache
  3258. --------c-1385--SI4358-----------------------
  3259. INT 13 - Super PC-Kwik v3.20+ - ???
  3260.     AH = 85h
  3261.     SI = 4358h
  3262.     AL = ???
  3263.     DL = ???
  3264.     ???
  3265. Return: ???
  3266. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  3267.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  3268.       to PC-Kwik v3.20)
  3269. SeeAlso: AH=83h
  3270. Index:    PC-Cache|Qualitas Qcache
  3271. --------c-1386--SI4358-----------------------
  3272. INT 13 - Super PC-Kwik v4.00+ - ???
  3273.     AH = 86h
  3274.     SI = 4358h
  3275.     ???
  3276. Return: ???
  3277. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  3278.       thus supports this call
  3279. Index:    Qualitas Qcache
  3280. --------c-1387--SI4358-----------------------
  3281. INT 13 - Super PC-Kwik v4.00+ - ???
  3282.     AH = 87h
  3283.     SI = 4358h
  3284.     ???
  3285. Return: AH = status??? (00h)
  3286.     CX = ???
  3287.     DX = ??? (0000h)
  3288. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  3289.       thus supports this call
  3290. Index:    Qualitas Qcache
  3291. --------c-1388--SI4358-----------------------
  3292. INT 13 - Super PC-Kwik v4.00+ - ???
  3293.     AH = 88h
  3294.     SI = 4358h
  3295.     ???
  3296. Return: AH = status??? (00h)
  3297.     CX = ???
  3298.     DX = ??? (0000h)
  3299. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  3300.       thus supports this call
  3301. Index:    Qualitas Qcache
  3302. --------c-1389--SI4358-----------------------
  3303. INT 13 - Super PC-Kwik v5.10+ - ???
  3304.     AH = 89h
  3305.     SI = 4358h
  3306.     ???
  3307. Return: ???
  3308. --------c-138A--SI4358-----------------------
  3309. INT 13 - Super PC-Kwik v5.10+ - ???
  3310.     AH = 8Ah
  3311.     SI = 4358h
  3312.     ???
  3313. Return: ???
  3314. --------c-138EED-----------------------------
  3315. INT 13 - HyperDisk v4.01+ - ???
  3316.     AX = 8EEDh
  3317.     ???
  3318. Return: ???
  3319. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  3320. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h
  3321. --------c-138EEE-----------------------------
  3322. INT 13 - HyperDisk v4.01+ - ???
  3323.     AX = 8EEEh
  3324. Return: CF set
  3325.     AX = CS of HyperDisk resident code
  3326.     ???
  3327. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  3328. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  3329. --------c-138EEF-----------------------------
  3330. INT 13 - HyperDisk v4.01+ - ???
  3331.     AX = 8EEFh
  3332. Return: CF set
  3333.     AX = CS of HyperDisk resident code
  3334.     ???
  3335. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  3336. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  3337. --------c-1392--SI4358-----------------------
  3338. INT 13 - Super PC-Kwik v5.10+ - ???
  3339.     AH = 92h
  3340.     SI = 4358h
  3341.     ???
  3342. Return: AH = status??? (00h)
  3343.     DL = ???
  3344. SeeAlso: AH=93h
  3345. --------c-1393--SI4358-----------------------
  3346. INT 13 - Super PC-Kwik v5.10+ - ???
  3347.     AH = 93h
  3348.     SI = 4358h
  3349.     ???
  3350. Return: AH = status??? (00h)
  3351.     AL = ???
  3352. SeeAlso: AH=92h
  3353. --------c-1394--SI4358-----------------------
  3354. INT 13 - Super PC-Kwik v5.10+ - ???
  3355.     AH = 94h
  3356.     SI = 4358h
  3357.     ???
  3358. Return: ???
  3359. --------c-1395--SI4358-----------------------
  3360. INT 13 - Super PC-Kwik v5.10+ - ???
  3361.     AH = 95h
  3362.     SI = 4358h
  3363.     ???
  3364. Return: AH = status??? (00h)
  3365.     DX = ???
  3366. --------c-1396--SI4358-----------------------
  3367. INT 13 - Super PC-Kwik v5.10+ - ???
  3368.     AH = 96h
  3369.     SI = 4358h
  3370.     AL = ??? (01h)
  3371.     BX = ??? (0790h)
  3372.     DL = ???
  3373. Return: AH = status??? (00h)
  3374.     DX = ???
  3375. --------c-1397--SI4358-----------------------
  3376. INT 13 - Super PC-Kwik v5.10+ - ???
  3377.     AH = 97h
  3378.     SI = 4358h
  3379.     ???
  3380. Return: ???
  3381. --------c-1398--SI4358-----------------------
  3382. INT 13 - Super PC-Kwik v5.10+ - ???
  3383.     AH = 98h
  3384.     SI = 4358h
  3385.     ???
  3386. Return: ???
  3387. --------c-1399--SI4358-----------------------
  3388. INT 13 - Super PC-Kwik v5.10+ - ???
  3389.     AH = 99h
  3390.     SI = 4358h
  3391.     ???
  3392. Return: ???
  3393. --------c-139A--SI4358-----------------------
  3394. INT 13 - Super PC-Kwik v5.10+ - ???
  3395.     AH = 9Ah
  3396.     SI = 4358h
  3397.     ???
  3398. Return: ???
  3399. --------c-139B--SI4358-----------------------
  3400. INT 13 - Super PC-Kwik v5.10+ - ???
  3401.     AH = 9Bh
  3402.     SI = 4358h
  3403.     ???
  3404. Return: ???
  3405. --------c-139C--SI4358-----------------------
  3406. INT 13 - Super PC-Kwik v5.10+ - ???
  3407.     AH = 9Ch
  3408.     SI = 4358h
  3409.     ???
  3410. Return: ???
  3411. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  3412.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  3413.       if a previous call is still in progress
  3414. --------c-139D--SI4358-----------------------
  3415. INT 13 - Super PC-Kwik v5.10+ - ???
  3416.     AH = 9Dh
  3417.     SI = 4358h
  3418.     ???
  3419. Return: ???
  3420. --------c-13A0--SI4358-----------------------
  3421. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  3422.     AH = A0h
  3423.     SI = 4358h
  3424. Return: AX = segment of resident code
  3425. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  3426.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  3427.       corresponds to PC-Kwik v3.27)
  3428. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  3429. Index:    PC-Cache|Qualitas Qcache
  3430. --------c-13A1--SI4358-----------------------
  3431. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  3432.     AH = A1h
  3433.     SI = 4358h
  3434. Return: CF clear
  3435.     AH = 00h (v5.10)
  3436. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  3437.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  3438.       corresponds to PC-Kwik v3.20)
  3439. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  3440. Index:    PC-Cache|Qualitas Qcache
  3441. --------c-13A2--SI4358-----------------------
  3442. INT 13 - Super PC-Kwik v3.20+ - ???
  3443.     AH = A2h
  3444.     SI = 4358h
  3445.     ???
  3446. Return: ???
  3447. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  3448.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  3449.       corresponds to PC-Kwik v3.20)
  3450. Index:    PC-Cache|Qualitas Qcache
  3451. --------c-13A3--SI4358-----------------------
  3452. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  3453.     AH = A3h
  3454.     SI = 4358h
  3455. Return: CF clear
  3456. SeeAlso: AH=A4h
  3457. --------c-13A4--SI4358-----------------------
  3458. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  3459.     AH = A4h
  3460.     SI = 4358h
  3461. Return: CF clear
  3462. SeeAlso: AH=A3h
  3463. --------c-13A5--SI4358-----------------------
  3464. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  3465.     AH = A5h
  3466.     SI = 4358h
  3467. Return: AX = ???
  3468.     SI = ???
  3469. Notes:    called and used internally by Super PC-Kwik when a program terminates
  3470.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  3471.     this call is not supported by Qualitas Qcache 4.00
  3472. Index:    PC-Cache
  3473. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  3474. --------c-13A6--SI4358-----------------------
  3475. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  3476.     AH = A6h
  3477.     SI = 4358h
  3478.     DS:DX -> ASCIZ program name
  3479.     ES:BX -> EXEC data block (see #1276 at INT 21/AH=4Bh)
  3480. Return: ???
  3481. Note:    called and used internally by Super PC-Kwik when a program is loaded
  3482.       with INT 21/AX=4B00h
  3483. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  3484. --------c-13A7--SI4358-----------------------
  3485. INT 13 CU - Super PC-Kwik 5.1 - ???
  3486.     AH = A7h
  3487.     SI = 4358h
  3488. Return: ???
  3489. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  3490. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  3491. --------v-13A759-----------------------------
  3492. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  3493.     AX = A759h
  3494. Return: AX = 59A7h if installed
  3495.         DX:BX -> ??? data
  3496. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  3497.       Fifth Generation Systems, as bundled with Novell DOS 7
  3498. SeeAlso: INT 21/AH=0Eh/DL=ADh
  3499. --------c-13A8--SI4358-----------------------
  3500. INT 13 CU - Super PC-Kwik 5.1 - ???
  3501.     AH = A8h
  3502.     SI = 4358h
  3503. Return: ???
  3504. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  3505. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  3506. --------c-13A9--SI4358-----------------------
  3507. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  3508.     AH = A9h
  3509.     SI = 4358h
  3510. Return: ???
  3511. Note:    called and used internally by Super PC-Kwik when an application issues
  3512.       INT 21/AH=4Dh
  3513. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  3514. --------c-13AA--SI4358-----------------------
  3515. INT 13 - Super PC-Kwik v4+ - ???
  3516.     AH = AAh
  3517.     SI = 4358h
  3518.     ???
  3519. Return: ???
  3520. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  3521.       this call
  3522. --------c-13AB--SI4358-----------------------
  3523. INT 13 - Super PC-Kwik v4+ - ???
  3524.     AH = ABh
  3525.     SI = 4358h
  3526.     ???
  3527. Return: ???
  3528. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  3529.       this call
  3530. --------c-13AC--SI4358-----------------------
  3531. INT 13 - Super PC-Kwik v4+ - ???
  3532.     AH = ACh
  3533.     SI = 4358h
  3534.     ???
  3535. Return: ???
  3536. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  3537.       this call
  3538. --------d-13AD-------------------------------
  3539. INT 13 - Priam HARD DISK CONTROLLER???
  3540.     AH = ADh
  3541.     ???
  3542. Return: ???
  3543. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  3544.       to check the ROM type on the controller for their hard disk kits
  3545. SeeAlso: AH=70h
  3546. --------c-13AD--SI4358-----------------------
  3547. INT 13 - Super PC-Kwik v4+ - ???
  3548.     AH = ADh
  3549.     SI = 4358h
  3550.     ???
  3551. Return: ???
  3552. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  3553.       this call
  3554. --------c-13AE--SI4358-----------------------
  3555. INT 13 - Super PC-Kwik v5.10+ - ???
  3556.     AH = AEh
  3557.     SI = 4358h
  3558.     ???
  3559. Return: ???
  3560. --------c-13B0--SI4358-----------------------
  3561. INT 13 - Super PC-Kwik v3.20+ - ???
  3562.     AH = B0h
  3563.     SI = 4358h
  3564.     ???
  3565. Return: ???
  3566. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  3567.       supports this call; Qualitas Qcache does not support it
  3568. Index:    PC-Cache
  3569. --------v-13EC00-----------------------------
  3570. INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
  3571.     AX = EC00h
  3572. Return: CF clear if installed
  3573. SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
  3574. --------d-13EE-------------------------------
  3575. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  3576.     AH = EEh
  3577.     DL = drive number (80h, 81h)
  3578. Return: CF clear
  3579.        AH = 00h
  3580. Program: SWBIOS is a TSR by Ontrack Computer Systems
  3581. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  3582.       number to get the actual cylinder number desired
  3583. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  3584.     Disk Manager also supports these calls
  3585.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  3586.       in order to allow caching of drives using SWBIOS to access more than
  3587.       1024 cylinders
  3588.     for software which supports that call, this function is equivalent to
  3589.       calling AH=EFh with CX=0400h
  3590. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h
  3591. Index:    PC-Cache;huge disks|Disk Manager
  3592. --------c-13EF-------------------------------
  3593. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  3594.     AH = EFh
  3595.     CX = cylinder offset for next INT 13 call
  3596.     DL = drive number (80h, 81h)
  3597. Return: CF clear
  3598.         AH = 00h
  3599. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  3600.       IDE drives supporting the read multiple and write multiple commands
  3601. Desc:    the following INT 13 call will add the number given by this call to
  3602.       the specified cylinder to get the actual cylinder number, then reset
  3603.       the offset to zero
  3604. Note:    this function is also supported by the NOW! disk cache, and presumably
  3605.       newer versions of SWBIOS and Disk Manager
  3606.     for software which supports this call, AH=EEh is equivalent to calling
  3607.       this function with CX=0400h
  3608.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  3609.       and AH=EFh
  3610. SeeAlso: AX=7B00h
  3611. --------v-13F2-------------------------------
  3612. INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
  3613.     AH = F2h
  3614. Return: CF ??? if installed
  3615. SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
  3616. --------d-13F9-------------------------------
  3617. INT 13 - SWBIOS - INSTALLATION CHECK
  3618.     AH = F9h
  3619.     DL = drive number (80h,81h)
  3620. Return: CF clear
  3621.         DX = configuration word
  3622.         bit 15 set if other SWBIOS extensions available
  3623.     CF set on error
  3624. Program: SWBIOS is a TSR by Ontrack Computer Systems
  3625. Note:    Disk Manager also supports these calls
  3626. SeeAlso: AH=EEh
  3627. Index:    Disk Manager
  3628. --------v-13FA--DX5945-----------------------
  3629. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  3630.     AH = FAh
  3631.     DX = 5945h
  3632.     AL = function (00h-07h)
  3633. Return: varies by function
  3634.     if not installed:
  3635.         CF set
  3636.         AH = 01h
  3637. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  3638.       so it is listed in its entirety under INT 16/AX=FA00h and following
  3639. SeeAlso: INT 16/AX=FA00h
  3640. --------v-13FD50------------------------
  3641. INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
  3642.     AX = FD50h
  3643. Return: AX = 50FDh if resident
  3644. SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
  3645. --------d-13FE-------------------------------
  3646. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  3647.     AH = FEh
  3648.     DL = drive number (80h, 81h)
  3649. Return: CF clear
  3650.     DX = number of cylinders beyond 1024 on drive
  3651. Program: SWBIOS is a TSR by Ontrack Computer Systems
  3652. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  3653.     BIOS without this extension would return count modulo 1024
  3654.     Disk Manager also supports these calls
  3655. SeeAlso: AH=EEh
  3656. ----------13FF-------------------------------
  3657. INT 13 - Windows95 - ???
  3658.     AH = FFh
  3659.     DL - drive number (80h)
  3660. Return: ???
  3661. Note:    this function is called by the Windows95 Master Boot Record
  3662. --------B-13FF-------------------------------
  3663. INT 13 - IBM SurePath BIOS - Officially "Private" Function
  3664.     AH = FFh
  3665. --------U-13FFFFBHAA-------------------------
  3666. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  3667.     AX = FFFFh
  3668.     BH = AAh
  3669.     BL = subfunction
  3670.         00h installation check
  3671.         Return: AX = 1234h if installed
  3672.         01h turn on Turbo mode
  3673.         02h turn off Turbo mode
  3674.         03h set Turbo mode according to hardware switch
  3675.         04h set disk access to Turbo mode
  3676.         05h set disk access to Normal mode
  3677. Return: nothing
  3678. SeeAlso: INT 15/AH=DFh
  3679. Index:    installation check;UNIQUE UX Turbo Utility
  3680. --------S-14---------------------------------
  3681. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  3682. InstallCheck:    determine whether the "~DOSXAM~" character device exists
  3683. Index:    installation check;Digiboard DigiCHANNEL
  3684. --------S-1400-------------------------------
  3685. INT 14 - SERIAL - INITIALIZE PORT
  3686.     AH = 00h
  3687.     AL = port parameters (see #0226)
  3688.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  3689. Return: AH = line status (see #0230)
  3690.         FFh if error on Digiboard XAPCM232.SYS
  3691.     AL = modem status (see #0231)
  3692. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  3693.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  3694.       bps will result in 4800 bps
  3695.     various network and serial-port drivers support the standard BIOS
  3696.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  3697.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  3698. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  3699. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  3700. SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial"
  3701.  
  3702. Bitfields for serial port parameters:
  3703. Bit(s)    Description    (Table 0226)
  3704.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  3705.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  3706.  2    stop bits (set = 2, clear = 1)
  3707.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  3708. SeeAlso: #0228,#0233,#0234,#0235
  3709. --------S-1400-------------------------------
  3710. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  3711.     AH = 00h
  3712.     AL = initializing parameters
  3713.         7 - 6 - 5       4 - 3     2      1 - 0
  3714.         -BAUD RATE-       PARITY   STOP   WORD
  3715.                     BITS  LENGTH
  3716.         000 19200 bd   00 none  0: 1  00: 5
  3717.         001 38400 bd   01 odd   1: 2  01: 6
  3718.         010      300 bd   11 even      10: 7
  3719.         011      600 bd          11: 8
  3720.         100     1200 bd
  3721.         101     2400 bd
  3722.         110     4800 bd
  3723.         111     9600 bd (4800 on PCjr)
  3724.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  3725. Return: AH = RS-232 status code bits (see #0227)
  3726.     AL = modem status bits
  3727.         bit 3: always 1
  3728.         bit 7: DCD - carrier detect
  3729. SeeAlso: #0226,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  3730.  
  3731. Bitfields for FOSSIL RS-232 status:
  3732. Bit(s)    Description    (Table 0227)
  3733.  0    RDA - input data is available in buffer
  3734.  1    OVRN - data has been lost
  3735.  5    THRE - room is available in output buffer
  3736.  6    TSRE - output buffer empty
  3737. --------S-1400-------------------------------
  3738. INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT
  3739.     AH = 00h
  3740.     AL = RS-232C parameters (see #0228)
  3741.     DL = port number
  3742.     DH = protocol
  3743.         bit 0: use XON/XOFF on received data
  3744.         bit 1: use XON/XOFF when transmitting
  3745. Return: AH = line status (see #0230)
  3746.     AL = modem status (see #0231)
  3747. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  3748. SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000"
  3749. --------S-1400-------------------------------
  3750. INT 14 - MBBIOS - INITIALIZE PORT
  3751.     AH = 00h
  3752.     AL = port parameters (see #0228)
  3753.     DX = port number
  3754. Return: AH = line status (see #0230)
  3755.     AL = modem status (see #0231)
  3756. Note:    MBBIOS was written by H. Roy Engehausen
  3757. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  3758.  
  3759. Bitfields for MBBIOS port parameters:
  3760. Bit(s)    Description    (Table 0228)
  3761.  7-5    data rate
  3762.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  3763.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  3764.     if the high-speed option is set)
  3765.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  3766.  2    stop bits (set = 2, clear = 1)
  3767.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  3768. SeeAlso: #0226
  3769. --------N-1400--DXFFFF-----------------------
  3770. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  3771.     AH = 00h
  3772.     DX = FFFFh
  3773.     ES:DI -> vector string specifying new parameters
  3774. Return: AH = return code (00h,03h) (see #0229)
  3775. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3776.       serial ports over an IPX or NetBIOS-based network
  3777. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3778.       function, but redirects the port over the network; if DX is any other
  3779.       value, the call is chained
  3780. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  3781.  
  3782. (Table 0229)
  3783. Values for Connection Manager return code:
  3784.  00h    successful
  3785.  01h    no such connection
  3786.  02h    invalid connection ID
  3787.  03h    invalid subvector found
  3788.  04h    communication error (check BH)
  3789.  06h    insufficient resources, retry later
  3790.  FFh    no data available
  3791. --------S-1401-------------------------------
  3792. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  3793.     AH = 01h
  3794.     AL = character to write
  3795.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  3796. Return: AH bit 7 clear if successful
  3797.     AH bit 7 set on error
  3798.     AH bits 6-0 = port status (see #0230)
  3799. Notes:    various network and serial-port drivers support the standard BIOS
  3800.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  3801.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  3802. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h,MEM 0040h:007Ch
  3803. --------N-1401--DXFFFF-----------------------
  3804. INT 14 - Connection Manager - SEND CHARACTER
  3805.     AH = 01h
  3806.     DX = FFFFh
  3807.     BH = character to send
  3808. Return: AH = return code (00h-02h,06h) (see #0229)
  3809. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3810.       function, but redirects the port over the network; if DX is any other
  3811.       value, the call is chained
  3812.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  3813.       is the preferred function because it provides better performance
  3814. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  3815. --------S-1402-------------------------------
  3816. INT 14 - SERIAL - READ CHARACTER FROM PORT
  3817.     AH = 02h
  3818.     AL = 00h (ArtiCom)
  3819.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  3820. Return: AH = line status (see #0230)
  3821.     AL = received character if AH bit 7 clear
  3822. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  3823.       data ready
  3824.     various network and serial-port drivers support the standard BIOS
  3825.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  3826.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  3827. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  3828. --------S-1402-------------------------------
  3829. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  3830.     AH = 02h
  3831.     DX = port number (0-3)
  3832. Return: AL = character received
  3833.     AH = 00h
  3834. SeeAlso: AH=01h,AH=02h"SERIAL"
  3835. --------N-1402--DXFFFF-----------------------
  3836. INT 14 - Connection Manager - RECEIVE CHARACTER
  3837.     AH = 02h
  3838.     DX = FFFFh
  3839.     BH = character to send
  3840. Return: AH = return code (00h-02h,04h,FFh) (see #0229)
  3841.     BH = line status (see #0230)
  3842.     AL = received character (if any)
  3843. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3844.       function, but redirects the port over the network; if DX is any other
  3845.       value, the call is chained
  3846.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  3847.       is the preferred function because it provides better performance
  3848. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  3849. --------S-1403-------------------------------
  3850. INT 14 - SERIAL - GET PORT STATUS
  3851.     AH = 03h
  3852.     AL = 00h (ArtiCom)
  3853.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  3854. Return: AH = line status (see #0230)
  3855.     AL = modem status (see #0231)
  3856.     AX = 9E00h if disconnected (ArtiCom)
  3857. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  3858. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  3859.  
  3860. Bitfields for serial line status:
  3861. Bit(s)    Description    (Table 0230)
  3862.  7    timeout
  3863.  6    transmit shift register empty
  3864.  5    transmit holding register empty
  3865.  4    break detected
  3866.  3    framing error
  3867.  2    parity error
  3868.  1    overrun error
  3869.  0    receive data ready
  3870. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  3871.       through a separate call (see AX=8000h"COMM-DRV")
  3872.  
  3873. Bitfields for modem status:
  3874. Bit(s)    Description    (Table 0231)
  3875.  7    carrier detect
  3876.  6    ring indicator
  3877.  5    data set ready
  3878.  4    clear to send
  3879.  3    delta carrier detect
  3880.  2    trailing edge of ring indicator
  3881.  1    delta data set ready
  3882.  0    delta clear to send
  3883. --------N-1403--DXFFFF-----------------------
  3884. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  3885.     AH = 03h
  3886.     DX = FFFFh
  3887.     AL = connection ID
  3888. Return: AH = return code (00h-02h) (see #0229)
  3889.     BH = line status (see #0232)
  3890.     BL = modem status (see #0231) (only bits 4,5,7; all others zero)
  3891. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3892.       function, but redirects the port over the network; if DX is any other
  3893.       value, the call is chained
  3894. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  3895.  
  3896. Bitfields for Connection Manager line status:
  3897. Bit(s)    Description    (Table 0232)
  3898.  7    CTS changed
  3899.  6    current CTS state
  3900.  5    timeout
  3901.  4    break
  3902.  3    framing error
  3903.  2    parity error
  3904.  1    overrun
  3905.  0    current carrier state (0 active, 1 no carrier)
  3906. --------S-1404-------------------------------
  3907. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  3908.     AH = 04h
  3909.     AL = break status
  3910.         00h if break
  3911.         01h if no break
  3912.     BH = parity (see #0233)
  3913.     BL = number of stop bits
  3914.         00h one stop bit
  3915.         01h two stop bits (1.5 if 5 bit word length)
  3916.     CH = word length (see #0234)
  3917.     CL = bps rate (see #0235)
  3918.     DX = port number
  3919. Return: AX = port status code (see #0230,#0231)
  3920. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  3921.  
  3922. (Table 0233)
  3923. Values for serial port parity:
  3924.  00h    no parity
  3925.  01h    odd parity
  3926.  02h    even parity
  3927.  03h    stick parity odd
  3928.  04h    stick parity even
  3929. SeeAlso: #0226,#0234,#0235,#0236
  3930.  
  3931. (Table 0234)
  3932. Values for serial port word length:
  3933.  00h    5 bits
  3934.  01h    6 bits
  3935.  02h    7 bits
  3936.  03h    8 bits
  3937. SeeAlso: #0226,#0233,#0235,#0271
  3938.  
  3939. (Table 0235)
  3940. Values for serial port bps rate:
  3941.  00h    110 (19200 if ComShare installed)
  3942.  01h    150 (38400 if ComShare installed)
  3943.  02h    300
  3944.  03h    600 (14400 if ComShare installed)
  3945.  04h    1200
  3946.  05h    2400
  3947.  06h    4800 (28800 if ComShare installed)
  3948.  07h    9600
  3949.  08h    19200
  3950. ---ComShare---
  3951.  09h    38400
  3952.  0Ah    57600
  3953.  0Bh    115200
  3954. SeeAlso: #0226,#0233,#0235,#0272,#0279,AH=36h,#0290,#0530,#2609
  3955. --------S-1404-------------------------------
  3956. INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER
  3957.     AH = 04h
  3958.     DL = port number
  3959.     DH = protocol
  3960.         bit 0: use XON/XOFF on received data
  3961.         bit 1: use XON/XOFF when transmitting
  3962. Return: nothing
  3963. Desc:    clears the serial interface buffer
  3964. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  3965. SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000"
  3966. --------S-1404-------------------------------
  3967. INT 14 - FOSSIL - INITIALIZE DRIVER
  3968.     AH = 04h
  3969.     DX = port number
  3970.     optionally BX=4F50h
  3971.            ES:CX -> byte to be set upon ^C
  3972. Return: AX = 1954h (if successful)
  3973.     BL = maximum function number supported (excluding 7Eh and above)
  3974.     BH = revision of FOSSIL specification supported
  3975.     DTR is raised
  3976. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  3977.       following byte contains the maximum function number supported; this
  3978.       can serve as an installation check
  3979. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  3980. Index:    installation check;FOSSIL
  3981. --------S-1404-------------------------------
  3982. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  3983.     AH = 04h
  3984. Return: port initialized; if Hayes-compatible modem, a connection has been
  3985.       established
  3986. Note:    the port number is stored at offset BEh in the Task Control Block
  3987.       (see #0382 at INT 15/AH=13h"MultiDOS")
  3988. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3989. --------S-1404-------------------------------
  3990. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  3991.     AH = 04h
  3992.     AL = initializing parameters (see #0236)
  3993.     BX = baud rate
  3994.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3995. Return: AH = status
  3996.         00h successful
  3997.         FFh error
  3998. SeeAlso: AH=05h"Digiboard"
  3999.  
  4000. Bitfields for Digiboard initializing parameters:
  4001. Bit(s)    Description    (Table 0236)
  4002.  7-5    unused
  4003.  4-3    parity (00 none, 01 odd, 11 even)
  4004.  2    stop bits (0 = one, 1 = two)
  4005.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  4006. SeeAlso: #0233,#0234
  4007. --------S-1404-------------------------------
  4008. INT 14 - MBBIOS - INSTALLATION CHECK
  4009.     AH = 04h
  4010.     DX = port number
  4011. Return: AX = AA55h if installed on specified port
  4012. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  4013. --------N-1404--DXFFFF-----------------------
  4014. INT 14 - Connection Manager - OPEN COMMUNICATION
  4015.     AH = 04h
  4016.     DX = FFFFh
  4017.     ES:DI -> Connection Request protocol vector (see #0237)
  4018. Return: AH = return code
  4019.         00h successful
  4020.         AL = connection ID
  4021.         BH = connection type
  4022.             00h direct connection or no dialing
  4023.             01h Connection Server dialed phone
  4024.         01h no response from Connection Server
  4025.         03h invalid request
  4026. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4027.       serial ports over an IPX or NetBIOS-based network
  4028. Desc:    initiate a connection to the Connection Server listed in the current
  4029.       Client parameter set
  4030. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  4031.       function, but redirects the port over the network; if DX is any other
  4032.       value, the call is chained
  4033.     all subvectors of the Connection Request vector are optional; if
  4034.       missing, default values are provided by the default connection
  4035.       parameter set
  4036. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  4037. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  4038.  
  4039. Format of Connection Manager protocol command vector:
  4040. Offset    Size    Description    (Table 0237)
  4041.  00h    WORD    (big-endian) total length of command (including this word)
  4042.  02h    WORD    (big-endian) command code
  4043.         EF01h Connection Request
  4044.         EF06h Modify Connection Parameters
  4045.  04h  N BYTEs    list of subvectors (see #0239)
  4046.         allowable subvector types are 01h-04h,17h,18h for command code
  4047.           EF01h; 03h,04h for command code EF06h (see #0238)
  4048.  
  4049. (Table 0238)
  4050. Values for Connection Manager subvector type code:
  4051.  01h    Connection ID
  4052.  02h    Destination ID
  4053.  03h    Asynchronous line parameters
  4054.  04h    Data transfer parameters
  4055.  09h    Line speed
  4056.  0Ah    Serial coding
  4057.  0Bh    Packet size
  4058.  0Ch    Timers
  4059.  0Dh    Special characters
  4060.  0Eh    Target ID
  4061.  0Fh    Telephone number
  4062.  10h    ASCII destination ID
  4063.  11h    Parity
  4064.  12h    Bits per character
  4065.  13h    Number of stop bits
  4066.  14h    Packet timer
  4067.  15h    Intercharacter timer
  4068.  17h    Flags
  4069.  18h    Parameter ranges
  4070.  19h    Flow control
  4071.  
  4072. Format of Connection Manager subvector:
  4073. Offset    Size    Description    (Table 0239)
  4074.  00h    BYTE    length of subvector
  4075.  01h    BYTE    type code (see #0238)
  4076.  02h N-2 BYTEs    data, which may include subvectors
  4077. SeeAlso: #0240,#0241,#0242,#0243,#0244,#0245,#0246,#0247,#0248,#0249,#0250
  4078. SeeAlso: #0251,#0252,#0254,#0255,#0256,#0257,#0258,#0259,#0237
  4079.  
  4080. Format of Connection ID subvector:
  4081. Offset    Size    Description    (Table 0240)
  4082.  00h    BYTE    03h (length)
  4083.  01h    BYTE    01h (subvector "Connection ID")
  4084.  02h    BYTE    connection ID
  4085. SeeAlso: #0239
  4086.  
  4087. Format of Destination ID subvector:
  4088. Offset    Size    Description    (Table 0241)
  4089.  00h    BYTE    length
  4090.  01h    BYTE    02h (subvector "Destination ID")
  4091.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  4092. SeeAlso: #0239
  4093.  
  4094. Format of Asynchronous line parameters subvector:
  4095. Offset    Size    Description    (Table 0242)
  4096.  00h    BYTE    length
  4097.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  4098.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  4099. SeeAlso: #0239
  4100.  
  4101. Format of Data transfer parameters subvector:
  4102. Offset    Size    Description    (Table 0243)
  4103.  00h    BYTE    length
  4104.  01h    BYTE    04h (subvector "Data transfer parameters")
  4105.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  4106. SeeAlso: #0239
  4107.  
  4108. Format of Line speed subvector:
  4109. Offset    Size    Description    (Table 0244)
  4110.  00h    BYTE    04h (length)
  4111.  01h    BYTE    09h (subvector "Line speed")
  4112.  02h    WORD    bit map, highest set bit selects speed
  4113.         bit 0: 2400
  4114.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  4115.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  4116. SeeAlso: #0239
  4117.  
  4118. Format of Serial coding subvector:
  4119. Offset    Size    Description    (Table 0245)
  4120.  00h    BYTE    length
  4121.  01h    BYTE    0Ah (subvector "Serial coding")
  4122.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  4123. SeeAlso: #0239
  4124.  
  4125. Format of Packet size subvector:
  4126. Offset    Size    Description    (Table 0246)
  4127.  00h    BYTE    04h (length)
  4128.  01h    BYTE    0Bh (subvector "Packet size")
  4129.  02h    WORD    (big-endian) packet size, 1 to 1024
  4130. SeeAlso: #0239
  4131.  
  4132. Format of Timers subvector:
  4133. Offset    Size    Description    (Table 0247)
  4134.  00h    BYTE    length
  4135.  01h    BYTE    0Ch (subvector "Timers")
  4136.  02h  8 BYTEs    subvector of type 14h or 15h
  4137. SeeAlso: #0239
  4138.  
  4139. Format of Special characters subvector:
  4140. Offset    Size    Description    (Table 0248)
  4141.  00h    BYTE    length
  4142.  01h    BYTE    0Dh (subvector "Special characters")
  4143.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  4144. SeeAlso: #0239
  4145.  
  4146. Format of Target ID:
  4147. Offset    Size    Description    (Table 0249)
  4148.  00h    BYTE    length
  4149.  01h    BYTE    0Eh (subvector "Target ID")
  4150.  02h  N BYTEs    target ID, 1-16 bytes
  4151. SeeAlso: #0239
  4152.  
  4153. Format of Telephone number subvector:
  4154. Offset    Size    Description    (Table 0250)
  4155.  00h    BYTE    length
  4156.  01h    BYTE    0Fh (subvector "Telephone number")
  4157.  02h  N BYTEs    telephone number
  4158. SeeAlso: #0239
  4159.  
  4160. Format of ASCII destination ID subvector:
  4161. Offset    Size    Description    (Table 0251)
  4162.  00h    BYTE    length
  4163.  01h    BYTE    10h (subvector "ASCII destination ID")
  4164.  02h  N BYTEs    destination ID
  4165. SeeAlso: #0239
  4166.  
  4167. Format of Parity subvector:
  4168. Offset    Size    Description    (Table 0252)
  4169.  00h    BYTE    03h (length)
  4170.  01h    BYTE    11h (subvector "Parity")
  4171.  02h    BYTE    parity type (see #0253)
  4172. SeeAlso: #0239
  4173.  
  4174. Bitfields for Connection Manager parity type:
  4175. Bit(s)    Description    (Table 0253)
  4176.  7    odd
  4177.  6    even
  4178.  5    mark
  4179.  4    space
  4180.  3    none
  4181. SeeAlso: #0252
  4182.  
  4183. Format of Bits per character subvector:
  4184. Offset    Size    Description    (Table 0254)
  4185.  00h    BYTE    03h (length)
  4186.  01h    BYTE    12h (subvector "Bits per character")
  4187.  02h    BYTE    bits per character
  4188.         bit 7: seven
  4189.         bit 6: eight
  4190. SeeAlso: #0239
  4191.  
  4192. Format of Number of stop bits subvector:
  4193. Offset    Size    Description    (Table 0255)
  4194.  00h    BYTE    03h (length)
  4195.  01h    BYTE    13h (subvector "Number of stop bits")
  4196.  02h    BYTE    stop bits
  4197.         bit 7: one
  4198.         bit 6: 1.5
  4199.         bit 5: two
  4200. SeeAlso: #0239
  4201.  
  4202. Format of Packet timer and Intercharacter timer subvectors:
  4203. Offset    Size    Description    (Table 0256)
  4204.  00h    BYTE    04h (length)
  4205.  01h    BYTE    subvector type
  4206.         14h Packet timer
  4207.         15h Intercharacter timer
  4208.  02h    WORD    (big-endian) unit of value representing 20ms
  4209. SeeAlso: #0239
  4210.  
  4211. Format of Flags subvector:
  4212. Offset    Size    Description    (Table 0257)
  4213.  00h    BYTE    03h (length)
  4214.  01h    BYTE    17h (subvector "Flags")
  4215.  02h    BYTE    flags
  4216.         bit 7: queueing requested
  4217. SeeAlso: #0239
  4218.  
  4219. Format of Parameter ranges subvector:
  4220. Offset    Size    Description    (Table 0258)
  4221.  00h    BYTE    length
  4222.  01h    BYTE    18h (subvector "Parameter ranges")
  4223.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  4224. SeeAlso: #0239
  4225.  
  4226. Format of Flow control subvector:
  4227. Offset    Size    Description    (Table 0259)
  4228.  00h    BYTE    length (02h-04h)
  4229.  01h    BYTE    19h (subvector "Flow control")
  4230.  02h    BYTE    XOFF character
  4231.  03h    BYTE    XON character
  4232. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  4233.       character will be accepted as XON after an XOFF
  4234. SeeAlso: #0239
  4235. --------S-140400-----------------------------
  4236. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  4237.     AX = 0400h
  4238. Return: AX = 0FF0h
  4239. SeeAlso: AX=0401h,AX=0408h
  4240. --------S-140401-----------------------------
  4241. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  4242.     AX = 0401h
  4243.     CX = mode
  4244. Return: nothing
  4245. SeeAlso: AX=0400h,AX=0402h
  4246. --------S-140402-----------------------------
  4247. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  4248.     AX = 0402h
  4249.     CL = parameters
  4250. Return: nothing
  4251. SeeAlso: AX=0400h,AX=0401h
  4252. --------S-140403-----------------------------
  4253. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  4254.     AX = 0403h
  4255.     CX = timeout
  4256. Return: nothing
  4257. SeeAlso: AX=0400h
  4258. --------S-140404-----------------------------
  4259. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  4260.     AX = 0404h
  4261. Return: nothing
  4262. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  4263. --------S-140405-----------------------------
  4264. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  4265.     AX = 0405h
  4266. Return: AX = number of characters in buffer
  4267. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  4268. --------S-140406-----------------------------
  4269. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  4270.     AX = 0406h
  4271. Return: nothing
  4272. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  4273. --------S-140407-----------------------------
  4274. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  4275.     AX = 0407h
  4276. Return: AX = number of characters in the buffer
  4277. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  4278. --------S-140408-----------------------------
  4279. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  4280.     AX = 0408h
  4281. Return: nothing
  4282. SeeAlso: AX=0400h
  4283. --------S-1405-------------------------------
  4284. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  4285.     AH = 05h
  4286.     AL = function
  4287.         00h read modem control register
  4288.           Return: BL = modem control register (see #0260)
  4289.               AH = status
  4290.         01h write modem control register
  4291.           BL = modem control register (see #0260)
  4292.           Return: AX = status
  4293.     DX = port number
  4294. Note:    also supported by ArtiCom
  4295. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  4296.  
  4297. Bitfields for modem control register:
  4298. Bit(s)    Description    (Table 0260)
  4299.  0    data terminal ready
  4300.  1    request to send
  4301.  2    OUT1
  4302.  3    OUT2
  4303.  4    LOOP
  4304.  5-7    reserved
  4305. --------S-1405-------------------------------
  4306. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  4307.     AH = 05h
  4308.     DX = port number
  4309. Return: none
  4310.     DTR is not affected
  4311. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  4312. --------S-1405-------------------------------
  4313. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  4314.     AH = 05h
  4315.     AL = timeout in seconds (00h = never)
  4316. Return: AL = status
  4317.         00h successful
  4318.         AH = character read
  4319.         01h read error
  4320.         02h timed out
  4321.         other modem status (CTS, DSR) changed
  4322. Note:    the port number is stored at offset BEh in the Task Control Block
  4323. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  4324. SeeAlso: INT 15/AH=13h"MultiDOS"
  4325. --------S-1405-------------------------------
  4326. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  4327.     AH = 05h
  4328.     AL = protocol (see #0261)
  4329.     BH = new XOFF character (00h = current)
  4330.     BL = new XON character (00h = current)
  4331.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4332. Return: AH = status
  4333.         00h successful
  4334.         FFh error
  4335. SeeAlso: AH=04h"Digiboard"
  4336.  
  4337. Bitfields for Digiboard protocol:
  4338. Bit(s)    Description    (Table 0261)
  4339.  7-4    unused
  4340.  3    RTS/CTS
  4341.  2    DSR
  4342.  1,0    XON/XOFF
  4343. --------S-1405-------------------------------
  4344. INT 14 - MBBIOS - DROP DTR AND RTS
  4345.     AH = 05h
  4346.     DX = port number
  4347. Return: none
  4348. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  4349. --------S-1405-------------------------------
  4350. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  4351.     AH = 05h
  4352.     AL = new port protocol (see #0262)
  4353.     BH = new XOFF character
  4354.     BL = new XON character
  4355.     DX = port number
  4356. Return: AH = FFh if invalid protocol
  4357. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  4358.  
  4359. Bitfields for PC-MOS/386 serial port protocol:
  4360. Bit(s)    Description    (Table 0262)
  4361.  7    set to enable/disable CD monitoring, clear to set protocol
  4362. ---bit 7 set---
  4363.  4    CD monitoring enabled
  4364.  5    automatic restart enabled
  4365. ---bit 7 clear---
  4366.  0    receive XON/XOFF
  4367.  1    transmit XON/XOFF
  4368.  2    DTR/DSR
  4369.  3    RTS/CTS
  4370. --------N-1405--DXFFFF-----------------------
  4371. INT 14 - Connection Manager - CLOSE COMMUNICATION
  4372.     AH = 05h
  4373.     DX = FFFFh
  4374.     AL = connection ID
  4375. Return: AH = return code
  4376.         00h successful
  4377.         01h no such connection
  4378.         02h invalid connection ID
  4379.         AL = correct connection ID
  4380. Desc:    terminate existing connection to allow another one to be established
  4381. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  4382.       function, but redirects the port over the network; if DX is any other
  4383.       value, the call is chained
  4384. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  4385. --------S-1406-------------------------------
  4386. INT 14 - FOSSIL - RAISE/LOWER DTR
  4387.     AH = 06h
  4388.     DX = port
  4389.     AL = DTR state to be set
  4390.         00h = lower
  4391.         01h = raise
  4392. Return: nothing
  4393. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  4394. --------S-1406-------------------------------
  4395. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  4396.     AH = 06h
  4397.     AL = character
  4398. Return: AL = status
  4399.         00h successful
  4400. Notes:    the port number is stored at offset BEh in the Task Control Block
  4401.     if output queue is full, the calling task is blocked until the
  4402.       character can be stored
  4403. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  4404. SeeAlso: INT 15/AH=13h"MultiDOS"
  4405. --------S-1406-------------------------------
  4406. INT 14 - MBBIOS - RAISE DTR AND RTS
  4407.     AH = 06h
  4408.     DX = port number
  4409. Return: none
  4410. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  4411. --------S-1406-------------------------------
  4412. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  4413.     AH = 06h
  4414.     DX = port number
  4415. Return: AH bit 7 set
  4416.     AL = number of highest function supported by driver
  4417. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4418.       operating system by The Software Link, Inc.
  4419. SeeAlso: AH=18h"PC-MOS"
  4420. --------N-1406-------------------------------
  4421. INT 14 - TelAPI - WRITE BLOCK
  4422.     AH = 06h
  4423.     CX = number of characters to write
  4424.     DX = port number
  4425.     ES:DI -> buffer containing data
  4426. Return: AX = number of characters actually sent (negative on error)
  4427.     CX = ???
  4428. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI"
  4429. --------N-1406--DXFFFF-----------------------
  4430. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  4431.     AH = 06h
  4432.     DX = FFFFh
  4433.     AL = connection ID
  4434.     CX = number of characters to send
  4435.     ES:DI -> buffer containing data to be sent
  4436. Return: AH = return code (see #0229)
  4437. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4438.       serial ports over an IPX or NetBIOS-based network
  4439. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  4440. --------S-1407-------------------------------
  4441. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  4442.     AH = 07h
  4443. Return: AL = timer tick interrupt number
  4444.     AH = ticks per second on interrupt number in AL
  4445.     DX = approximate number of milliseconds per tick
  4446. SeeAlso: AH=16h
  4447. --------S-1407-------------------------------
  4448. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  4449.     AH = 07h
  4450. Return: CL = modem status (see #0231)
  4451.     CH = character at head of input queue (if any)
  4452.     DX = number of characters in input queue
  4453. Note:    the port number is stored at offset BEh in the Task Control Block
  4454. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  4455. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4456. --------S-1407-------------------------------
  4457. INT 14 - MBBIOS - SEND BREAK
  4458.     AH = 07h
  4459.     DX = port number
  4460. Return: none
  4461. SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
  4462. --------S-1407-------------------------------
  4463. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  4464.     AH = 07h
  4465.     BX = duration of break in clock ticks
  4466.     DX = port number
  4467. Return: nothing
  4468. --------N-1407-------------------------------
  4469. INT 14 - TelAPI - READ BLOCK
  4470.     AH = 07h
  4471.     CX = length of buffer in bytes
  4472.     DX = port number
  4473.     ES:DI -> buffer for data
  4474. Return: AX > 0000h number of characters actually read
  4475.     AX = 0000h host has closed connection
  4476.     AX < 0000h error code (see #0323)
  4477.     CX = ???
  4478. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  4479.       negotiates various Telnet options, and immediately executes several
  4480.       different Telnet action commands
  4481. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI"
  4482. --------N-1407--DXFFFF-----------------------
  4483. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  4484.     AH = 07h
  4485.     DX = FFFFh
  4486.     AL = connection ID
  4487.     BL = flag
  4488.         00h wait for data
  4489.         nonzero do not wait if no data avaiable
  4490.     CX = size of receive buffer
  4491.     ES:DI -> buffer for received characters
  4492. Return: AH = return code (00h-02h,04h,FFh) (see #0229)
  4493.     BH = line status (see #0232)
  4494.     CX = number of characters received
  4495. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4496.       serial ports over an IPX or NetBIOS-based network
  4497. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  4498. --------S-1408-------------------------------
  4499. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  4500.     AH = 08h
  4501.     DX = port number
  4502. Return: nothing
  4503. SeeAlso: AH=09h"FOSSIL"
  4504. --------S-1408-------------------------------
  4505. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  4506.     AH = 08h
  4507. Return: AL = line status (see #0230)
  4508.     AH destroyed
  4509. Notes:    the port number is stored at offset BEh in the Task Control Block
  4510.     on every line status change, the line status is ORed with the line
  4511.       status accumulator; this function returns the accumulator and clears
  4512.       it
  4513. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4514. --------S-1408-------------------------------
  4515. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  4516.     AH = 08h
  4517.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4518. Return: AH = RS232 status bits (see #0230 at AH=03h)
  4519.     ZF set if no characters queued
  4520.     ZF clear if character available
  4521.         AL = next character
  4522. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  4523. --------S-1408-------------------------------
  4524. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  4525.     AH = 08h
  4526.     DX = port number
  4527. Return: AL = character (if AH bit 0 set)
  4528.     AH = status (see #0230)
  4529. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  4530. --------S-1408-------------------------------
  4531. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  4532.     AH = 08h
  4533.     DX = port number
  4534. Return: CF set if carrier loss detected
  4535.     ZF set if input buffer empty
  4536.     ZF clear if characters available
  4537.         AL = next character dequeued
  4538. --------N-1408--DXFFFF-----------------------
  4539. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  4540.     AH = 08h
  4541.     DX = FFFFh
  4542.     CX = size of buffer for parameters or 0000h to get length
  4543.     ES:DI -> buffer for parameter vector (see #0237)
  4544. Return: AH = return code
  4545.         00h successful
  4546.         CX = number of bytes required (if CX=0000h on entry)
  4547.         CX = number of bytes omitted for lack of space (if CX nonzero)
  4548.         nonzero invalid request
  4549. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4550.       serial ports over an IPX or NetBIOS-based network
  4551. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  4552. --------S-1409-------------------------------
  4553. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  4554.     AH = 09h
  4555.     DX = port number
  4556. Return: nothing
  4557. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  4558. --------S-1409-------------------------------
  4559. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  4560.     AH = 09h
  4561. Return: modem status byte cleared
  4562. Note:    the port number is stored at offset BEh in the Task Control Block
  4563. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4564. --------S-1409-------------------------------
  4565. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  4566.     AH = 09h
  4567.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4568. Return: AH = status
  4569.         00h successful
  4570.         FFh error
  4571. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  4572. --------S-1409-------------------------------
  4573. INT 14 - MBBIOS - GET/SET OPTIONS
  4574.     AH = 09h
  4575.     AL = option byte (see #0263)
  4576.     DX = port number???
  4577. Return: AL = old option byte
  4578. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  4579.  
  4580. Bitfields for MBBIOS option byte:
  4581. Bit(s)    Description    (Table 0263)
  4582.  0    transmit buffering enabled
  4583.  2    hardware handshaking enabled
  4584.  5    high-speed option enabled (see AH=00h"MBBIOS",#0228)
  4585.  other    reserved
  4586. --------S-1409-------------------------------
  4587. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  4588.     AH = 09h
  4589.     DX = port number
  4590. Return: nothing
  4591. SeeAlso: AH=13h"PC-MOS"
  4592. --------N-1409--DXFFFF-----------------------
  4593. INT 14 - Connection Manager - SEND BREAK
  4594.     AH = 09h
  4595.     DX = FFFFh
  4596.     AL = connection ID
  4597. Return: AH = return code (00h-02h) (see #0229 at AH=00h/DX=FFFFh)
  4598. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4599.       serial ports over an IPX or NetBIOS-based network
  4600. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  4601. --------S-140A-------------------------------
  4602. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  4603.     AH = 0Ah
  4604.     DX = port number
  4605. Return: nothing
  4606. SeeAlso: AH=09h"FOSSIL",AH=85h
  4607. --------S-140A-------------------------------
  4608. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  4609.     AH = 0Ah
  4610.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4611. Return: AX = number of characters available in buffer
  4612. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  4613. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  4614. --------S-140A-------------------------------
  4615. INT 14 - MBBIOS - WRITE BUFFER
  4616.     AH = 0Ah
  4617.     CX = count
  4618.     ES:DI -> buffer (see #0264)
  4619. Return: AX = status (see #0230,#0231)
  4620.     CX = unsent character count
  4621.     DI updated
  4622. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  4623.       contains the segment of a buffer containing the packet to be sent,
  4624.       which by default will be freed once the packet has been sent.     Use
  4625.       AH=0Ch"MBBIOS" to allocate the buffer.
  4626. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  4627.  
  4628. Format of MBBIOS PACCOM buffer:
  4629. Offset    Size    Description    (Table 0264)
  4630.  00h 504 BYTEs    data area
  4631. 1F8h    WORD    length of data in data area
  4632. 1FAh    BYTE    flags/status
  4633.         bit 7: don't discard buffer after transmitting data
  4634.         bit 6: buffer has been transmitted
  4635. 1FBh    BYTE    reserved (0) for additional flags/status
  4636. 1FCh    WORD    user data
  4637. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  4638. --------N-140A--DXFFFF-----------------------
  4639. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  4640.     AH = 0Ah
  4641.     DX = FFFFh
  4642.     ES:DI -> vector string containing new parameters (see #0237)
  4643. Return: AH = return code (00h-03h,06h) (see #0229)
  4644. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4645.       serial ports over an IPX or NetBIOS-based network
  4646. Note:    any subvectors valid for the Change Parameters command replace the
  4647.       existing values in the current set
  4648. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  4649. --------S-140B-------------------------------
  4650. INT 14 - FOSSIL - TRANSMIT NO WAIT
  4651.     AH = 0Bh
  4652.     AL = character
  4653.     DX = port number
  4654. Return: AX = result
  4655.         0000h character not accepted
  4656.         0001h character accepted
  4657. SeeAlso: AH=01h
  4658. --------S-140B-------------------------------
  4659. INT 14 - MBBIOS - READ BUFFER
  4660.     AH = 0Bh
  4661.     CX = size of buffer
  4662.     ES:DI -> buffer
  4663. Return: AH = composite line status (see #0230) formed by ORing all statuses
  4664.           on receive interrupts; bit 0 set if additional characters
  4665.           available
  4666.     AL = composite modem status (see #0231) formed by ORing all statuses
  4667.     CX = number of characters actually read
  4668.     DI updated
  4669. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  4670.       instead returning ES set to the segment of the buffer containing a
  4671.       received packet, or 0000h if no packets available; the buffer may
  4672.       be freed with AH=0Ch"MBBIOS"
  4673. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  4674. --------N-140B--DXFFFF-----------------------
  4675. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  4676.     AH = 0Bh
  4677.     DX = FFFFh
  4678.     AL = service name
  4679.         00h use parameter file or default
  4680.         01h use specified name
  4681.         ES:DI -> 16-byte blank-padded name
  4682.     BH = connection notification
  4683.         00h program awaiting connection, don't notify user
  4684.         01h notify user on connecting
  4685.     BL = connection type
  4686.         00h connection will use Connection Manager API
  4687. Return: AH = return code (00h-02h) (see #0229 at AH=00h/DX=FFFFh)
  4688.     AL = connection ID if AH=00h
  4689. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4690.       serial ports over an IPX or NetBIOS-based network
  4691. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  4692. --------S-140C-------------------------------
  4693. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  4694.     AH = 0Ch
  4695.     DX = port number
  4696. Return: AX = FFFFh character not available
  4697.     AX = 00xxh character xx available
  4698. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  4699. --------S-140C-------------------------------
  4700. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  4701.     AH = 0Ch
  4702.     ES = segment of buffer to free, or 0000h to allocate new buffer
  4703. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  4704. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  4705.       AH=0Ah and AH=0Bh
  4706. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  4707. --------N-140C--DXFFFF-----------------------
  4708. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  4709.     AH = 0Ch
  4710.     DX = FFFFh
  4711.     AL = connection ID from AH=0Bh/DX=FFFFh
  4712. Return: AH = return code (00h-03h) (see also #0229 at AH=00h/DX=FFFFh)
  4713.         03h not prepared for inbound connection
  4714.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  4715. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4716.       serial ports over an IPX or NetBIOS-based network
  4717. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  4718. --------S-140D-------------------------------
  4719. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  4720.     AH = 0Dh
  4721. Return: AX = result
  4722.         FFFFh character not available
  4723.         xxyyh standard IBM-style scan code
  4724. SeeAlso: AH=0Eh
  4725. --------S-140D-------------------------------
  4726. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  4727.     AH = 0Dh
  4728.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4729. Return: ES:BX -> CH_KEY_RDY flag (see #0265)
  4730. SeeAlso: AH=0Ah"Digiboard"
  4731.  
  4732. (Table 0265)
  4733. Values for Digiboard CH_KEY_RDY flag:
  4734.  00h    receive buffer empty
  4735.  FFh    characters available
  4736. --------S-140D-------------------------------
  4737. INT 14 - MBBIOS PACCOM support - SET TXD
  4738.     AH = 0Dh
  4739.     AL = new setting (FFh = 1.0)
  4740. Return: nothing
  4741. Desc:    specify the time from RTS to start or packet
  4742. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  4743. --------N-140D--DXFFFF-----------------------
  4744. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  4745.     AH = 0Dh
  4746.     DX = FFFFh
  4747. Return: AH = return code
  4748.         00h successful
  4749.         nonzero operation not terminated
  4750. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4751.       serial ports over an IPX or NetBIOS-based network
  4752. Desc:    end all Connection Client TSR activity to allow it to be removed from
  4753.       memory
  4754. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  4755. --------S-140D00-----------------------------
  4756. INT 14 - MBBIOS - GET AVAILABLE BYTES
  4757.     AX = 0D00h
  4758. Return: AX = bytes in transmit buffer
  4759.     CX = bytes in receive buffer
  4760. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  4761. --------S-140D01-----------------------------
  4762. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  4763.     AX = 0D01h
  4764. Return: nothing
  4765. Note:    this function lowers DTR, RTS, etc.
  4766. SeeAlso: AX=0D02h
  4767. --------S-140D02-----------------------------
  4768. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  4769.     AX = 0D02h
  4770. Return: nothing
  4771. Note:    this function raises DTR, RTS, etc.
  4772. SeeAlso: AX=0D01h
  4773. --------S-140D03-----------------------------
  4774. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  4775.     AX = 0D03h
  4776.     CL = new handshake byte
  4777. Return: CL = previous handshake byte
  4778. Note:    this function lowers DTR, RTS, etc.
  4779. --------S-140E-------------------------------
  4780. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  4781.     AH = 0Eh
  4782. Return: AX = xxyyh standard IBM-style scan code
  4783. SeeAlso: AH=0Dh"FOSSIL"
  4784. --------S-140E-------------------------------
  4785. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  4786.     AH = 0Eh
  4787.     CX = number of characters to write
  4788.     ES:BX -> string
  4789.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4790. Return: AX = number of characters actually written
  4791.     ZF clear if successful
  4792.     ZF set on error
  4793. SeeAlso: AH=0Fh"Digiboard"
  4794. --------S-140E-------------------------------
  4795. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  4796.     AH = 0Eh
  4797.     AL = new setting (FFh = 1.0)
  4798. Return: nothing
  4799. Desc:    specify the time from end of DCD to RTS
  4800. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  4801. --------N-140E--DXFFFF-----------------------
  4802. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  4803.     AH = 0Eh
  4804.     DX = FFFFh
  4805.     AL = connection ID from AH=04h/DX=FFFFh
  4806.     BL = RTS state (00h off, 01h on)
  4807. Return: AH = return code (00h-03h) (see also #0229 at AH=00h/DX=FFFFh)
  4808.         03h invalid request (BL not 00h or 01h)
  4809. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4810.       serial ports over an IPX or NetBIOS-based network
  4811. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  4812. --------S-140F-------------------------------
  4813. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  4814.     AH = 0Fh
  4815.     AL = bit mask describing requested flow control (see #0266)
  4816.     DX = port number
  4817. Return: nothing
  4818. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  4819.  
  4820. Bitfields for FOSSIL requested flow control:
  4821. Bit(s)    Description    (Table 0266)
  4822.  0    XON/XOFF on transmit (watch for XOFF while sending)
  4823.  1    CTS/RTS (CTS on transmit/RTS on receive)
  4824.  2    reserved
  4825.  3    XON/XOFF on receive (send XOFF when buffer near full)
  4826.  4-7    all 1
  4827. --------S-140F-------------------------------
  4828. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  4829.     AH = 0Fh
  4830.     CX = number of characters to read
  4831.     ES:BX -> buffer
  4832.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4833. Return: AX = number of characters read
  4834.     ZF clear if successful
  4835.     ZF set on error (line status or wrong number of characters)
  4836. SeeAlso: AH=0Eh"Digiboard"
  4837. --------S-140F-------------------------------
  4838. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  4839.     AH = 0Fh
  4840.     AL = new setting in clock ticks
  4841. Return: nothing
  4842. Desc:    specify the time from end of DCD to RTS
  4843. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  4844. --------N-140F--DXFFFF-----------------------
  4845. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  4846.     AH = 0Fh
  4847.     DX = FFFFh
  4848.     AL = connection ID
  4849.     CX = size of buffer or 0000h to get length of returned vector
  4850.     ES:DI -> buffer for connection parameter vector (see #0237)
  4851. Return: AH = return code (00h-02h,06h) (see #0229 at AH=00h/DX=FFFFh)
  4852.     CX = number of bytes which could not be returned because the given
  4853.           buffer was too small
  4854. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4855.       serial ports over an IPX or NetBIOS-based network
  4856. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  4857. --------S-1410-------------------------------
  4858. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  4859.     AH = 10h
  4860.     AL = bit mask
  4861.         bit 0: enable/disable ^C/^K checking
  4862.         bit 1: enable/disable the transmitter
  4863.     DX = port number
  4864. Return: nothing
  4865. SeeAlso: AH=0Fh"FOSSIL"
  4866. --------S-1410-------------------------------
  4867. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  4868.     AH = 10h
  4869.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4870. Return: AH = status
  4871.         00h successful
  4872.         FFh error
  4873. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  4874. --------S-1410-------------------------------
  4875. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  4876.     AH = 10h
  4877.     AL = new setting in clock ticks (should be at least 5 character times)
  4878. Return: nothing
  4879. Desc:    specify the time from start of last character to dropping RTS
  4880. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  4881. --------N-1410--DXFFFF-----------------------
  4882. INT 14 - Connection Manager - QUERY SERVICE NAMES
  4883.     AH = 10h
  4884.     DX = FFFFh
  4885.     CL = subfunction
  4886.         00h search first
  4887.         01h search next
  4888.     ES:DI -> pattern buffer (see #0267)
  4889. Return: AH = return code (00h,01h,03h,06h) (see also #0229 at AH=00h/DX=FFFFh)
  4890.         01h no (more) matching names
  4891.         03h invalid request
  4892.     ES:DI buffer filled with reply buffer (see #0267) containing matched
  4893.           name if AH=00h
  4894. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4895.       serial ports over an IPX or NetBIOS-based network
  4896. Desc:    obtain the names of groups and lines available for connection requests,
  4897.       and the names of active Connection Servers
  4898. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  4899.  
  4900. Format of Connection Manager pattern/reply buffer:
  4901. Offset    Size    Description    (Table 0267)
  4902.  00h    WORD    length of pattern (30h or 32h)
  4903.  02h 16 BYTEs    server pattern or name
  4904.  12h 16 BYTEs    group pattern or name
  4905.  22h 16 BYTEs    line pattern or name
  4906.  23h    BYTE    (optional) ???
  4907.  24h    BYTE    (optional, returned) current line status
  4908.         00h available
  4909.         01h out of service
  4910.         02h currently allocated to a connection
  4911. Note:    pattern may include '?' wildcard to match any character
  4912. --------S-1411-------------------------------
  4913. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  4914.     AH = 11h
  4915.     DH = row
  4916.     DL = column
  4917. Return: nothing
  4918. Note:    this is the same as INT 10/AH=02h
  4919. SeeAlso: AH=12h"FOSSIL"
  4920. --------S-1411-------------------------------
  4921. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  4922.     AH = 11h
  4923.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4924. Return: AH = status
  4925.         00h successful
  4926.         FFh error
  4927. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  4928. --------S-1411-------------------------------
  4929. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  4930.     AH = 11h
  4931.     DX = port number
  4932. Return: AL = status
  4933.         00h successful
  4934.         01h IRQ for port is shared
  4935.         02h IRQ was reserved
  4936. SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS"
  4937. --------S-1412-------------------------------
  4938. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  4939.     AH = 12h
  4940. Return: DH = row
  4941.     DL = column
  4942. Note:    this is the same as INT 10/AH=03h
  4943. SeeAlso: AH=11h"FOSSIL"
  4944. --------S-1412-------------------------------
  4945. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  4946.     AH = 12h
  4947.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4948. Return: AX = number of bytes free
  4949. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  4950. --------S-1412-------------------------------
  4951. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  4952.     AH = 12h
  4953.     DX = port number
  4954. Return: AH = status
  4955.         FFh port number invalid
  4956.     AL = line parameters (see #0230)
  4957.     AH = flow control configuration (see #0262 at AH=05h"PC-MOS")
  4958.     CX:BX = bps rate
  4959.     DL = XOFF character or 00h for none
  4960.     DH = XON character or 00h for none
  4961. --------S-1413-------------------------------
  4962. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  4963.     AH = 13h
  4964.     AL = character
  4965. Return: nothing
  4966. Note:    should not be called if it is unsafe to call DOS
  4967. SeeAlso: AH=15h
  4968. --------S-1413-------------------------------
  4969. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  4970.     AH = 13h
  4971.     DX = port number
  4972. Return: AH = status
  4973.         FFh port number invalid
  4974.         else
  4975.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  4976. SeeAlso: AH=17h"PC-MOS"
  4977. --------S-1414-------------------------------
  4978. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  4979.     AH = 14h
  4980.     AL = 01h enable watchdog
  4981.          00h disable watchdog
  4982.     DX = port number
  4983. Return: nothing
  4984. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  4985. --------S-1414-------------------------------
  4986. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  4987.     AH = 14h
  4988.     CX = number of characters in string
  4989.     DX = port number
  4990.     ES:BX -> string to be sent
  4991.     SI = timeout in timer ticks or 0000h for default
  4992. Return: AX = number of bytes actually sent
  4993.     ZF clear if successful
  4994.     ZF set on timeout
  4995. SeeAlso: AH=01h,AH=15h"PC-MOS"
  4996. --------S-1414-------------------------------
  4997. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  4998.     AH = 14h
  4999. Return: AX = number of boards installed
  5000. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  5001. --------S-1415-------------------------------
  5002. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  5003.     AH = 15h
  5004.     AL = character
  5005. Return: nothing
  5006. SeeAlso: AH=13h"FOSSIL"
  5007. --------S-1415-------------------------------
  5008. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  5009.     AH = 15h
  5010.     CX = size of buffer
  5011.     DX = port number
  5012.     ES:BX -> buffer for received characters
  5013.     SI = timeout in clock ticks or 0000h for default
  5014. Return: AX = number of characters actually read
  5015.     ZF set on timeout (no data available)
  5016. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  5017. --------S-1415-------------------------------
  5018. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  5019.     AH = 15h
  5020.     AL = new state (00h disabled, 01h enabled)
  5021. Return: AH = status
  5022.         00h successful
  5023.         80h error
  5024.         FFh error
  5025. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  5026. --------S-1416-------------------------------
  5027. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  5028.     AH = 16h
  5029.     AL = function
  5030.         00h = delete
  5031.         01h = add
  5032.     ES:DX -> routine to call
  5033. Return: AX = status
  5034.         0000h successful
  5035.         0001h unsuccessful
  5036. SeeAlso: AH=07h"FOSSIL"
  5037. --------S-1416-------------------------------
  5038. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  5039.     AH = 16h
  5040.     ES:BX -> calling driver's INT 14 entry point
  5041. Return: nothing
  5042. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5043.       operating system by The Software Link, Inc.
  5044. --------S-1416-------------------------------
  5045. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  5046.     AH = 16h
  5047.     AL = CCB command number (see #0268) (see also following entries)
  5048.     BL = byte 2
  5049.     BH = byte 3
  5050.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  5051.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5052. Return: AH = status
  5053.         00h successful
  5054.         80h error
  5055.         FFh error
  5056. SeeAlso: AX=1646h,AH=18h"Digiboard"
  5057.  
  5058. (Table 0268)
  5059. Values for Digiboard CCB command number:
  5060.  40h    Set Receive Mid Water Mark
  5061.  41h    Set Receive High Water Mark
  5062.  42h    Flush Receive Buffer
  5063.  43h    Flush Transmit Buffer
  5064.  44h    Transmit Pause
  5065.  45h    Transmit Resume
  5066.  46h    Set Interrupt to Host Mask
  5067.  47h    Set Baud, Data, Stop and Parity
  5068.  48h    Send Break
  5069.  49h    Set Modem Lines
  5070.  4Ah    Set Break Count
  5071.  4Bh    Set Handshake
  5072.  4Ch    Set Xon/Xoff Characters
  5073.  4Dh    Set Transmit Mid Water Mark
  5074.  4Eh    IRQ Polling Timer to Host
  5075.  4Fh    Buffer Set All
  5076.  50h    Port On
  5077.  51h    Port Off
  5078.  52h    Receive Pause
  5079.  53h    Special Character Interrupt
  5080.  54h    RS-422 Enable
  5081. --------S-141646-----------------------------
  5082. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  5083.     AX = 1646h
  5084.     BL = bits to set
  5085.     BH = bits to clear
  5086.     CL = byte 1
  5087.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5088. Return: AH = status
  5089.         00h successful
  5090.         80h error
  5091.         FFh error
  5092. SeeAlso: AH=16h"Digiboard",AX=1647h
  5093. --------S-141647-----------------------------
  5094. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  5095.     AX = 1647h
  5096.     BL = baud
  5097.     BH = datatype
  5098.     CL = byte 1
  5099.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5100. Return: AH = status
  5101.         00h successful
  5102.         80h error
  5103.         FFh error
  5104. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  5105. --------S-141649-----------------------------
  5106. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  5107.     AX = 1649h
  5108.     BL = bits to set
  5109.     BH = bits to clear
  5110.     CL = byte 1
  5111.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5112. Return: AH = status
  5113.         00h successful
  5114.         80h error
  5115.         FFh error
  5116. SeeAlso: AH=16h"Digiboard",AX=1647h
  5117. --------S-14164A-----------------------------
  5118. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  5119.     AX = 164Ah
  5120.     BL = break count
  5121.     CL = byte 1
  5122.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5123. Return: AH = status
  5124.         00h successful
  5125.         80h error
  5126.         FFh error
  5127. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  5128. --------S-14164B-----------------------------
  5129. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  5130.     AX = 164Bh
  5131.     BL = bits to set
  5132.     BH = bits to clear
  5133.     CL = byte 1
  5134.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5135. Return: AH = status
  5136.         00h successful
  5137.         80h error
  5138.         FFh error
  5139. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  5140. --------S-14164C-----------------------------
  5141. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  5142.     AX = 164Ch
  5143.     BL = XON character
  5144.     BH = XOFF character
  5145.     CL = byte 1
  5146.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5147. Return: AH = status
  5148.         00h successful
  5149.         80h error
  5150.         FFh error
  5151. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  5152. --------S-14164D-----------------------------
  5153. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  5154.     AX = 164Dh
  5155.     BX = new mid-water mark
  5156.     CL = byte 1
  5157.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5158. Return: AH = status
  5159.         00h successful
  5160.         80h error
  5161.         FFh error
  5162. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  5163. --------S-14164E-----------------------------
  5164. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  5165.     AX = 164Eh
  5166.     BL = ticks
  5167.     BH = ???
  5168.     CL = mode
  5169.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5170. Return: AH = status
  5171.         00h successful
  5172.         80h error
  5173.         FFh error
  5174. SeeAlso: AH=16h"Digiboard",AX=164Dh
  5175. --------S-14164F-----------------------------
  5176. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  5177.     AX = 164Fh
  5178.     BL = size
  5179.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5180. Return: AH = status
  5181.         00h successful
  5182.         80h error
  5183.         FFh error
  5184. SeeAlso: AH=16h"Digiboard",AX=164Dh
  5185. --------S-141653-----------------------------
  5186. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  5187.     AX = 1653h
  5188.     BL = enable/disable
  5189.     BH = special character
  5190.     CL = byte 1
  5191.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5192. Return: AH = status
  5193.         00h successful
  5194.         80h error
  5195.         FFh error
  5196. SeeAlso: AH=16h"Digiboard",AX=1646h
  5197. --------S-1417-------------------------------
  5198. INT 14 - FOSSIL - REBOOT SYSTEM
  5199.     AH = 17h
  5200.     AL = method
  5201.         00h = cold boot
  5202.         01h = warm boot
  5203. SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
  5204. --------S-1417-------------------------------
  5205. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  5206.     AH = 17h
  5207.     AL = new value for UART's modem control register
  5208.     DX = port number
  5209. Return: nothing
  5210. --------S-1418-------------------------------
  5211. INT 14 - FOSSIL - READ BLOCK
  5212.     AH = 18h
  5213.     CX = maximum number of characters to transfer
  5214.     DX = port number
  5215.     ES:DI -> user buffer
  5216. Return: AX = number of characters transferred
  5217. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  5218. --------S-1418-------------------------------
  5219. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  5220.     AH = 18h
  5221.     ES:BX -> 16-byte command string
  5222.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5223. Return: AH = status
  5224.         00h successful
  5225.         80h timeout
  5226.     AL = mailbox status
  5227.         00h no errors
  5228.         8Xh BIOS error
  5229.     ES:BX buffer filled in with mailbox string
  5230.     ZF clear if no errors
  5231.     ZF set if either status byte contains an error code
  5232. SeeAlso: AH=16h"Digiboard"
  5233. --------S-1418-------------------------------
  5234. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  5235.     AH = 18h
  5236.     DX = port number
  5237. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  5238.         driver
  5239. SeeAlso: AH=06h"PC-MOS"
  5240. --------S-1419-------------------------------
  5241. INT 14 - FOSSIL - WRITE BLOCK
  5242.     AH = 19h
  5243.     CX = maximum number of characters to transfer
  5244.     DX = port number
  5245.     ES:DI -> user buffer
  5246. Return: AX = number of characters transferred
  5247. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  5248. --------S-1419-------------------------------
  5249. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  5250.     AH = 19h
  5251.     BL = flag
  5252.         00h disable special character interrupt
  5253.         FFh enable interrupt
  5254.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5255. Return: AH = status
  5256.         00h successful
  5257.         FFh failed
  5258. SeeAlso: AH=1Ah"Digiboard"
  5259. --------S-1419-------------------------------
  5260. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  5261.     AH = 19h
  5262.     AL = what to flush
  5263.         bit 0: input buffer
  5264.         bit 1: output buffer
  5265.     DX = port number
  5266. Return: nothing
  5267. SeeAlso: AH=09h"PC-MOS"
  5268. --------S-141A-------------------------------
  5269. INT 14 - FOSSIL - BREAK BEGIN OR END
  5270.     AH = 1Ah
  5271.     AL = 00h stop sending 'break'
  5272.          01h start sending 'break'
  5273.     DX = port number
  5274. Return: nothing
  5275. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  5276. --------S-141A-------------------------------
  5277. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  5278.     AH = 1Ah
  5279.     BX = subfunction
  5280.         00h return pointer to special character flag byte
  5281.         01h return pointer to special character counter word
  5282.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5283. Return: ES:BX -> special character flag or counter
  5284. Notes:    flag is FFh if one or more special characters are in the receive
  5285.       buffer; it is 00h and the counter is invalid if no special characters
  5286.       are in the receive buffer
  5287.     counter (if valid) contains the number of characters in the receive
  5288.       buffer up to and including the last-received special character
  5289. --------S-141B-------------------------------
  5290. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  5291.     AH = 1Bh
  5292.     DX = port number
  5293.     CX = size of user buffer
  5294.     ES:DI -> user buffer for driver info (see #0269)
  5295. Return: AX = number of characters transferred
  5296.     CX = 3058h ("0X") (X00 FOSSIL only)
  5297.     DX = 2030h (" 0") (X00 FOSSIL only)
  5298.  
  5299. Format of FOSSIL driver info:
  5300. Offset    Size    Description    (Table 0269)
  5301.  00h    WORD    size of structure in bytes
  5302.  02h    BYTE    FOSSIL spec driver conforms to
  5303.  03h    BYTE    revision level of this specific driver
  5304.  04h    DWORD    pointer to ASCIZ identification string
  5305.  08h    WORD    size of the input buffer
  5306.  0Ah    WORD    number of bytes left in buffer
  5307.  0Ch    WORD    size of the output buffer
  5308.  0Eh    WORD    number of bytes left in buffer
  5309.  10h    BYTE    width of screen
  5310.  11h    BYTE    length of screen
  5311.  12h    BYTE    actual baud rate, computer to modem
  5312. --------S-141C-------------------------------
  5313. INT 14 - X00 FOSSIL - ACTIVATE PORT
  5314.     AH = 1Ch
  5315.     DX = port number
  5316. Return: AX = 1954h if successful
  5317.     BL = maximum function number supported (not including 7Eh and above)
  5318.     BH = revision of FOSSIL specification supported
  5319. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  5320.       with the PS/2 BIOS in a future release
  5321. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  5322. --------S-141D-------------------------------
  5323. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  5324.     AH = 1Dh
  5325.     DX = port number
  5326. Return: none
  5327. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  5328.       with the PS/2 BIOS in a future release
  5329.     ignored if the port was never activated with AH=04h or AH=1Ch
  5330. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  5331. --------S-141E-------------------------------
  5332. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  5333.     AH = 1Eh
  5334.     AL = break status
  5335.         00h if break
  5336.         01h if no break
  5337.     BH = parity (see #0270)
  5338.     BL = number of stop bits
  5339.         00h one stop bit
  5340.         01h two stop bits (1.5 if 5 bit word length)
  5341.     CH = word length (see #0271)
  5342.     CL = bps rate (see #0272)
  5343.     DX = port number
  5344. Return: AX = port status code (see #0230,#0231)
  5345. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  5346.     if the port was locked at X00 load time, the appropriate parameters are
  5347.       ignored
  5348. SeeAlso: AH=00h,AH=04h"SERIAL"
  5349.  
  5350. (Table 0270)
  5351. Values for X00 FOSSIL parity:
  5352.  00h    no parity
  5353.  01h    odd parity
  5354.  02h    even parity
  5355.  03h    stick parity odd
  5356.  04h    stick parity even
  5357. SeeAlso: #0233,#0271,#0272
  5358.  
  5359. (Table 0271)
  5360. Values for X00 FOSSIL word length:
  5361.  00h    5 bits
  5362.  01h    6 bits
  5363.  02h    7 bits
  5364.  03h    8 bits
  5365. SeeAlso: #0234,#0270,#0272
  5366.  
  5367. (Table 0272)
  5368. Values for X00 FOSSIL bps rate:
  5369.  00h    110
  5370.  01h    150
  5371.  02h    300
  5372.  03h    600
  5373.  04h    1200
  5374.  05h    2400
  5375.  06h    4800
  5376.  07h    9600
  5377.  08h    19200
  5378. SeeAlso: #0235,#0270,#0271
  5379. --------S-141E------------------------------------
  5380. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  5381.     AH = 1Eh
  5382.     CX = channel number (00h COM1, 01h COM2, ...)
  5383.     DS:BX -> buffer for communications parameters (see #0273)
  5384. Return: DS:BX buffer filled
  5385. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  5386.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  5387. SeeAlso: AH=20h"HUNTER"
  5388.  
  5389. Format of HUNTER 16 communications parameters:
  5390. Offset    Size    Description    (Table 0273)
  5391.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  5392.  01h    BYTE    port number (00h COM1, 01h COM2)
  5393.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  5394.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  5395.  03h    BYTE    data bits (01h seven, 02h eight)
  5396.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  5397.  05h    BYTE    stop bits (00h one, 01h two)
  5398.  06h    BYTE    handshake (see #0274)
  5399.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  5400.  08h    BYTE    Nulls after CR (0-20)
  5401.  09h    BYTE    LF (00h off, 01h on)
  5402.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  5403.                80h: Serig off
  5404.  0Bh    BYTE    echo (00h off, 01h on)
  5405.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  5406.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  5407.  0Eh  5 BYTEs    reserved
  5408.  
  5409. Bitfields for HUNTER 16 handshake:
  5410. Bit(s)    Description    (Table 0274)
  5411.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  5412.  2    DTR enabled
  5413.  4    CTS enabled
  5414.  5    DSR enabled
  5415.  6    DCD enabled
  5416. --------S-141F-------------------------------
  5417. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  5418.     AH = 1Fh
  5419.     DX = port number
  5420.     AL = direction
  5421.         00h read modem control register
  5422.         Return: BL = modem control register (see #0275)
  5423.             AH = status
  5424.         01h write modem control register
  5425.         BL = modem control register (see #0275)
  5426.         Return: AX = status
  5427. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  5428.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  5429. SeeAlso: AH=00h,AH=05h"SERIAL"
  5430.  
  5431. Bitfields for X00 FOSSIL modem control register:
  5432. Bit(s)    Description    (Table 0275)
  5433.  0    data terminal ready
  5434.  1    request to send
  5435.  2    OUT1
  5436.  3    OUT2 (interrupts) enabled
  5437.  4    LOOP
  5438.  5-7    reserved
  5439. --------S-1420-------------------------------
  5440. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  5441.     AH = 20h
  5442.     DX = port number
  5443. Return: AH = 00h if character was available
  5444.         AL = next character (removed from receive buffer)
  5445.     AX = FFFFh if no character available
  5446. SeeAlso: AH=0Ch,AH=21h"X00"
  5447. --------S-1420-------------------------------
  5448. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  5449.     AH = 20h
  5450.     AL = logical port (01h COM1, 02h COM2)
  5451.     DX = physical port number
  5452. Return: AX = status
  5453.         0000h successful
  5454.         FFFFh failed
  5455. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  5456. --------S-1420-------------------------------
  5457. INT 14 - MultiDOS Plus - INITIALIZE PORT
  5458.     AH = 20h
  5459.     AL = port parameters (see #0226 at AH=00h"SERIAL")
  5460.     DX = port number (0-3)
  5461. Return: AH = status
  5462.         00h successful
  5463.         41h no such port
  5464.         64h monitor mode already active
  5465. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  5466. --------S-1420-------------------------------
  5467. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  5468.     AH = 20h
  5469.     DX = port number
  5470. Return: AX = number of bytes in output buffer
  5471. SeeAlso: AH=0Ah"Digiboard"
  5472. --------S-1420------------------------------------
  5473. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  5474.     AH = 20h
  5475.     CX = channel number (00h COM1, 01h COM2, ...)
  5476.     DS:BX -> buffer with communications parameter (see #0273)
  5477. Return: AX = status
  5478.         0000h successful
  5479.         0001h invalid parameter
  5480. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  5481. --------S-1421-------------------------------
  5482. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  5483.     AH = 21h
  5484.     AL = character
  5485.     DX = port number
  5486. Return: nothing
  5487. Notes:    the given character is inserted at the end of the receive buffer as if
  5488.       it had just arrived from the serial port; all normal receive
  5489.       processing (XON/XOFF, ^C/^K) is performed on the character
  5490.     fully re-entrant
  5491. SeeAlso: AH=20h"X00"
  5492. --------S-1421-------------------------------
  5493. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  5494.     AH = 21h
  5495.     DX = physical port number
  5496. Return: AX = status
  5497.         0000h successful
  5498.         FFFFh failed
  5499. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  5500. --------S-1421-------------------------------
  5501. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  5502.     AH = 21h
  5503.     AL = character to send
  5504.     DX = port number
  5505. Return: AH = status (see #0276)
  5506. Note:    monitor mode must have been turned on with AH=24h before calling
  5507. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  5508.  
  5509. (Table 0276)
  5510. Values for MultiDOS Plus status:
  5511.  00h    successful
  5512.  39h    no DSR or CTS
  5513.  3Ch    no DSR
  5514.  3Bh    no CTS
  5515.  41h    no such port
  5516.  42h    monitor mode not active
  5517.  97h    timed out
  5518. --------S-1421-------------------------------
  5519. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  5520.     AH = 21h
  5521.     AL = char to send
  5522.     DX = port number
  5523.     SI = timeout in timer ticks (0000h = default)
  5524. Return: after character is sent or timeout expires
  5525. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5526.       operating system by The Software Link, Inc.
  5527. SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS"
  5528. --------S-1421------------------------------------
  5529. INT 14 - HUNTER 16 - EXTENDED CONTROL
  5530.     AH = 21h
  5531.     AL = command
  5532.         01h force transmission of buffer
  5533.         02h clear transmit buffer
  5534.         03h clear receive buffer
  5535.     DX = port (00h COM1, 01h COM2)
  5536. Return: AH = extended status
  5537. Desc:    executes the command on the selected port
  5538. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  5539. --------S-1422-------------------------------
  5540. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  5541.     AH = 22h
  5542.     AL = logical port (01h COM1, 02h COM2)
  5543. Return: AX = status (0000h successful)
  5544. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  5545. --------S-1422-------------------------------
  5546. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  5547.     AH = 22h
  5548.     DX = port number
  5549. Return: AH = status (see also AH=21h"MultiDOS")
  5550.         00h successful
  5551.         AL = character
  5552.         3Dh framing and parity error
  5553.         3Eh overrun error
  5554.         3Fh framing error
  5555.         40h parity error
  5556.         96h ring buffer overflow
  5557. Note:    if no character is available, this function waits until a character
  5558.       arrives or an implementation-dependent timeout elapses
  5559. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  5560. --------S-1422-------------------------------
  5561. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  5562.     AH = 22h
  5563.     DX = port number
  5564.     SI = timeout in timer ticks (0000h = default)
  5565. Return: AH = port status (see also #0230 at AH=03h)
  5566.         bit 7 = 1 indicates time-out
  5567.     AL = character received
  5568. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5569.       operating system by The Software Link, Inc.
  5570. SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS"
  5571. --------S-1422------------------------------------
  5572. INT 14 - HUNTER 16 - EXTENDED STATUS
  5573.     AH = 22h
  5574.     DX = port (00h COM1, 01h COM2)
  5575. Return: AH = extended status
  5576.     BX = number of characters in input buffer
  5577.     CX = number of characters in output buffer
  5578. Desc:    returns the most recent Extended Status code for the port
  5579. SeeAlso: AH=21h"HUNTER"
  5580. --------S-1423-------------------------------
  5581. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  5582.     AH = 23h
  5583.     AL = logical port (01h COM1, 02h COM2)
  5584.     DH = user ID
  5585.     DL = process ID (DH,DL both FFh for current task)
  5586. Return: AL = MW386 port mode (see #0277)
  5587.     CX = MW386 port number
  5588.     DH = owner's user ID
  5589.     DL = owner's task ID
  5590. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  5591.  
  5592. Bitfields for MW386 port mode:
  5593. Bit(s)    Description    (Table 0277)
  5594.  0    port is shared (spooler only)
  5595.  1    port is spooled instead of direct (spooler only)
  5596.  2    port is assigned as logical COM device, not in spooler
  5597.  3    port is free
  5598. --------S-1423-------------------------------
  5599. INT 14 - MultiDOS Plus - GET PORT STATUS
  5600.     AH = 23h
  5601.     DX = port number
  5602. Return: AH = line status (see #0230 at AH=03h)
  5603.     AL = modem status (see #0231 at AH=03h)
  5604. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  5605. --------S-1423-------------------------------
  5606. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  5607.     AH = 23h
  5608.     DX = port number
  5609.     BX = TCB segment/selector address of owner task
  5610. Return: nothing
  5611. SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS"
  5612. --------S-1423------------------------------------
  5613. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  5614.     AH = 23h
  5615.     BH = handshake line to set (00h RTS, 01h DTR)
  5616.     BL = new level (00h low, 01h high)
  5617. Return: nothing
  5618. Desc:    sets the handshake lines of COM1 to the desired level
  5619. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  5620. --------S-1424-------------------------------
  5621. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  5622.     AH = 24h
  5623.     CX = physical I/O port number
  5624.     DS:DX -> configuration table (see #0278)
  5625. Return: AH = 00h
  5626. Note:    invalid port numbers are merely ignored
  5627. SeeAlso: INT 17/AH=96h
  5628.  
  5629. Format of Alloy MW386 configuration table:
  5630. Offset    Size    Description    (Table 0278)
  5631.  00h    BYTE    baud rate (see #0279)
  5632.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  5633.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  5634.  03h    BYTE    stop bits (00h=1, 01h=2)
  5635.  04h    BYTE    receive flow control
  5636.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  5637.  05h    BYTE    transmit flow control (as for receive)
  5638.  
  5639. (Table 0279)
  5640. Values for Alloy MW386 baud rate:
  5641.  00h    38400
  5642.  01h    19200
  5643.  02h    9600
  5644.  03h    7200
  5645.  04h    4800
  5646.  05h    3600
  5647.  06h    2400
  5648.  07h    2000
  5649.  08h    1200
  5650.  09h    600
  5651.  0Ah    300
  5652.  0Bh    150
  5653.  0Ch    134.5
  5654. SeeAlso: #0235
  5655. --------S-1424-------------------------------
  5656. INT 14 - MultiDOS Plus - SET MONITOR MODE
  5657.     AH = 24h
  5658.     AL = port status storage
  5659.         00h single status for entire receive buffer
  5660.         01h separate status kept for each byte in receive buffer
  5661.     DX = port number
  5662. Return: AH = status
  5663.         00h successful
  5664.         3Ah invalid status storage specified
  5665.         41h no such port
  5666.         64h monitor mode already active
  5667. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  5668.       port
  5669. SeeAlso: AH=20h"MultiDOS",AH=25h
  5670. --------S-1424-------------------------------
  5671. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  5672.     AH = 24h
  5673. Return: ???
  5674. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5675.       operating system by The Software Link, Inc.
  5676. --------S-1424------------------------------------
  5677. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  5678.     AH = 24h
  5679.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  5680. Return: nothing
  5681. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  5682. --------S-1425-------------------------------
  5683. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  5684.     AH = 25h
  5685.     AL = function
  5686.         00h only clear buffers
  5687.         01h clear buffers and deactivate
  5688.     DX = port number
  5689. Return: AH = status
  5690.         00h successful
  5691.         3Ah invalid function
  5692.         41h no such port
  5693.         42h monitor mode not active
  5694. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  5695. --------S-1425------------------------------------
  5696. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  5697.     AH = 25h
  5698.     AL = new state of RS232 drivers (00h off, 01h on)
  5699. Return: nothing
  5700. Note:    this function can be used to save power by turning off the RS232
  5701.       drivers.  It can also be used to turn on the RS232 drivers before
  5702.       connecting to a remote system to avoid "garbage" while the drivers
  5703.       turn on.
  5704. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  5705. --------S-1426------------------------------------
  5706. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  5707.     AH = 26h
  5708.     AL = 00h enable RI power up
  5709.         else disable RI power up
  5710. Return: nothing
  5711. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  5712. --------S-1427-------------------------------
  5713. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  5714.     AH = 27h
  5715.     DX = port number
  5716. Return: AH = status
  5717.         00h successful
  5718.         41h no such port
  5719.         42h monitor mode not active
  5720.     AL = number of characters in receive buffer
  5721. --------S-1427------------------------------------
  5722. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  5723.     AH = 27h
  5724.     AL = number of extended protocols installed (since last call)
  5725. Return: AL = total number installed, including new ones
  5726. Desc:    Returns the number of extended communication protocols installed
  5727. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  5728. --------S-1428------------------------------------
  5729. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  5730.     AH = 28h
  5731.     AL = protocol handle
  5732.     DS:BX -> 8 character buffer for protocol name
  5733. Return: AH = status
  5734.         00h successful
  5735.         DS:BX buffer filled with the protocol name
  5736.         FFh failed
  5737. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  5738. --------S-1429------------------------------------
  5739. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  5740.     AH = 29h
  5741.     DS:BX -> buffer containing the protocol name
  5742. Return: AH = status
  5743.         00h successful
  5744.         AL = handle
  5745.         FFh failed
  5746. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  5747. --------S-142A------------------------------------
  5748. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  5749.     AH = 2Ah
  5750.     AL = protocol handle
  5751. Return: AH = status
  5752.         00h successful
  5753.         FFh failed
  5754.     AL = menu handle
  5755. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  5756. --------S-142B------------------------------------
  5757. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  5758.     AH = 2Bh
  5759.     AL = protocol handle
  5760.     DS:BX -> buffer for extended protocol parameters
  5761. Return: AH = status
  5762.         00h successful
  5763.         DS:BX buffer filled with extended parameters
  5764.         FFh failed
  5765. SeeAlso: AH=2Ah"HUNTER"
  5766. --------S-142C00----------------------------------
  5767. INT 14 - HUNTER 16 - GET DTR
  5768.     AX = 2C00h
  5769. Return: AH = 00h
  5770.     BL = current state
  5771.         00h     normal DTR operation
  5772.         else DTR is forced high
  5773. Desc:    Indicates whether the DTR signal on COM1 is forced high
  5774. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  5775.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  5776. SeeAlso: AH=2Ch"SET DTR"
  5777. --------S-142C------------------------------------
  5778. INT 14 - HUNTER 16 - SET DTR
  5779.     AH = 2Ch
  5780.     AL nonzero
  5781.     BL = new state
  5782.         00h     normal operation
  5783.         else force DTR high
  5784. Return: AH = 00h
  5785. Desc:    determine whether the DTR signal on COM1 should be forced high
  5786. SeeAlso: AX=2C00h
  5787. --------N-1436-------------------------------
  5788. INT 14 - ComShare - INSTALLATION CHECK
  5789.     AH = 36h
  5790. Return: AX = 4353h ('CS') if installed
  5791.         BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
  5792.         CX reserved for future use
  5793.         WORD DX:[0100h] = ComShare version number
  5794. Program: The ComShare System is a modem-sharing program for NetBIOS and
  5795.       NetWare-based networks by NashaKala Corporation
  5796. Note:    ComShare supports the standard BIOS INT 14h calls with a slight
  5797.       change in the interpretation of speed values
  5798.       (see #0235 at AH=04h"SERIAL")
  5799. SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh
  5800. --------t-144000-----------------------------
  5801. INT 14 - I1541 - INSTALLATION CHECK
  5802.     AX = 4000h
  5803. Return: AX = 1541h if installed
  5804.         BH = I1541 major version (BCD)
  5805.         BL = I1541 minor version (BCD)
  5806.         CX = 0000h
  5807. --------t-144001-----------------------------
  5808. INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED
  5809.     AX = 4001h
  5810. Return: CF clear if connected
  5811.         BL = LPT number where 1541 cable is connected (1..3)
  5812.     CF set if cable not connected
  5813. Desc:    scan all the LPT ports searching for the adapter cable
  5814. SeeAlso: AX=4000h
  5815. --------t-144002-----------------------------
  5816. INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT
  5817.     AX = 4002h
  5818.     BL = LPT number (1..3)
  5819. Return: CF clear if successful
  5820.     CF set otherwise
  5821. Desc:    force the input output routines to work on the cable placed on LPT BL
  5822. SeeAlso: AX=4001h
  5823. --------t-144003-----------------------------
  5824. INT 14 - I1541 - RESET ALL DEVICES
  5825.     AX = 4003h
  5826. Return: nothing
  5827. Desc:    send a reset pulse of 100ms to all CBM devices
  5828. Note:    it is necessary to wait about 2 seconds after reset before executing
  5829.       other    instructions
  5830. SeeAlso: AX=4000h,AX=4004h
  5831. --------t-144004-----------------------------
  5832. INT 14 - I1541 - SEND LISTEN SIGNAL
  5833.     AX = 4004h
  5834.     BH = device number (0..15)
  5835. Return: CF clear if successful
  5836.     CF set on error
  5837.         AL = error number (see #0280)
  5838. SeeAlso: AX=4005h,AX=4006h
  5839.  
  5840. (Table 0280)
  5841. Values for I1541 error number:
  5842.  00h    device not present
  5843.  01h    listener not ready
  5844.  02h    missing EOI time-out
  5845.  03h    EOI not completed
  5846.  04h    data not released
  5847.  05h    frame error
  5848. --------t-144005-----------------------------
  5849. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN
  5850.     AX = 4005h
  5851.     BL = channel number and mode (see #0281)
  5852. Return: CF clear if successful
  5853.     CF set on error
  5854.         AL = error number (see #0280)
  5855. SeeAlso: AX=4004h,AX=4006h
  5856.  
  5857. Bitfields for I1541 channel number and mode:
  5858. Bit(s)    Description    (Table 0281)
  5859.  7-4    mode
  5860.     0110 read/write
  5861.     1110 close channel
  5862.     1111 open channel
  5863.  3-0    channel number
  5864. --------t-144006-----------------------------
  5865. INT 14 - I1541 - SEND UNLISTEN SIGNAL
  5866.     AX = 4006h
  5867. Return: CF clear if successful
  5868.     CF set on error
  5869.         AL = error number (see #0280)
  5870. SeeAlso: AX=4004h,AX=4005h
  5871. --------t-144007-----------------------------
  5872. INT 14 - I1541 - SEND TALK SIGNAL
  5873.     AX = 4007h
  5874.     BH = device number (0-15)
  5875. Return: CF clear if successful
  5876.     CF set on error
  5877.         AL = error number (see #0280)
  5878. SeeAlso: AX=4008h,AX=4009h
  5879. --------t-144008-----------------------------
  5880. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK
  5881.     AX = 4008h
  5882.     BL = channel number and mode (see #0281)
  5883. Return: CF clear if successful
  5884.     CF set on error
  5885.         AL = error number (see also #0280)
  5886.         40h turn around time-out
  5887. SeeAlso: AX=4007h,AX=4009h
  5888. --------t-144009-----------------------------
  5889. INT 14 - I1541 - SEND UNTALK SIGNAL
  5890.     AX = 4009h
  5891. Return: CF clear if successful
  5892.     CF set on error
  5893.        AL = error number (see #0280)
  5894. SeeAlso: AX=4007h,AX=4008h
  5895. --------t-14400A-----------------------------
  5896. INT 14 - I1541 - SEND A BYTE TO A DEVICE
  5897.     AX = 400Ah
  5898.     BL = byte to send
  5899.     CL = last-byte flag
  5900.         00h more bytes follow
  5901.         01h this is the last byte to be sent
  5902. Return: CF clear if successful
  5903.     CF set on error
  5904.         AL = error number (see #0280)
  5905. SeeAlso: AX=4000h,AX=400Bh
  5906. --------t-14400B-----------------------------
  5907. INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE
  5908.     AX = 400Bh
  5909. Return: CF clear if successful
  5910.         AL = byte received
  5911.         CL = last-byte flag
  5912.         00h more bytes to follow
  5913.         01h received byte is the last
  5914.     CF set on error
  5915.         AL = error number
  5916.         80h EOI response required
  5917.         81h talker not ready
  5918.         82h clock not set
  5919.         83h clock not released
  5920.         CL = 00h
  5921. SeeAlso: AX=4000h,AX=400Ah
  5922. --------t-14400C-----------------------------
  5923. INT 14 - I1541 - WAIT
  5924.     AX = 400Ch
  5925.     CX = number of 838ns microticks to wait (0000h means 65536, ~55ms)
  5926. Return: after wait period elapses
  5927. SeeAlso: AX=4000h,AX=400Dh
  5928. --------t-14400D-----------------------------
  5929. INT 14 - I1541 - LONGWAIT
  5930.     AX = 400Dh
  5931.     DX:CX = number of 838ns microticks to wait
  5932.          (0000h:0000h means 4294967296, about one hour)
  5933. Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180
  5934. SeeAlso: AX=4000h,AX=400Ch
  5935. --------t-14400E-----------------------------
  5936. INT 14 - I1541 - GET INFO
  5937.     AX = 400Eh
  5938. Return: AX = LPT port I/O address in use (0000h if no cable in use)
  5939.     BL = LPT number (1..3) in use (00h if no cable in use)
  5940.     CF set if the cable is auto-detectable
  5941.     CF clear if cable could not be auto-detected or is not present
  5942. SeeAlso: AX=4000h
  5943. --------S-1456-------------------------------
  5944. INT 14 U - BWCOM14 - INSTALLATION CHECK
  5945.     AH = 56h
  5946. Return: CX = 0001h if installed
  5947. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  5948.       connected to the serial port) distributed as part of the
  5949.       Beame&Whiteside BW-NFS package
  5950. SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
  5951. --------S-1457-------------------------------
  5952. INT 14 U - BWCOM14 - INITIALIZE
  5953.     AH = 57h
  5954.     DL = port number
  5955. Return: AL = initialization status (00h successful, 01h already initialized)
  5956.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  5957. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  5958.       port will be handled by BWCOM14 until AH=58h is called
  5959. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  5960. --------S-1458-------------------------------
  5961. INT 14 U - BWCOM14 - SHUTDOWN
  5962.     AH = 58h
  5963. Return: CX = status (0001h successful, 0002h not initialized)
  5964. Note:    after this call, BWCOM14 will no longer redirect the COM port
  5965. SeeAlso: AH=56h,AH=57h
  5966. --------N-146F--BXFFFE-----------------------
  5967. INT 14 U - Connection Manager - ???
  5968.     AH = 6Fh
  5969.     BX = FFFEh
  5970.     ???
  5971. Return: ???
  5972. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5973.       serial ports over an IPX or NetBIOS-based network
  5974. --------N-146F--BXFFFF-----------------------
  5975. INT 14 - Connection Manager - INSTALLATION CHECK
  5976.     AH = 6Fh
  5977.     BX = FFFFh
  5978. Return: DX:BX -> Connection Manager Communication Table if installed
  5979.     BX = FFFFh if not installed
  5980. SeeAlso: AH=0Dh/DX=FFFFh
  5981. --------S-146F00-----------------------------
  5982. INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
  5983.     AX = 6F00h
  5984.     BX <> 4850h (usually set to 0000h for simplicity)
  5985. Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
  5986.     AX destroyed
  5987. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  5988. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
  5989. SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
  5990. --------S-146F01-----------------------------
  5991. INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
  5992.     AX = 6F01h
  5993.     BX = port attributes (see #0282)
  5994.     DX = port number (0-3)
  5995. Return: AH = line status (see #0230)
  5996.     AL = modem status (see #0231)
  5997. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  5998. SeeAlso: AX=6F00h
  5999.  
  6000. Bitfields for HP Vectra Extended BIOS serial port attributes:
  6001. Bit(s)    Description    (Table 0282)
  6002.  8-5    data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
  6003.  4-3    parity
  6004.     00 none
  6005.     01 odd
  6006.     10 none
  6007.     11 even
  6008.  2    stop bits (0 = one, 1 = two)
  6009.  1-0    bits per character
  6010.     10 seven-bit characters
  6011.     11 eight-bit characters
  6012.     0x undefined
  6013. --------S-146F02-----------------------------
  6014. INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
  6015.     AX = 6F02h
  6016.     CX = number of characters in buffer
  6017.     DX = port number (0-3)
  6018.     ES:DI -> buffer containing characters
  6019. Return: AH = line status (see #0230)
  6020.     AL = modem status (see #0231)
  6021.     CX = number of bytes actually sent
  6022.     ES:DI -> next byte to be transferred (unchanged if all bytes sent)
  6023. Desc:    send characters from the specified buffer until all characters have
  6024.       been sent or an error/timeout is encountered
  6025. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  6026. SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
  6027. --------S-146F03-----------------------------
  6028. INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
  6029.     AX = 6F03h
  6030.     CX = size of buffer
  6031.     DX = port number (0-3)
  6032.     ES:DI -> buffer for received characters
  6033. Return: AH = line status (see #0230)
  6034.     ---on error (AH bit 7 set)---
  6035.        AL = 00h
  6036.        ES:DI -> next byte to be transferred
  6037.     ---if successful---
  6038.        AL = last byte read
  6039.        ES:DI unchanged
  6040.     CX = number of bytes read
  6041. Desc:    read characters into the specified buffer until the buffer is filled
  6042.       or a timeout occurs
  6043. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  6044.     polls the Data Set Ready modem status and Data Ready line status bits
  6045.       to determine when characters are available
  6046. SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
  6047. --------S-146F04-----------------------------
  6048. INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
  6049.     AX = 6F04h
  6050.     BL = lowest termination character
  6051.     BH = highest termination character
  6052.     CX = size of buffer
  6053.     DX = port number (0-3)
  6054.     ES:DI -> buffer for received characters
  6055. Return: AH = line status (see #0230)
  6056.     ---on error (AH bit 7 set)---
  6057.        AL = 00h
  6058.        ES:DI -> next byte to be transferred
  6059.     ---if successful---
  6060.        AL = last byte read
  6061.        ES:DI unchanged
  6062.     CX = number of bytes read
  6063. Desc:    read characters into the specified buffer until the buffer is filled,
  6064.       a character in the specified range is received, or a timeout occurs
  6065. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  6066.     polls the Data Set Ready modem status and Data Ready line status bits
  6067.       to determine when characters are available
  6068. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
  6069. --------U-147000-----------------------------
  6070. INT 14 - NEWCOM - INSTALLATION CHECK
  6071.     AX = 7000h
  6072. Return: AX = 4E43h ('NC') if installed
  6073.     BX = 4F4Dh ('OM') if installed
  6074.         CH = major version number
  6075.         CL = minor version number
  6076.         DH = patch level
  6077.         DL = language (currently: 00h English, 01h French)
  6078. Program: Newcom is a DOS commandline-enhancer by kilobug@kali.isicom.fr
  6079. SeeAlso: INT 2F/AX=D44Dh
  6080. --------S-147E-------------------------------
  6081. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  6082.     AH = 7Eh
  6083.     AL = code assigned to external application (80h-BFh)
  6084.         80h reserved for communications FOSSIL
  6085.         81h video FOSSIL
  6086.         82h reserved for keyboard FOSSIL
  6087.         83h reserved for system FOSSIL
  6088.     ES:DX -> entry point
  6089. Return: AX = 1954h
  6090.     BL = code assigned to application (same as input AL)
  6091.     DH = status
  6092.         00h failed
  6093.         01h successful
  6094. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  6095. --------S-147F-------------------------------
  6096. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  6097.     AH = 7Fh
  6098.     AL = code assigned to external application
  6099.     ES:DX -> entry point
  6100. Return: AX = 1954h
  6101.     BL = code assigned to application (same as input AL)
  6102.     DH = status
  6103.         00h failed
  6104.         01h successful
  6105. SeeAlso: AH=7Eh
  6106. --------S-1480-------------------------------
  6107. INT 14 - COMMUNICATIONS FOSSIL
  6108.     AH = 80h
  6109. SeeAlso: AH=7Eh
  6110. --------S-1480-------------------------------
  6111. INT 14 - COURIERS.COM - INSTALLATION CHECK
  6112.     AH = 80h
  6113. Return: AH = E8h if loaded
  6114. Program: COURIERS is a TSR utility by PC Magazine
  6115. --------S-148000-----------------------------
  6116. INT 14 - ARTICOM - INSTALLATION CHECK
  6117.     AX = 8000h
  6118. Return: AL = FFh if installed
  6119.         BH = major version
  6120.         BL = minor version
  6121. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  6122.       works on top of NetBIOS and allows modem/serial-port sharing by
  6123.       programs using INT 14 for serial I/O.
  6124. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  6125.       drivers
  6126. SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL"
  6127. SeeAlso: AX=8001h,AX=8002h
  6128. --------S-148000-----------------------------
  6129. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  6130.     AX = 8000h
  6131.     DX = port number
  6132. Return: AX = code for last error (see #0283)
  6133.     BX = number of characters in output buffer
  6134.     CX = nubmer of characters in input buffer
  6135.     DX = state flag (see #0284)
  6136. Program: COMM-DRV is a universal serial communications driver by Willies'
  6137.       Computer Software Company, which supports standard INT 14 and
  6138.       FOSSIL calls as well as its own interfaces
  6139. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  6140.  
  6141. (Table 0283)
  6142. Values for COMM-DRV error code:
  6143.  00h    no error
  6144.  01h    buffer not set or attempted to change buffer for active port
  6145.  02h    port not active
  6146.  03h    transmit buffer full
  6147.  04h    receive buffer full
  6148.  05h    syntax error
  6149.  06h    invalid buffer size
  6150.  07h    invalid port
  6151.  08h    handler changed
  6152.  09h    invalid baud rate
  6153.  0Ah    invalid parity setting
  6154.  0Bh    invalid data length
  6155.  0Ch    invalid number of stop bits
  6156.  0Dh    invalid protocol number
  6157.  0Eh    IRQ changed
  6158.  0Fh    port changged
  6159.  10h    invalid threshold setting
  6160.  11h    invalid IRQ number
  6161.  12h    interrupts not enabled
  6162.  13h    invalid break syntax
  6163.  14h    fatal error
  6164.  15h    CTS error
  6165.  16h    invalid RS232 I/O port address
  6166.  17h    environment variable not set
  6167.  18h    error on IOCTL call
  6168.  19h    error during atexit cleanup
  6169.  1Ah    error mapping for direct calls
  6170.  1Bh    error opening device
  6171.  1Ch    unable to allocate memory
  6172.  1Dh    error on external micro card
  6173.  1Eh    card changed error
  6174.  1Fh    card type error
  6175.  20h    not supported
  6176.  21h    parent port error
  6177.  22h    card command buffer full
  6178.  23h    no subdevice for this port
  6179.  24h    unknown error
  6180.  25h    external card busy
  6181.  26h    no more timers available
  6182.  27h    INT 14 vector changed
  6183.  28h    INT 08 vector changed
  6184.  29h    DPMI error
  6185.  2Ah    TSR buffer too small (or nonexistent)
  6186.  2Bh    out of asynchronous resources
  6187.  2Ch    out of timer resources
  6188.  2Dh    out of "other" timer resources
  6189.  2Eh    file I/O error
  6190.  2Fh    hardware memory > 64K
  6191.  
  6192. Bitfields for state flag :
  6193. Bit(s)    Description    (Table 0284)
  6194.  0    port is active
  6195.  1    output throttled (XOFF received, or DSR or CTS reset)
  6196.  2    input throttled (XOFF sent, or DTR or RTS reset)
  6197. --------S-148001-----------------------------
  6198. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  6199.     AX = 8001h
  6200. Return: AX = error code, if error (see #0286)
  6201. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  6202. Index:    uninstall;ARTICOM
  6203. --------S-148001-----------------------------
  6204. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  6205.     AX = 8001h
  6206.     DX = port number
  6207. Return: BX:DI -> Port Control Block (see #0293)
  6208. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  6209. --------S-148002-----------------------------
  6210. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  6211.     AX = 8002h
  6212.     ES:DI -> buffer for redirector status structure (see #0285)
  6213. Return: AX = error code, if error (see #0286)
  6214. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  6215.  
  6216. Format of ARTICOM redirector status:
  6217. Offset    Size    Description    (Table 0285)
  6218.  00h    WORD    redirector major and minor version numbers
  6219.  02h    WORD    redirectable ports found
  6220.  04h    WORD    redirectable ports + local ports found
  6221.  06h    WORD    redirector internal buffer size
  6222.  08h    WORD    maximum servers maintained
  6223.  0Ah    WORD    number of adapters found
  6224. --------S-148002-----------------------------
  6225. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  6226.     AX = 8002h
  6227.     DX = port number
  6228. Return: AH bit 7 set on error
  6229.     AH bit 7 clear if successful
  6230.         BX:DI -> Port Control Block (see #0293) (modifyable portion only)
  6231. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  6232. --------S-148003-----------------------------
  6233. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  6234.     AX = 8003h
  6235.     CX = error number to translate (see #0286)
  6236. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  6237. SeeAlso: AX=8000h
  6238.  
  6239. (Table 0286)
  6240. Values for ARTICOM error codes:
  6241.  00h    "No error"
  6242.  01h    "An invalid port number was specified"
  6243.  02h    "Port is already redirected"
  6244.  03h    "Too many ports redirected"
  6245.  04h    "Cannot locate the server"
  6246.  05h    "Server is busy"
  6247.  06h    "Access denied"
  6248.  07h    "Resource in use"
  6249.  08h    "Resource in use - request queued"
  6250.  09h    "No such resource"
  6251.  0Ah    "Invalid username/password pair"
  6252.  0Bh    "Noncompatible version number"
  6253.  0Ch    "Can't remove from memory"
  6254.  0Dh    "Bad NETBIOS adapter number"
  6255.  0Eh    "No more entries in list"
  6256.  0Fh    "Resource is not available at this time"
  6257.  10h    "Invalid value to INT 14 call"
  6258. --------S-148003-----------------------------
  6259. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  6260.     AX = 8003h
  6261.     DX = port number
  6262. Return: AX = number of characters in input buffer
  6263.     BX = input buffer size
  6264.     CX = number of characters in output buffer
  6265.     DX = output buffer size
  6266. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  6267. --------S-148004-----------------------------
  6268. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  6269.     AX = 8004h
  6270.     DX = port to redirect (COM1=0, COM2=1, ...)
  6271.     CH = attach type
  6272.     CL = adapter to use for attach, 0FFh to search all
  6273.     ES:DI -> attachment structure (see #0287)
  6274. Return: AX = error code, if error (see #0286)
  6275. Note:    The wildcard '*' is supported in the server and resource fields.  If
  6276.       wild cards are used then the first matching available server is
  6277.       attached.
  6278. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  6279.  
  6280. Format of ARTICOM attachment structure:
  6281. Offset    Size    Description    (Table 0287)
  6282.  00h 16 BYTEs    server to look for attach
  6283.  10h 16 BYTEs    attach to resource name
  6284.  20h 16 BYTEs    username for attach
  6285.  30h 16 BYTEs    password for username or resource
  6286.  40h    BYTE    attach type
  6287.         00h normal
  6288.         01h queue if resource is in use (not yet supported in v1.00)
  6289. --------S-148005-----------------------------
  6290. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  6291.     AX = 8005h
  6292.     DX = port to detach (COM1=0, COM2=1, ...)
  6293. Return: AX = error code, if error (see #0286)
  6294. Note:    only a previously attached resource can be detached
  6295. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  6296. --------S-148006-----------------------------
  6297. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  6298.     AX = 8006h
  6299.     BX = remote port (COM1=0, COM2=1, ...)
  6300.     CL = adapter number, FFh to try all adapters
  6301.     ES:DI -> resource information structure (see #0288)
  6302.     DS:SI -> 16 byte server name. See note.
  6303. Return: AX = error code, if error (see #0286)
  6304.     BX = next remote port, recall to get next resource info
  6305. Note:    Wild cards supported in both the resource field and server name
  6306.       string DS:SI. If wild cards used then first matching available
  6307.       resource information is searched. Set the resource field to FFh to
  6308.       return all resources.
  6309. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  6310.  
  6311. Format of ARTICOM resource information structure:
  6312. Offset    Size    Description    (Table 0288)
  6313.  00h    BYTE    00h = free, else used
  6314.  01h 16 BYTEs    resource name
  6315.  11h 16 BYTEs    username of resource user
  6316.  21h    WORD    amount of time used
  6317.  23h    WORD    amount of time remaining
  6318.  53h 48 BYTEs    description of resource
  6319.  93h 64 BYTEs    initialization string for modem
  6320.  B3h 32 BYTEs    dial string for modem
  6321.  D3h 32 BYTEs    hang-up string for modem
  6322. --------S-148007-----------------------------
  6323. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  6324.     AX = 8007h
  6325.     DX = port index (COM1=0, COM2=1, ...)
  6326.     ES:DI -> buffer for port information structure (see #0289)
  6327. Return: CF clear if redirection info returned and port is redirected
  6328.     CF set if not a redirected port
  6329.     AX = error code, if error (see #0286)
  6330. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  6331.  
  6332. Format of ARTICOM port information structure:
  6333. Offset    Size    Description    (Table 0289)
  6334.  00h 16 BYTEs    server name resource is on
  6335.  10h    BYTE    adapter number server is on
  6336.  11h 16 BYTEs    resource name
  6337.  21h    WORD    remote port index, use to get additional information
  6338.  23h    WORD    buffer size
  6339.  25h    WORD    baud rate (see #0290)
  6340.  26h    BYTE    modem status register
  6341.  27h    BYTE    modem control register
  6342.  28h    BYTE    line status register
  6343.  29h    BYTE    line control register
  6344.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  6345.  2Bh    WORD    send timeout in ticks
  6346.  2Dh    WORD    receive timeout in ticks
  6347.  2Fh    WORD    time used on remote port
  6348.  31h    WORD    time left before timeout
  6349.  33h    BYTE    if server changes allowed?
  6350.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  6351.  
  6352. (Table 0290)
  6353. Values for ARTICOM baud rate:
  6354.  00h    110
  6355.  01h    150
  6356.  02h    300
  6357.  03h    600
  6358.  04h    1200
  6359.  05h    2400
  6360.  06h    4800
  6361.  07h    9600
  6362.  08h    19200
  6363.  09h    38400
  6364.  0Ah    57600
  6365.  0Bh    115200
  6366.  0Ch    134.5
  6367.  0Dh    1800
  6368.  0Eh    2000
  6369.  0Fh    3600
  6370.  10h    7200
  6371. SeeAlso: #0235
  6372. --------S-148008-----------------------------
  6373. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  6374.     AX = 8008h
  6375.     BX = server index (0,1,...)
  6376.     ES:DI -> server name structure (see #0291)
  6377. Return: AX = error code, if error (see #0286)
  6378.     BX = next remote port, repeat call to get next available server
  6379. Note:    the wildcard '*' is supported in the server name field.     Set the
  6380.       server name to FFh to search for all servers.
  6381. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  6382.  
  6383. Format of ARTICOM server name structure:
  6384. Offset     Size      Description    (Table 0291)
  6385.   00h 16 BYTEs      (call) ASCIZ server name
  6386.   10h     BYTE      (ret) the adapter server is found
  6387. --------S-148009-----------------------------
  6388. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  6389.     AX = 8009h
  6390.     BX = send timeout in ticks
  6391.     CX = receive timeout in ticks
  6392.     DX = port index (COM1=0, COM2=1, ...)
  6393. Return: nothing
  6394. SeeAlso: AX=8000h,AX=800Ah
  6395. --------S-14800A-----------------------------
  6396. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  6397.     AX = 800Ah
  6398.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  6399.     DX = port index (COM1=0, COM2=1, ...)
  6400. Return: AX = error code, if error (see #0286)
  6401. Note:    for attached ports only!
  6402. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  6403. --------S-148025-----------------------------
  6404. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  6405.     AX = 8025h
  6406.     DS:DX -> address of trap function (see #0292) to call on read/write
  6407. Return: nothing
  6408. Note:    setting the vector to a user function allows the redirector's activity
  6409.       to be monitored.
  6410. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  6411.  
  6412. (Table 0292)
  6413. Values ARTICOM trap function is called with:
  6414.     AH = operation
  6415.         80h reading character
  6416.         81h writing character
  6417.     AL = character
  6418. Return: AX must be preserved
  6419.     far JUMP to old trap function (see AX=8035h)
  6420. --------S-148035-----------------------------
  6421. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  6422.     AX = 8035h
  6423. Return: ES:BX -> address of current send/receive routine
  6424. Note:    this function returns the address of the routine which is called
  6425.       inside A-REDIR.EXE each time a character is received or sent on the
  6426.       active COM port.
  6427. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  6428. --------S-1481-------------------------------
  6429. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  6430.     AH = 81h
  6431.     AL = port number (1-4)
  6432. Return: AH = status
  6433.         00h port available
  6434.         01h port exists but already in use
  6435.         02h port nonexistent
  6436. Program: COURIERS is a TSR utility by PC Magazine
  6437. SeeAlso: AH=83h,AH=8Dh
  6438. --------S-1481-------------------------------
  6439. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  6440.     AH = 81h
  6441.     BX:DI -> port control block (see #0293)
  6442.     DX = port number
  6443. Return: AH = line status register (see #0230)
  6444.         error if bit 7 set
  6445.     AL = modem status register (see #0231)
  6446. Program: COMM-DRV is a universal serial communications driver by Willies'
  6447.       Computer Software Company, which supports standard INT 14 and
  6448.       FOSSIL calls as well as its own interfaces
  6449. Note:    AX=8001h should be called first to fill in the port control block
  6450. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  6451.  
  6452. Format of COMM-DRV port control block:
  6453. Offset    Type    Description    (Table 0293)
  6454.  00h    WORD    port IO address
  6455.  02h    WORD    port IRQ
  6456.  04h    WORD    baud rate
  6457.  06h    WORD    parity
  6458.  08h    WORD    data bits
  6459.  0Ah    WORD    stop bits
  6460.  0Ch    WORD    break status (0000h off)
  6461.  0Eh    WORD    flow control protocol
  6462.  10h    BYTE    input block
  6463.  11h    BYTE    output block
  6464.  12h    WORD    low threshold
  6465.  14h    WORD    high threshold
  6466.  16h    WORD    segment of buffer
  6467.  18h    WORD    offset of buffer
  6468.  1Ah    WORD    input buffer length
  6469.  1Ch    WORD    output buffer length
  6470.  1Eh    BYTE    auxiliary address
  6471.  1Fh    BYTE    spare
  6472.  20h  4 WORDs    spares
  6473. --------V-148100-----------------------------
  6474. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  6475.     AX = 8100h
  6476.     ES:DI -> buffer for VFOSSIL information (see #0294)
  6477. Return: AX = 1954h if installed
  6478. SeeAlso: AH=7Eh,AX=8101h
  6479.  
  6480. Format of VFOSSIL information:
  6481. Offset    Size    Description    (Table 0294)
  6482.  00h    WORD    size of information in bytes, including this field
  6483.  02h    WORD    VFOSSIL major version
  6484.  04h    WORD    VFOSSIL revision level
  6485.  06h    WORD    highest VFOSSIL application function supported
  6486. --------V-148101-----------------------------
  6487. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  6488.     AX = 8101h
  6489.     ES:DI -> buffer for application function table (see #0295)
  6490.     CX = length of buffer in bytes
  6491. Return: AX = 1954h if installed
  6492.         BH = highest VFOSSIL application function supported
  6493. Note:    the number of initialized pointers in the application function table
  6494.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  6495.       will be initialized
  6496. SeeAlso: AX=8102h
  6497.  
  6498. Format of VFOSSIL application function table:
  6499. Offset    Size    Description    (Table 0295)
  6500.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0300)
  6501.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0301)
  6502.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0302)
  6503.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0303)
  6504.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0304)
  6505.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0305)
  6506.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  6507.           (see #0306)
  6508.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0307)
  6509.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0308)
  6510.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0309)
  6511.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0310)
  6512.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0311)
  6513.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  6514.           (see #0312)
  6515.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  6516.           (see #0313)
  6517.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  6518.           (see #0314)
  6519.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  6520.           (see #0315)
  6521.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  6522.           (see #0316)
  6523.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  6524.           (see #0317)
  6525.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  6526.           (see #0318)
  6527.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  6528.           (see #0319)
  6529.  
  6530. Format of VFOSSIL video mode data structure:
  6531. Offset    Size    Description    (Table 0296)
  6532.  00h    WORD    length of structure including this field
  6533.  02h    BYTE    mode characteristics
  6534.         bit 0: clear if MDA, set otherwise
  6535.         bit 1: graphics mode
  6536.         bit 2: color disabled (black-and-white)
  6537.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  6538.  04h    WORD    number of text columns
  6539.  06h    WORD    number of text rows
  6540.  08h    WORD    reserved
  6541.  0Ah    WORD    reserved
  6542.  0Ch    DWORD    reserved
  6543. SeeAlso: #0300,#0301
  6544.  
  6545. Format of VFOSSIL video configuration data:
  6546. Offset    Size    Description    (Table 0297)
  6547.  00h    WORD    structure length including this field
  6548.  02h    WORD    adapter type
  6549.         00h monochrome/printer
  6550.         01h CGA
  6551.         02h EGA
  6552.         03h VGA
  6553.         07h 8514/A
  6554.  04h    WORD    display type
  6555.         00h monochrome
  6556.         01h color
  6557.         02h enhanced color
  6558.         09h 8514
  6559.  06h    DWORD    adapter memory size
  6560. SeeAlso: #0302
  6561.  
  6562. Format of VFOSSIL cursor type record:
  6563. Offset    Size    Description    (Table 0298)
  6564.  00h    WORD    cursor start line
  6565.  02h    WORD    cursor end line
  6566.  04h    WORD    cursor width (always 01h)
  6567.  06h    WORD    cursor attribute (FFFFh = hidden)
  6568.  
  6569. (Table 0299)
  6570. Values for VFOSSIL error code:
  6571.  0000h    successful
  6572.  0074h    internal VIO failure
  6573.  0163h    unsupported mode
  6574.  0166h    invalid row value
  6575.  0167h    invalid column value
  6576.  017Eh    buffer too small
  6577.  01A5h    invalid VIO parameter
  6578.  01B4h    invalid VIO handle
  6579.  
  6580. (Table 0300)
  6581. Call VioGetMode with:
  6582.     STACK:    WORD    VIO handle (must be 00h)
  6583.         DWORD    pointer to video mode data structure (see #0296)
  6584. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0299)
  6585. SeeAlso: #0301
  6586.  
  6587. (Table 0301)
  6588. Call VioSetMode with:
  6589.     STACK:    WORD    VIO handle (must be 00h)
  6590.         DWORD    pointer to video mode data structure (see #0296)
  6591. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0299)
  6592. SeeAlso: #0300
  6593.  
  6594. (Table 0302)
  6595. Call VioGetConfig with:
  6596.     STACK:    WORD    VIO handle (must be 00h)
  6597.         DWORD    pointer to video configuration data buffer (see #0297)
  6598. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0299)
  6599.  
  6600. (Table 0303)
  6601. Call VioWrtTTY with:
  6602.     STACK:    WORD    VIO handle (must be 00h)
  6603.         WORD    length of string
  6604.         DWORD    pointer to character string to be written to screen
  6605. Return: AX = error code (00h, 74h, 1B4h) (see #0299)
  6606. Notes:    write wraps at end of line and terminates if it reaches end of screen
  6607.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  6608.       not required to be reentrant; in non-ANSI mode, the function is
  6609.       reentrant and may be called from within an MS-DOS function call
  6610.  
  6611. (Table 0304)
  6612. Call VioGetANSI with:
  6613.     STACK:    WORD    VIO handle (must be 00h)
  6614.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  6615.             or 01h if ANSI is on
  6616. Return: AX = error code (00h, 74h, 1B4h) (see #0299)
  6617. SeeAlso: #0305
  6618.  
  6619. (Table 0305)
  6620. Call VioSetANSI with:
  6621.     STACK:    WORD    VIO handle (must be 00h)
  6622.         DWORD    pointer to WORD indicating new state of ANSI
  6623.             00h off, 01h on
  6624. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0299)
  6625. SeeAlso: #0304
  6626.  
  6627. (Table 0306)
  6628. Call VioGetCurPos with:
  6629.     STACK:    WORD    VIO handle (must be 00h)
  6630.         DWORD    pointer to WORD to hold current cursor column (0-based)
  6631.         DWORD    pointer to WORD to hold current cursor row (0-based)
  6632. Return: AX = error code (00h, 74h, 1B4h) (see #0299)
  6633. SeeAlso: #0307
  6634.  
  6635. (Table 0307)
  6636. Call VioSetCurPos with:
  6637.     STACK:    WORD    VIO handle (must be 00h)
  6638.         WORD    cursor column
  6639.         WORD    cursor row
  6640. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6641. Note:    if either coordinate is invalid, the cursor is not moved
  6642. SeeAlso: #0306
  6643.  
  6644. (Table 0308)
  6645. Call VioGetCurType with:
  6646.     STACK:    WORD    VIO handle (must be 00h)
  6647.         DWORD    pointer to cursor type record (see #0298)
  6648. Return: AX = error code (00h, 74h, 1B4h) (see #0299)
  6649. SeeAlso: #0309
  6650.  
  6651. (Table 0309)
  6652. Call VioSetCurType with:
  6653.     STACK:    WORD    VIO handle (must be 00h)
  6654.         DWORD    pointer to cursor type record (see #0298)
  6655. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0299)
  6656. SeeAlso: #0310
  6657.  
  6658. (Table 0310)
  6659. Call VioScrollUp with:
  6660.     STACK:    WORD    VIO handle (must be 00h)
  6661.         DWORD    pointer to char/attr cell for filling emptied rows
  6662.         WORD    number or rows to scroll (FFFFh = clear area)
  6663.         WORD    right column of scroll area
  6664.         WORD    bottom row of scroll area
  6665.         WORD    left column of scroll area
  6666.         WORD    top row of scroll area
  6667. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6668. SeeAlso: #0311,INT 10/AH=06h
  6669.  
  6670. (Table 0311)
  6671. Call VioScrollDn with:
  6672.     STACK:    WORD    VIO handle (must be 00h)
  6673.         DWORD    pointer to char/attr cell for filling emptied rows
  6674.         WORD    number or rows to scroll (FFFFh = clear area)
  6675.         WORD    right column of scroll area
  6676.         WORD    bottom row of scroll area
  6677.         WORD    left column of scroll area
  6678.         WORD    top row of scroll area
  6679. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6680. SeeAlso: #0310,INT 10/AH=07h
  6681.  
  6682. (Table 0312)
  6683. Call VioReadCellStr with:
  6684.     STACK:    WORD    VIO handle (must be 00h)
  6685.         WORD    column at which to start reading
  6686.         WORD    row at which to start reading
  6687.         DWORD    pointer to WORD containing length of buffer in bytes
  6688.             on return, WORD contains number of bytes actually read
  6689.         DWORD    pointer to buffer for cell string
  6690. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0299)
  6691.  
  6692. (Table 0313)
  6693. Call VioReadCharStr with:
  6694.     STACK:    WORD    VIO handle (must be 00h)
  6695.         WORD    column at which to start reading
  6696.         WORD    row at which to start reading
  6697.         DWORD    pointer to WORD containing length of buffer in bytes
  6698.             on return, WORD contains number of bytes actually read
  6699.         DWORD    pointer to buffer for character string
  6700. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0299)
  6701.  
  6702. (Table 0314)
  6703. Call VioWrtCellStr with:
  6704.     STACK:    WORD    VIO handle (must be 00h)
  6705.         WORD    column at which to start writing
  6706.         WORD    row at which to start writing
  6707.         WORD    length of cell string in bytes
  6708.         DWORD    pointer to cell string to write
  6709. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6710. Note:    write wraps at end of line and terminates if it reaches end of screen
  6711.  
  6712. (Table 0315)
  6713. Call VioWrtCharStr with:
  6714.     STACK:    WORD    VIO handle (must be 00h)
  6715.         WORD    column at which to start writing
  6716.         WORD    row at which to start writing
  6717.         WORD    length of character string
  6718.         DWORD    pointer to character string to write
  6719. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6720. Note:    write wraps at end of line and terminates if it reaches end of screen
  6721.  
  6722. (Table 0316)
  6723. Call VioWrtCharStrAttr with:
  6724.     STACK:    WORD    VIO handle (must be 00h)
  6725.         DWORD    pointer to attribute to be applied to each character
  6726.         WORD    column at which to start writing
  6727.         WORD    row at which to start writing
  6728.         WORD    length of character string
  6729.         DWORD    pointer to character string to write
  6730. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6731. Note:    write wraps at end of line and terminates if it reaches end of screen
  6732.  
  6733. (Table 0317)
  6734. Call VioWrtNAttr with:
  6735.     STACK:    WORD    VIO handle (must be 00h)
  6736.         WORD    column at which to start writing
  6737.         WORD    row at which to start writing
  6738.         WORD    number of times to write attribute
  6739.         DWORD    pointer to display attribute to replicate
  6740. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6741. Note:    write wraps at end of line and terminates if it reaches end of screen
  6742.  
  6743. (Table 0318)
  6744. Call VioWrtNCell with:
  6745.     STACK:    WORD    VIO handle (must be 00h)
  6746.         WORD    column at which to start writing
  6747.         WORD    row at which to start writing
  6748.         WORD    number of times to write cell
  6749.         DWORD    pointer to cell to replicate
  6750. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6751. Note:    write wraps at end of line and terminates if it reaches end of screen
  6752.  
  6753. (Table 0319)
  6754. Call VioWrtNChar with:
  6755.     STACK:    WORD    VIO handle (must be 00h)
  6756.         WORD    column at which to start writing
  6757.         WORD    row at which to start writing
  6758.         WORD    number of times to write character
  6759.         DWORD    pointer to character to replicate
  6760. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  6761. Note:    write wraps at end of line and terminates if it reaches end of screen
  6762. --------V-148102-----------------------------
  6763. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  6764.     AX = 8102h
  6765. Return: AX = 1954h
  6766. Note:    terminates all operations; after this call, the video FOSSIL may either
  6767.       be removed from memory or reinitialized
  6768. SeeAlso: AX=8101h,AX=8103h
  6769. --------V-148103-----------------------------
  6770. INT 14 - VIDEO FOSSIL - UNINSTALL
  6771.     AX = 8103h
  6772. Return: AX = 1954h
  6773. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  6774. --------K-1482-------------------------------
  6775. INT 14 - KEYBOARD FOSSIL
  6776.     AH = 82h
  6777. SeeAlso: AH=7Eh
  6778. --------S-1482-------------------------------
  6779. INT 14 - COURIERS.COM - CONFIGURE PORT
  6780.     AH = 82h
  6781.     AL = port number (1-4)
  6782.     BX = speed (bps)
  6783.     CX = bit flags
  6784.         bit 0: enable input flow control
  6785.         bit 1: enable output flow control
  6786.         bit 2: use X.PC protocol (not yet implemented)
  6787. Return: nothing
  6788. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  6789. --------S-1482-------------------------------
  6790. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  6791.     AH = 82h
  6792.     DX = port number
  6793. Return: AH bit 7 set on error
  6794.     AH bit 7 clear if successful
  6795. Desc:    reset the port to its state before the AH=81h initialization and unhook
  6796.       any interrupts used by the port
  6797. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  6798. ----------1483-------------------------------
  6799. INT 14 - SYSTEM FOSSIL
  6800.     AH = 83h
  6801. SeeAlso: AH=7Eh
  6802. --------S-1483-------------------------------
  6803. INT 14 - COURIERS.COM - START INPUT
  6804.     AH = 83h
  6805.     ES:BX -> circular input buffer
  6806.     CX = length of buffer
  6807.         (should be at least 128 bytes if input flow control enabled)
  6808. Return: nothing
  6809. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  6810. --------S-1483-------------------------------
  6811. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  6812.     AH = 83h
  6813.     DX = port number
  6814.     AL = subfunction
  6815.         00h flush input buffer
  6816.         01h flush output buffer
  6817.         02h flush both buffers
  6818. Return: AH bit 7 set on error
  6819.     AH bit 7 clear if successful
  6820. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  6821. --------S-1484-------------------------------
  6822. INT 14 - COURIERS.COM - READ CHARACTER
  6823.     AH = 84h
  6824. Return: ZF set if no characters available
  6825.     ZF clear
  6826.        AL = character
  6827.        AH = modem status bits
  6828.         bit 7: set on input buffer overflow
  6829. SeeAlso: AH=02h,AH=86h,AH=89h
  6830. --------S-1484-------------------------------
  6831. INT 14 - COMM-DRV v14.0 - SEND PACKET
  6832.     AH = 84h
  6833.     CX = packet length in bytes
  6834.     DX = port number
  6835.     ES:DI -> packet to be sent
  6836. Return: AH = line status (see #0230)
  6837.         bit 7 set on error
  6838.     AL destroyed
  6839. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  6840. --------S-1485-------------------------------
  6841. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  6842.     AH = 85h
  6843. Return: nothing
  6844. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  6845. --------S-1485-------------------------------
  6846. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  6847.     AH = 85h
  6848.     CX = length of packet in bytes
  6849.     DX = port number
  6850.     ES:DI -> buffer for packet
  6851. Return: AH = line status (see #0230)
  6852.         bit 7 set on error
  6853.     AL destroyed
  6854. Note:    this call requires that at least the requested number of bytes are
  6855.       already present in the input buffer, and will fail if there are
  6856.       fewer bytes available
  6857. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  6858. --------S-1486-------------------------------
  6859. INT 14 - COURIERS.COM - START OUTPUT
  6860.     AH = 86h
  6861.     ES:BX -> output buffer
  6862.     CX = length of output buffer
  6863. Return: nothing
  6864. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  6865. --------S-1486-------------------------------
  6866. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  6867.     AH = 86h
  6868.     BL = maximum clock ticks to wait before signalling error on input func
  6869.     BH = maximum clock ticks to wait before signalling error on output
  6870.     DX = port number
  6871.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  6872.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  6873. Return: AH bit 7 set on error
  6874.     AH bit 7 clear if successful
  6875. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  6876.       returning an error when no data is available; functions 01h and 84h
  6877.       will wait for the output timeout before returning an error if there
  6878.       is no space to output the data
  6879. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  6880. --------S-1487-------------------------------
  6881. INT 14 - COURIERS.COM - OUTPUT STATUS
  6882.     AH = 87h
  6883. Return: AX = number of unsent characters
  6884. SeeAlso: AH=88h"COURIERS"
  6885. --------S-1487-------------------------------
  6886. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  6887.     AH = 87h
  6888.     DX = port number
  6889. Return: AH bit 7 set on error
  6890.     AH bit 7 clear if successful
  6891. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  6892. --------S-1488-------------------------------
  6893. INT 14 - COURIERS.COM - ABORT OUTPUT
  6894.     AH = 88h
  6895. SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS"
  6896. --------S-1488-------------------------------
  6897. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  6898.     AH = 88h
  6899.     DX = port number
  6900. Return: AH bit 7 set on error
  6901.     AH bit 7 clear if successful
  6902. Program: COMM-DRV is a universal serial communications driver by Willies'
  6903.       Computer Software Company, which supports standard INT 14 and
  6904.       FOSSIL calls as well as its own interfaces
  6905. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  6906. --------S-1489-------------------------------
  6907. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  6908.     AH = 89h
  6909.     CL = character to send
  6910. Return: nothing
  6911. SeeAlso: AH=01h,AH=84h"COURIERS"
  6912. --------S-1489-------------------------------
  6913. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  6914.     AH = 89h
  6915.     DX = port number
  6916. Return: AH bit 7 set on error
  6917.     AH bit 7 clear if successful
  6918. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  6919. --------S-148A-------------------------------
  6920. INT 14 - COURIERS.COM - SEND BREAK
  6921.     AH = 8Ah
  6922. Return: nothing
  6923. SeeAlso: AH=89h"COURIERS",AH=FAh
  6924. --------S-148A-------------------------------
  6925. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  6926.     AH = 8Ah
  6927.     DX = port number
  6928. Return: AH bit 7 set on error
  6929.     AH bit 7 clear if successful
  6930. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  6931. --------S-148B-------------------------------
  6932. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  6933.     AH = 8Bh
  6934.     CX = bitmask of interrupt to process
  6935.         00h = deinstall
  6936.     BX:DI -> DWORD containing address of function to be called
  6937. Return: AH bit 7 clear if successful
  6938.     AH bit 7 set on error
  6939. --------S-148C-------------------------------
  6940. INT 14 - COURIERS.COM - SET SPEED
  6941.     AH = 8Ch
  6942.     BX = speed in bps
  6943. Return: nothing
  6944. SeeAlso: AH=00h,AH=82h"COURIERS"
  6945. --------S-148C-------------------------------
  6946. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  6947.     AH = 8Ch
  6948.     AL = register offset
  6949.     DX = port number
  6950. Return: AH bit 7 set on error
  6951.     AH bit 7 clear if successful
  6952.         AL = contents of UART register
  6953. SeeAlso: AH=8Dh"COMM-DRV"
  6954. --------S-148D-------------------------------
  6955. INT 14 - COURIERS.COM - DECONFIGURE PORT
  6956.     AH = 8Dh
  6957. Return: nothing
  6958. SeeAlso: AH=82h"COURIERS"
  6959. --------S-148D-------------------------------
  6960. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  6961.     AH = 8Dh
  6962.     AL = register offset
  6963.     BL = new value for UART register
  6964.     DX = port number
  6965. Return: AH bit 7 set on error
  6966.     AH bit 7 clear if successful
  6967. SeeAlso: AH=8Ch"COMM-DRV"
  6968. --------S-148E-------------------------------
  6969. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  6970.     AH = 8Eh
  6971.     CX = length of packet in bytes
  6972.     DX = port number
  6973.     ES:DI -> buffer for packet
  6974. Return: AH = line status (see #0230)
  6975.         bit 7 set on error (see AX=8000h"COMM-DRV")
  6976.     AL destroyed
  6977. Program: COMM-DRV is a universal serial communications driver by Willies'
  6978.       Computer Software Company, which supports standard INT 14 and
  6979.       FOSSIL calls as well as its own interfaces
  6980. Desc:    retrieve a packet from the input buffer without removing it from the
  6981.       buffer
  6982. Note:    this call requires that at least the requested number of bytes are
  6983.       already present in the input buffer, and will fail if there are
  6984.       fewer bytes available
  6985. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  6986. --------S-14A0-------------------------------
  6987. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  6988.     AH = A0h
  6989.     ES:BX -> ASCIZ internet host name
  6990.     CX = length of name
  6991. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0320)
  6992.     CL = session ID
  6993. Program: the Bridge Application Program Interface is a set of functions which
  6994.       makes many of the details of LAN communications transparent
  6995. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  6996. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  6997.  
  6998. (Table 0320)
  6999. Values for 3com BAPI return code:
  7000.  00h    successful
  7001.  01h    no characters written
  7002.  02h    no characters read
  7003.  03h    no such session
  7004.  04h    clearinghouse name not found
  7005.  05h    no response from host
  7006.  06h    no more sessions available
  7007.  07h    session aborted
  7008.  08h    invalid clearinghouse name
  7009.  09h    not supported
  7010.  0Ah    internal (general) network error
  7011.  0Bh    out of memory
  7012.  0Ch    invalid IP address
  7013. --------S-14A0--CXFFFF-----------------------
  7014. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  7015.     AH = A0h
  7016.     CX = FFFFh
  7017. Return: CF clear if successful
  7018.         AX = 5445h ('TE')
  7019.         CX <> FFFFh
  7020.         DX = port number
  7021.     CF set on error
  7022. Program: TES is a network serial port emulation program
  7023. SeeAlso: AH=A1h"TES"
  7024. --------S-14A1-------------------------------
  7025. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  7026.     AH = A1h
  7027.     DH = session ID (00h for external session managment)
  7028. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
  7029.     AL destroyed (Novell TELAPI.EXE)
  7030. SeeAlso: AH=A0h"BAPI"
  7031. --------S-14A1-------------------------------
  7032. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  7033.     AH = A1h
  7034. Return: CX = number of active sessions
  7035.     ES:SI -> status array (see #0321)
  7036. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  7037.  
  7038. Format of Interconnections TES status array entry:
  7039. Offset    Size    Description    (Table 0321)
  7040.  00h    BYTE    status
  7041.  01h    WORD    offset of name
  7042. --------S-14A2-------------------------------
  7043. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  7044.     AH = A2h
  7045.     AL = character
  7046.     DH = session ID (00h for external session managment)
  7047. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0320)
  7048. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  7049. --------S-14A2-------------------------------
  7050. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  7051.     AH = A2h
  7052. Return: CX = number of servers
  7053.     ES:SI -> array of offsets from ES for server names
  7054. SeeAlso: AH=A1h"TES"
  7055. --------S-14A3-------------------------------
  7056. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  7057.     AH = A3h
  7058.     DH = session ID (00h for external session managment)
  7059. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0320)
  7060.     AL = character read or 00h if none available
  7061. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  7062. --------S-14A3-------------------------------
  7063. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  7064.     AH = A3h
  7065.     ES:SI -> ???
  7066. Return: CF clear if successful
  7067.         AX = 5445h ('TE')
  7068.         CX <> FFFFh
  7069.         DX = port number
  7070.     CF set on error
  7071. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  7072. --------S-14A4-------------------------------
  7073. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  7074.     AH = A4h
  7075.     CX = length of buffer in bytes
  7076.     DH = session ID (00h for external session managment)
  7077.     ES:BX -> buffer containing data
  7078. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0320)
  7079.     CX = number of bytes actually sent
  7080. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  7081. --------S-14A4-------------------------------
  7082. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  7083.     AH = A4h
  7084.     ???
  7085. Return: ???
  7086. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7087. --------S-14A5-------------------------------
  7088. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  7089.     AH = A5h
  7090.     CX = length of buffer
  7091.     DH = session ID (00h for external session managment)
  7092.     ES:BX -> buffer for data
  7093. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0320)
  7094.     CX = number of bytes actually read
  7095. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  7096. SeeAlso: AH=A7h"BAPI",AX=FF02h
  7097. --------S-14A5-------------------------------
  7098. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  7099.     AH = A5h
  7100.     AL = session number
  7101. Return: ???
  7102. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  7103. --------S-14A6-------------------------------
  7104. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  7105.     AH = A6h
  7106.     DH = session ID (00h for external session managment)
  7107. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
  7108. Desc:    generate a short break signal; if data delivery was turned off by the
  7109.       break, wait for the host to turn it on again
  7110. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  7111. --------S-14A6-------------------------------
  7112. INT 14 - Interconnections Inc. TES - DROP A SESSION
  7113.     AH = A6h
  7114.     AL = session number
  7115. Return: AH = status
  7116.         00h successful
  7117.         else error
  7118. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7119. --------S-14A7-------------------------------
  7120. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  7121.     AH = A7h
  7122.     DH = session ID (00h for external session managment)
  7123. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
  7124.     CX = number of bytes available for reading
  7125. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  7126. SeeAlso: AH=A5h"BAPI"
  7127. --------S-14A7-------------------------------
  7128. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  7129.     AH = A7h
  7130.     ???
  7131. Return: ???
  7132. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7133. --------S-14A8-------------------------------
  7134. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  7135.     AH = A8h
  7136.     AL = 00h no visible response
  7137.     ES:SI -> ASCIZ command
  7138. Return: ???
  7139. --------N-14A8-------------------------------
  7140. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  7141.     AH = A8h
  7142.     DH = session ID???
  7143.     CH = subfunction
  7144.         02h ???
  7145.         0Dh ???
  7146.         0Fh ???
  7147.         10h ???
  7148.         11h ???
  7149.         28h ???
  7150.         else
  7151.         Return: AH = 09h (not supported)
  7152. Return: AH = return code (see #0320)
  7153.         00h successful
  7154.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  7155.         CL = ??? (7Fh/FFh) (subfunction 28h)
  7156.         CX = ??? (subfunction 11h)
  7157. SeeAlso: AH=A9h"TelAPI"
  7158. --------N-14A9-------------------------------
  7159. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  7160.     AH = A9h
  7161.     DH = session ID???
  7162.     CH = subfunction
  7163.         02h ???
  7164.         0Dh ???
  7165.         0Fh ???
  7166.         10h ???
  7167.         11h ???
  7168.         28h ???
  7169.         else
  7170.         Return: AH = 09h (not supported)
  7171.     ???
  7172. Return: AH = return code (see #0320)
  7173.     ???
  7174. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  7175. --------V-14AA01-----------------------------
  7176. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  7177.     AX = AA01h
  7178. Return: AX = FFFFh if installed, unchanged
  7179.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  7180.     CX = resident segment (v3.1+)
  7181. Program: DimVGA is a public domain screen saver by Menno Pieters
  7182. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  7183. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  7184. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  7185. SeeAlso: INT 2F/AX=E300h
  7186. Index:    screen saver;DimVGA
  7187. --------V-14AA02-----------------------------
  7188. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  7189.     AX = AA02h
  7190.     BX = number of clock ticks
  7191. Return: AX = FFFFh
  7192. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  7193.       when more than 256 colors can be used DimVGA will blank the screen.
  7194. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  7195. Index:    screen saver;DimVGA
  7196. --------V-14AA03-----------------------------
  7197. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  7198.     AX = AA03h
  7199.     BX = percentage remaining visible (1-99)
  7200. Return: AX = FFFFh
  7201. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  7202. Index:    screen saver;DimVGA
  7203. --------V-14AA04-----------------------------
  7204. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  7205.     AX = AA04h
  7206. Return: AX = FFFFh
  7207.     BX = current time-out in clock ticks
  7208. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  7209. Index:    screen saver;DimVGA
  7210. --------V-14AA05-----------------------------
  7211. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  7212.     AX = AA05h
  7213. Return: AX = FFFFh
  7214.     BX = current dimming factor
  7215. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  7216. Index:    screen saver;DimVGA
  7217. --------V-14AA06-----------------------------
  7218. INT 14 - DimVGA v2.0+ - DISABLE
  7219.     AX = AA06h
  7220. Return: AX = FFFFh
  7221. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  7222. Index:    screen saver;DimVGA
  7223. --------V-14AA07-----------------------------
  7224. INT 14 - DimVGA v2.0+ - ENABLE
  7225.     AX = AA07h
  7226. Return: AX = FFFFh
  7227. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  7228. Index:    screen saver;DimVGA
  7229. --------V-14AA08-----------------------------
  7230. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  7231.     AX = AA08h
  7232. Return: AX = FFFFh
  7233. Note:    this function will dim the screen immediately, even if DimVGA is
  7234.       currently disabled
  7235. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  7236. Index:    screen saver;DimVGA
  7237. --------V-14AA09-----------------------------
  7238. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  7239.     AX = AA09h
  7240. Return: AX = FFFFh
  7241. Note:    this function will undim the screen immediately, even if DimVGA is
  7242.       currently disabled
  7243. SeeAlso: AX=AA01h,AX=AA08h
  7244. Index:    screen saver;DimVGA
  7245. --------V-14AA0A-----------------------------
  7246. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  7247.     AX = AA0Ah
  7248. Return: AX = FFFFh
  7249.     BX = current state (0000h disabled, 0001h enabled)
  7250. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  7251. Index:    screen saver;DimVGA
  7252. --------V-14AA0B-----------------------------
  7253. INT 14 - DimVGA v2.1+ - SET HOTKEY
  7254.     AX = AA0Bh
  7255.     BH = shift state (see #0322)
  7256.     BL = keyboard scancode
  7257. Return: AX = FFFFh
  7258. SeeAlso: AX=AA01h,AX=AA0Ch
  7259. Index:    screen saver;DimVGA
  7260.  
  7261. Bitfields for DimVGA hotkey shift state:
  7262. Bit(s)    Description    (Table 0322)
  7263.  7-4    unused
  7264.  3    Alt key pressed
  7265.  2    Ctrl key pressed
  7266.  1    Left shift key pressed
  7267.  0    Right shift key pressed
  7268. --------V-14AA0C-----------------------------
  7269. INT 14 - DimVGA v2.1+ - GET HOTKEY
  7270.     AX = AA0Ch
  7271. Return: AX = FFFFh
  7272.     BH = shift state (see #0322)
  7273.     BL = keyboard scancode
  7274. SeeAlso: AX=AA01h,AX=AA0Bh
  7275. Index:    screen saver;DimVGA
  7276. --------V-14AA0D-----------------------------
  7277. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  7278.     AX = AA0Dh
  7279.     BX = new mouse check status
  7280.         0000h mouse checking off
  7281.         0001h mouse checking on
  7282. Return: AX = FFFFh
  7283. Note:    before switching mouse checking on, a mouse driver should be
  7284.       found in memory. If no mouse driver is found, mouse checking
  7285.       should be switched off (resident DimVGA does not check by itself).
  7286. SeeAlso: AX=AA01h,AX=AA0Eh
  7287. Index:    screen saver;DimVGA
  7288. --------V-14AA0E-----------------------------
  7289. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  7290.     AX = AA0Eh
  7291. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  7292. SeeAlso: AX=AA01h,AX=AA0Dh
  7293. Index:    screen saver;DimVGA
  7294. --------V-14AA0F-----------------------------
  7295. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  7296.     AX = AA0Fh
  7297.     BX = locking status
  7298.         0000h disabled
  7299.         0001h enabled
  7300. Return: AX = FFFFh
  7301. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  7302. Index:    screen saver;DimVGA
  7303. --------V-14AA10-----------------------------
  7304. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  7305.     AX = AA10h
  7306. Return: BX = locking status (0000h disabled, 0001h enabled)
  7307. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  7308. Index:    screen saver;DimVGA
  7309. ----------14AD-------------------------------
  7310. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  7311.     AH = ADh
  7312. SeeAlso: AH=AEh"IBM",AH=AFh"IBM"
  7313. ----------14AE-------------------------------
  7314. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  7315.     AH = AEh
  7316. SeeAlso: AH=ADh"IBM",AH=AFh"IBM"
  7317. ----------14AF-------------------------------
  7318. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  7319.     AH = AFh
  7320. SeeAlso: AH=ADh"IBM",AH=AEh"IBM"
  7321. --------S-14AF00BXAAAA-----------------------
  7322. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  7323.     AX = AF00h
  7324.     BX = AAAAh
  7325. Return: AX = AF01h if installed
  7326.         BH = protocol type (if BX=AAAAh on entry)
  7327.         01h NetManage TCP/IP
  7328.         BL = version for protocol type (if BX=AAAAh on entry)
  7329. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  7330.       behavior is used to determine whether the newer functions (AH=B0h,
  7331.       AH=B1h,etc) are available
  7332. SeeAlso: AH=A0h"BAPI"
  7333. --------S-14B0-------------------------------
  7334. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  7335.     AH = B0h
  7336.     AL = new state (00h disabled, 01h enabled)
  7337. Return: AH = return code (00h,07h,0Ah) (see #0320)
  7338. Note:    disabling the ECM character allows applications to send data which
  7339.       includes the ECM character
  7340. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  7341. --------S-14B1-------------------------------
  7342. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  7343.     AH = B1h
  7344. Return: AH = return code (00h,07h,0Ah) (see #0320)
  7345. Desc:    provide a means for the application or terminal emulator to perform
  7346.       the same action normally caused by the ECM character
  7347. SeeAlso: AH=B0h,AH=B2h
  7348. --------S-14B2-------------------------------
  7349. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  7350.     AH = B2h
  7351. Return: AH = return code (00h,07h,0Ah) (see #0320)
  7352.     AL = watch flag (00h disabled, 01h enabled)
  7353. Desc:    determine whether the ECM character is enabled
  7354. SeeAlso: AH=B0h,AH=B1h
  7355. --------S-14B3-------------------------------
  7356. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  7357.     AH = B3h
  7358.     AL = direction (00h get, 01h set)
  7359.     DH = session ID (00h for external session managment)
  7360.     DL = configuration item (00h = end-of-line mapping)
  7361.     CX = new configuration item value (if AL=01h)
  7362.         ---if DL=00h---
  7363.         CH = application EOL type (app to Telnet client)
  7364.         01h application will send lone CR
  7365.         02h application will send CR-? pair
  7366.         CL = driver EOL type (Telnet client to Telnet server)
  7367.         01h driver should send CR-NUL pair
  7368.         02h driver should send CR-LF pair
  7369. Return: AH = return code (00h,03h,09h-0Bh) (see #0320)
  7370.     ---if AL=00h---
  7371.     CX = configuration item value (above)
  7372. SeeAlso: AH=B2h
  7373. --------N-14E0-------------------------------
  7374. INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
  7375.     AH = E0h
  7376.     BX = port number to connect with (default 0017h used if <= 0)
  7377.     CX:DX = Internet address of remote host
  7378.     DS:DI -> 2-byte remote host (session) identifier
  7379.     ES:SI -> 1700-byte buffer for Telnet state record
  7380.         0000h:0000h to use TelAPI internally-allocated space
  7381. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0323)
  7382.     ES:SI buffer filled with state record
  7383.     ES:SI -> internally-allocated state record in some versions
  7384. Note:    the remote host identifier may be used to refer to this connection
  7385. SeeAlso: AH=E1h,AH=ECh,AX=FF00h
  7386.  
  7387. (Table 0323)
  7388. Values for TelAPI status:
  7389.  0000h-7FFFh    successful (session number)
  7390.  FED3h    (-301)    no session allocated, or out of TelAPI data space
  7391.  FF37h    (-201)    all sessions in use
  7392.  FFBDh    (-67)    unknown hostname
  7393.  FFC0h    (-64)    host not functioning
  7394.  FFC3h    (-61)    connection attempt refused
  7395.  FFC4h    (-60)    connection attempt timed out
  7396.  FFC8h    (-56)    socket already connected
  7397.  FFCDh    (-51)    network is unreachable
  7398.  FFDDh    (-35)    operation would block
  7399. --------S-14E000-----------------------------
  7400. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  7401.     AX = E000h
  7402.     DX = port number (0-3)
  7403. Return: ES:BX -> status block (see #0324)
  7404. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  7405.       ships with the METZ terminal program as MTEMNP.DRV (a TSR despite
  7406.       the .DRV extension)
  7407. SeeAlso: AX=E006h
  7408.  
  7409. Format of MX5 Extended FOSSIL status block:
  7410. Offset    Size    Description    (Table 0324)
  7411.  00h    BYTE    flag: active (00h no, 01h yes)
  7412.  01h    BYTE    MNP level (2,4,5)
  7413.  02h    BYTE    series ID from remote MNP
  7414.  03h    DWORD    total packets transmitted
  7415.  07h    DWORD    duplicate packets transmitted
  7416.  0Bh    DWORD    maximum speed
  7417.  0Fh    DWORD    total packets received
  7418.  13h    DWORD    duplicate packets received
  7419.  17h    DWORD    maximum speed
  7420. --------S-14E001-----------------------------
  7421. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  7422.     AX = E001h
  7423.     BH = function
  7424.         00h get MNP level
  7425.         01h set MNP level
  7426.         BL = new level (00h none, 02h/04h/05h MNP level N)
  7427.     DX = port number (0-3)
  7428. Return: BL = MNP level
  7429. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  7430. --------S-14E002-----------------------------
  7431. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  7432.     AX = E002h
  7433.     BH = function
  7434.         00h get answer/originate mode
  7435.         01h set mode
  7436.         BL = new mode (00h originate [default], 01h answer)
  7437.     DX = port number (0-3)
  7438. Return: BL = answer/originate mode
  7439. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  7440. --------S-14E003-----------------------------
  7441. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  7442.     AX = E003h
  7443.     BH = function
  7444.         00h get wait ticks
  7445.         01h set wait ticks
  7446.         BL = MNP wait ticks (default 0Eh)
  7447.     DX = port number (0-3)
  7448. Return: BL = wait ticks
  7449. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  7450. --------S-14E004-----------------------------
  7451. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  7452.     AX = E004h
  7453.     BH = function
  7454.         00h get sound level
  7455.         01h set sound level
  7456.         BL = new sound level (00h off, 01h on [default])
  7457.     DX = port number
  7458. Return: BL = sound state
  7459. Desc:    specify whether MX5 should generate beeps after an MNP connection
  7460.       (three high beeps if successful, high then low on connection failure)
  7461. SeeAlso: AX=E002h,AX=E006h
  7462. --------S-14E005-----------------------------
  7463. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  7464.     AX = E005h
  7465. Return: BX = segment of MX5's memory block or 0000h on failure
  7466. Note:    caller must free the returned memory block to complete the uninstall
  7467. SeeAlso: AX=E006h
  7468. --------S-14E006BX0000-----------------------
  7469. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  7470.     AX = E006h
  7471.     BX = 0000h
  7472. Return: BX = 4D58h ('MX') if installed
  7473.         AH = major version
  7474.         AL = minor version
  7475. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  7476. --------S-14E007-----------------------------
  7477. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  7478.     AX = E007h
  7479.     CX = number of ticks to wait
  7480. Return: nothing
  7481. SeeAlso: AX=E006h
  7482. --------N-14E1-------------------------------
  7483. INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
  7484.     AH = E1h
  7485.     BX = connection ID
  7486. Return: AX = status (0000h,FFF7h,maybe others) (see #0323)
  7487. Note:    flushes and releases all buffers and data space used by the connection
  7488. SeeAlso: AH=E0h,AH=E6h,AX=FF00h
  7489. --------N-14E2-------------------------------
  7490. INT 14 - TelAPI - "telread" - BUFFERED READ
  7491.     AH = E2h
  7492.     BX = connection ID (see AH=E0h"TelAPI")
  7493.     CX = length of buffer in bytes
  7494.     ES:SI -> buffer for data
  7495. Return: AX > 0000h number of characters actually read
  7496.     AX = 0000h host has closed connection
  7497.     AX < 0000h error code (see #0323)
  7498. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  7499.       negotiates various Telnet options, and immediately executes several
  7500.       different Telnet action commands
  7501. SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
  7502. --------N-14E3-------------------------------
  7503. INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
  7504.     AH = E3h
  7505.     BX = connection ID
  7506.     CX = length of buffer in bytes
  7507.     ES:SI -> buffer containing data
  7508. Return: AX > 0000h number of characters actually written
  7509.     AX < 0000h error code (see #0323)
  7510. Note:    translates local EOL into CRLF if the connection is in ASCII mode,
  7511.       sends the appropriate Telnet commands for the characters selected
  7512.       for IP, AYT, AO, EC, EL, and Break
  7513. SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
  7514. --------N-14E4-------------------------------
  7515. INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
  7516.     AH = E4h
  7517.     BX = connection ID (see AH=E0h"TelAPI")
  7518.     CX = Telnet command/option identifier (see #0326)
  7519.     ES:SI -> buffer containing command/option argument (see #0325)
  7520. Return: AX = status (0000h, etc.) (see #0323)
  7521. Desc:    start filter control, initiate Telnet option negotiation, or get filter
  7522.       control status
  7523. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  7524.  
  7525. Format of TelAPI Telnet command/option argument:
  7526. Offset    Size    Description    (Table 0325)
  7527.  00h  5 WORD    numeric arguments
  7528.  0Ah    DWORD    -> ASCIZ string
  7529. SeeAlso: #0326
  7530.  
  7531. (Table 0326)
  7532. Values for TelAPI Telnet command/option identifier:
  7533.  01h    ASCII        args: none
  7534.  02h    BINARY        args: none
  7535.  03h    LOCALECHO    args: none        client echos data
  7536.  04h    REMOTEECHO    args: none        server echos data
  7537.  05h    SGA        args: none        Suppress Go-Ahead signal
  7538.  07h    CHARMODE    args: none        no line-buffering
  7539.  08h    LINEMODE    args: -> erase-line ch    perform line-buffering
  7540.  09h    RECVEOL        args: EOL type
  7541.  0Ah    SENDEOL        args: EOL type
  7542.  0Bh    EOR        args: none        enable end-of-record sequence
  7543.  0Dh    BREAK        args: -> break char
  7544.  0Eh    VERBOSE        args: verbosity        display Telnet negotiations?
  7545.  0Fh    AYT        args: -> AYT escape ch
  7546.  10h    AO        args: -> AO escape char
  7547.  11h    IP        args: -> IP escape char
  7548.  12h    EC        args: -> escape char
  7549.  13h    EL        args: -> escape char
  7550.  14h    STATUS        args: type; returns data in structure
  7551.  18h    TERMTYPE    args: -> terminal type
  7552.  19h    ATTACHPORT    args: port number ; returns session number
  7553.  1Bh    TRANSMIT_EOR    args: EOR enabled    append EOR to every telwrite?
  7554. SeeAlso: #0325
  7555. --------N-14E5-------------------------------
  7556. INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
  7557.     AH = E5h
  7558. Return: AX = status (0000h,other) (see also #0323)
  7559.         FFFFh unable to reset
  7560. Desc:    close all sessions and reset TelAPI to defaults
  7561. SeeAlso: AH=E1h,AH=E6h,AX=FF00h
  7562. --------N-14E6-------------------------------
  7563. INT 14 - TelAPI - "telunload" - UNINSTALL
  7564.     AH = E6h
  7565. Return: AX = status
  7566.         0000h successful
  7567.         FFFFh unable to uninstall
  7568. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  7569.     this function invokes AH=E5h internally
  7570. SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  7571. --------N-14E7-------------------------------
  7572. INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
  7573.     AH = E7h
  7574.     ES:SI -> 10-word buffer for session list
  7575. Return: AX = 0000h (successful)
  7576.     ES:SI buffer filled
  7577. Desc:    determine, for each of the ten allowable sessions, whether the session
  7578.       is currently available
  7579. Note:    each word in the buffer is filled with either 0000h to indicate that
  7580.      the corresponding sesion is unavailable, or 0001h if available
  7581. SeeAlso: AH=E0h,AH=E5h,AX=FF00h
  7582. --------N-14E8-------------------------------
  7583. INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
  7584.     AH = E8h
  7585.     BX = connection ID (see AH=E0h"TelAPI")
  7586.     CX = serial port number (0000h-0003h = COM1-COM4)
  7587. Return: AX = status
  7588.         0000h successful
  7589.         FFFFh failed
  7590. SeeAlso: AH=E0h,AH=E9h,AX=FF00h
  7591. --------N-14E9-------------------------------
  7592. INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
  7593.     AH = E9h
  7594.     DX = serial port number (0000h-0003h = COM1-COM4)
  7595. Return: AX >= 0000h session number
  7596.     AX < 0000h error code (see #0323)
  7597. SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
  7598. --------N-14EA-------------------------------
  7599. INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
  7600.     AH = EAh
  7601.     BX = connection ID (see AH=E0h"TelAPI")
  7602.     ES:SI -> buffer for status info (see #0327)
  7603. Return: AX = status (0000h,FFFFh,etc.)
  7604. SeeAlso: AH=E9h,AH=EBh,AX=FF00h
  7605.  
  7606. Format of TelAPI Telnet connection status information:
  7607. Offset    Size    Description    (Table 0327)
  7608.  00h  4 BYTEs    remote host IP address
  7609.  04h 20 BYTEs    reserved
  7610.  18h    WORD    local port number
  7611.  1Ah    BYTE    connection mode (00h = ASCII, 01h = Binary)
  7612.  1Bh    BYTE    echo flag (00h local, 01h remote)
  7613.  1Ch    BYTE    SGA flag (00h will, 01h won't)
  7614.  1Dh    BYTE    EOR negotation flag (00h do negotiate, 01h don't)
  7615.  1Eh    BYTE    buffering (00h line mode, 01h character mode)
  7616.  1Fh    BYTE    reserved
  7617.  20h    BYTE    verbose flag (00h no, 01h verbose mode)
  7618.  21h    BYTE    received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
  7619.  22h    BYTE    sent EOL (00h no translation, 01h CR, 02h LF)
  7620.  23h    BYTE    break character
  7621.  24h    BYTE    IP escape character
  7622.  25h    BYTE    AO escape character
  7623.  26h    BYTE    AYT escape character
  7624.  27h    BYTE    EC escape character
  7625.  28h    BYTE    EL escape character
  7626.  29h 41 BYTEs    ASCIZ Telnet-negotiated terminal type
  7627.  52h  9 BYTEs    session ID
  7628. SeeAlso: #0328
  7629. --------N-14EB-------------------------------
  7630. INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
  7631.     AH = EBh
  7632.     ES:SI -> buffer for session statuses (see #0328)
  7633. Return: ES:SI buffer filled
  7634. SeeAlso: AH=E9h,AH=EAh,AX=FF00h
  7635.  
  7636. Format of TelAPI session status information [array]:
  7637. Offset    Size    Description    (Table 0328)
  7638.  00h    BYTE    session state (00h available, 01h connected)
  7639.  01h  9 BYTEs    session ID if connected
  7640.  0Ah    WORD    attached COM port if connected, FFFFh if not
  7641. SeeAlso: #0327
  7642. --------N-14EC-------------------------------
  7643. INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
  7644.     AH = ECh
  7645.     BX = port number to connect with (default 0017h used if <= 0)
  7646.     CX:DX = Internet address of remote host
  7647.     DS:DI -> 2-byte remote host (connection) identifier
  7648.     ES:SI -> 1700-byte buffer for Telnet state record
  7649.         0000h:0000h to use TelAPI internally-allocated space
  7650. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0323)
  7651.     ES:SI buffer filled with state record
  7652.     ES:SI -> internally-allocated state record in some versions
  7653. Notes:    the remote host identifier may be used to refer to this connection
  7654.     this function returns immediately; use AH=EDh to check whether the
  7655.       connection has been established yet
  7656.     this function is not supported by the Microdyne TelAPI v3.7
  7657. SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
  7658. --------N-14ED-------------------------------
  7659. INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
  7660.     AH = EDh
  7661.     BX = connection ID (see AH=ECh)
  7662. Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #0323)
  7663.         0000h session now connected
  7664.         0001h connection still in progress
  7665. Note:    this function is not supported by the Microdyne TelAPI v3.7
  7666. SeeAlso: AH=EDh,AX=FF00h
  7667. --------a-14F0F0-----------------------------
  7668. INT 14 - ASAP v1.0 - ???
  7669.     AX = F0F0h
  7670.     DX = ???
  7671.     ???
  7672. Return: ???
  7673. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  7674.       by MicroTalk
  7675. SeeAlso: AX=F0F1h
  7676. --------a-14F0F1DX0000-----------------------
  7677. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  7678.     AX = F0F1h
  7679.     DX = 0000h
  7680. Return: DX = segment of resident code
  7681.         0000h if not installed
  7682. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  7683.       by MicroTalk
  7684. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  7685. --------S-14F4FF-----------------------------
  7686. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  7687.     AX = F4FFh
  7688.     DX = port (00h-03h)
  7689. Return: CF clear if present
  7690.         AX = 0000h
  7691.     CF set if not present
  7692.         AX <> 0000h
  7693. SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
  7694. --------S-14F9-------------------------------
  7695. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  7696.     AH = F9h
  7697.     DX = port (00h-03h)
  7698. Return: nothing
  7699. SeeAlso: AX=F4FFh
  7700. --------S-14FA-------------------------------
  7701. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  7702.     AH = FAh
  7703.     DX = port (00h-03h)
  7704. Return: nothing
  7705. SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
  7706. --------S-14FB-------------------------------
  7707. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  7708.     AH = FBh
  7709.     AL = modem control register (see #0260 at AH=05h"SERIAL")
  7710.     DX = port (00h-03h)
  7711. Return: nothing
  7712. SeeAlso: AH=05h"SERIAL"
  7713. --------S-14FC-------------------------------
  7714. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  7715.     AH = FCh
  7716.     DX = port (00h-03h)
  7717. Return: AH = RS232 status bits (see #0230 at AH=03h)
  7718.     AL = character
  7719. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  7720. --------S-14FD02-----------------------------
  7721. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  7722.     AX = FD02h
  7723. Return: CX = number of characters available
  7724. --------N-14FF00-----------------------------
  7725. INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
  7726.     AX = FF00h
  7727. Return: AX = 00FFh if installed
  7728.         BX = version number * 100 (decimal)
  7729. SeeAlso: AH=E6h,AX=F4FFh
  7730. --------S-14FF01-----------------------------
  7731. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  7732.     AX = FF01h
  7733.     CX = length of buffer (0000h to cancel buffer assignment)
  7734.     DX = port (00h-03h)
  7735.     ES:BX -> send buffer
  7736. Return: nothing
  7737. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  7738. --------S-14FF02-----------------------------
  7739. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  7740.     AX = FF02h
  7741.     CX = length of buffer (0000h to cancel buffer assignment)
  7742.     DX = port (00h-03h)
  7743.     ES:BX -> receive buffer
  7744. Return: nothing
  7745. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h
  7746. --------S-14FFF8-----------------------------
  7747. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  7748.     AX = FFF8h
  7749.     BX = card type (sub-device number)
  7750.     CX = new baudrate divisor
  7751.     DX = index to baud rate
  7752. Return: AH bit 7 set on error
  7753.     AH bit 7 clear if successful
  7754. Program: COMM-DRV is a universal serial communications driver by Willies'
  7755.       Computer Software Company, which supports standard INT 14 and
  7756.       FOSSIL calls as well as its own interfaces
  7757. SeeAlso: AX=8000h"COMM-DRV"
  7758. --------S-14FFFB-----------------------------
  7759. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  7760.     AX = FFFBh
  7761.     DX = port number
  7762. Return: AH bit 7 set on error
  7763.     AH bit 7 clear if successful
  7764.         BX = highest port number
  7765. --------S-14FFFC-----------------------------
  7766. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  7767.     AX = FFFCh
  7768.     DX = port number
  7769. Return: AH bit 7 set on error
  7770.     AH bit 7 clear if successful
  7771.         BX = flags (see #0329)
  7772. SeeAlso: AX=FFFDh
  7773.  
  7774. Bitfields for INT 14h flags:
  7775. Bit(s)    Description    (Table 0329)
  7776.  0    port active for INT 14h
  7777.  1    interface behaving like a FOSSIL driver
  7778. --------S-14FFFD-----------------------------
  7779. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  7780.     AX = FFFDh
  7781.     BX = flags (see #0329)
  7782.     DX = port number
  7783. Return: AH bit 7 set on error
  7784.     AH bit 7 clear if successful
  7785. SeeAlso: AX=FFFCh
  7786. --------S-14FFFE-----------------------------
  7787. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  7788.     AX = FFFEh
  7789. Return: AH bit 7 set on error
  7790.     AH bit 7 clear if successful
  7791. --------S-14FFFF-----------------------------
  7792. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  7793.     AX = FFFFh
  7794.     BX:SI -> DWORD buffer for address of information area (see #0330)
  7795.           (initialized to zeros)
  7796. Return: BX:SI buffer filled with nonzero value if installed
  7797. Program: COMM-DRV is a universal serial communications driver by Willies'
  7798.       Computer Software Company, which supports standard INT 14 and
  7799.       FOSSIL calls as well as its own interfaces
  7800. Index:    installation check;COMM-DRV
  7801.  
  7802. Format of COMM-DRV information area:
  7803. Offset    Size    Description    (Table 0330)
  7804.  00h  8 BYTEs    signature "COMM-DRV"
  7805.  08h  2 BYTEs    00h,00h
  7806.  0Ah    DWORD    -> direct address mapping table
  7807.  0Eh    DWORD    previous INT 14 vector
  7808. --------t-15---------------------------------
  7809. INT 15 - Microsoft TSR Specification
  7810.     No additional information available at this time.
  7811. --------B-1500-------------------------------
  7812. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  7813.     AH = 00h
  7814. Return: CF set on error
  7815.         AH = 86h no cassette present
  7816.     CF clear if successful
  7817. SeeAlso: AH=01h"CASSETTE",MEM 0040h:0067h"PC"
  7818. --------M-1500-------------------------------
  7819. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  7820.     AH = 00h
  7821. Return: CX = signed X count
  7822.     DX = signed Y count
  7823. --------O-1500-------------------------------
  7824. INT 15 - VMiX v2+ - INSTALLATION CHECK
  7825.     AH = 00h
  7826. Return: DX = 0798h if installed
  7827.         AX = version (AH = major, AL = minor)
  7828. --------T-1500-------------------------------
  7829. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  7830.     AH = 00h
  7831. Return: nothing
  7832. Note:    if issued by the highest-priority task while MultiDOS is using
  7833.       priority-based rather than round-robin scheduling, control will be
  7834.       returned to the caller immediately
  7835. SeeAlso: AH=03h"MultiDOS",AX=1000h
  7836. --------B-1501-------------------------------
  7837. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  7838.     AH = 01h
  7839. Return: CF set on error
  7840.         AH = 86h no cassette present
  7841.     CF clear if successful
  7842. SeeAlso: AH=00h"CASSETTE"
  7843. --------b-1501-------------------------------
  7844. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  7845.     AH = 01h
  7846.     AL = NVRAM location (00h to 3Fh) (see #0331)
  7847.     BL = NVRAM data value
  7848. Return: AH = return code
  7849.         00h OK
  7850.         01h address bad
  7851.         02h write error
  7852. SeeAlso: AH=02h"Amstrad"
  7853.  
  7854. Format of Amstrad NVRAM:
  7855. Offset    Size    Description    (Table 0331)
  7856.  00h    BYTE    time of day: seconds
  7857.  01h    BYTE    alarm time: seconds
  7858.  02h    BYTE    time of day: minutes
  7859.  03h    BYTE    alarm time: minutes
  7860.  04h    BYTE    time of day: hours
  7861.  05h    BYTE    alarm time: hours
  7862.  06h    BYTE    day of week, 1 = Sunday
  7863.  07h    BYTE    day of month
  7864.  08h    BYTE    month
  7865.  09h    BYTE    year mod 100
  7866.  0Ah    BYTE    RTC status register A (see #0332)
  7867.  0Bh    BYTE    RTC status register B (see #0333)
  7868.  0Ch    BYTE    RTC status register C (read-only) (see #0334)
  7869.  0Dh    BYTE    RTC status register D
  7870.         bit 7: battery good
  7871.  0Eh  6 BYTEs    time and date machine last used
  7872.  14h    BYTE    user RAM checksum
  7873.  15h    WORD    Enter key scancode/ASCII code
  7874.  17h    WORD    Forward delete key scancode/ASCII code
  7875.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  7876.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  7877.  1Dh    WORD    mouse button 1 scancode/ASCII code
  7878.  1Fh    WORD    mouse button 2 scancode/ASCII code
  7879.  21h    BYTE    mouse X scaling factor
  7880.  22h    BYTE    mouse Y scaling factor
  7881.  23h    BYTE    initial VDU mode and drive count
  7882.  24h    BYTE    initial VDU character attribute
  7883.  25h    BYTE    size of RAM disk in 2K blocks
  7884.  26h    BYTE    initial system UART setup byte
  7885.  27h    BYTE    initial external UART setup byte
  7886.  28h 24 BYTEs    available for user application
  7887. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  7888.       the clock chip
  7889.  
  7890. Bitfields for RTC status register A:
  7891. Bit(s)    Description    (Table 0332)
  7892.  7    set if date/time being updated
  7893.  6-4    time base speed, default 010 = 32768 Hz
  7894.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  7895. SeeAlso: #0331
  7896.  
  7897. Bitfields for RTC status register B:
  7898. Bit(s)    Description    (Table 0333)
  7899.  7    clear if normal update, set if abort update
  7900.  6    periodic interrupt enable
  7901.  5    alarm interrupt enable
  7902.  4    update end interrupt enable
  7903.  3    square wave enable
  7904.  2    date mode (clear = BCD, set = binary)
  7905.  1    24-hour format
  7906.  0    daylight saving time enable
  7907. SeeAlso: #0331
  7908.  
  7909. Bitfields for RTC status register C:
  7910. Bit(s)    Description    (Table 0334)
  7911.  7    IRQF flag
  7912.  6    PF flag
  7913.  5    AF flag
  7914.  4    UF flag
  7915. SeeAlso: #0331
  7916. --------O-1501-------------------------------
  7917. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  7918.     AH = 01h
  7919.     STACK:    WORD    object ID of requestor
  7920.         DWORD    pointer to ASCIZ name of requested method
  7921.             "assign" assign channel to object
  7922.             "deassign" deassign channel
  7923.             "cursor" set cursor on/off
  7924.             "init" initialize comm port
  7925.             "open" open I/O channel
  7926.             "position" set cursor position
  7927.             "receive" get buffered packet from comm port
  7928.             "send" send buffered packet to comm port
  7929.             "vio" set current virtual I/O to specified channel
  7930.             "window" make window at cursor position
  7931.         ---if "assign"---
  7932.          WORD    object UID
  7933.          WORD    caller UID/PID
  7934.          DWORD    CSL with port
  7935.         ---if "deassign"---
  7936.          WORD    channel ID
  7937.         ---if "cursor"---
  7938.          WORD    channel ID (must be a SRCSINK)
  7939.          WORD    new state (0000h off, 0001h on)
  7940.         ---if "init"---
  7941.          WORD    channel ID (must be a SRCSINK)
  7942.          WORD    comm port number (00h-03h)
  7943.          WORD    UART init code
  7944.         ---if "open"---
  7945.          WORD    channel ID
  7946.         ---if "position"---
  7947.          WORD    channel ID (must be a SRCSINK)
  7948.          WORD    position (high byte = row, low byte = column)
  7949.         ---if "receive"---
  7950.          DWORD    pointer to buffer
  7951.         ---if "send"---
  7952.          WORD    length of buffer
  7953.          DWORD    pointer to buffer
  7954.         ---if "vio"---
  7955.          WORD    channel ID (must be a SRCSINK)
  7956.         ---if "window"---
  7957.          WORD    top left (high byte = row, low byte = column)
  7958.          WORD    bottom right (high byte = row, low byte = column)
  7959. Return: DX:AX -> IRP structure or 0000h:0000h
  7960. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  7961. --------T-1501-------------------------------
  7962. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  7963.     AH = 01h
  7964.     AL = semaphore number (00h-3Fh)
  7965. Return: AH = status
  7966.         00h successful
  7967.         02h invalid semaphore number
  7968. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  7969.       task and the call returns immediately
  7970.     if the semaphore is already owned by another task, the calling task
  7971.       is placed on a queue for the semaphore and suspended until it can
  7972.       become owner of the semaphore
  7973.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  7974. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  7975. --------B-1502-------------------------------
  7976. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  7977.     AH = 02h
  7978.     CX = number of bytes to read
  7979.     ES:BX -> buffer
  7980. Return: CF clear if successful
  7981.         DX = number of bytes read
  7982.         ES:BX -> byte following last byte read
  7983.     CF set on error
  7984.     AH = status (see #0335)
  7985. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE",MEM 0040h:0069h,MEM 0040h:006Bh"PC"
  7986.  
  7987. (Table 0335)
  7988. Values for Cassette status:
  7989.  00h    successful
  7990.  01h    CRC error
  7991.  02h    bad tape signals
  7992.  04h    no data
  7993.  80h    invalid command
  7994.  86h    no cassette present
  7995. --------b-1502-------------------------------
  7996. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  7997.     AH = 02h
  7998.     AL = NVRAM location (00h to 3Fh)
  7999. Return: AH = return code
  8000.         00h OK
  8001.         01h address bad
  8002.         02h checksum error
  8003.     AL = NVRAM data value
  8004. SeeAlso: AH=01h"Amstrad"
  8005. --------O-1502-------------------------------
  8006. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  8007.     AH = 02h
  8008.     STACK:    WORD    object ID of requestor
  8009.         DWORD    pointer to ASCIZ name of requested method
  8010.             "assign" allocate low memory block
  8011.             "assign extended" allocate extended memory pages
  8012.             "assign gdt" allocate GDT selector
  8013.             "paged" allocate low paged memory
  8014.             "paged extended" alllocate extended memory pages
  8015.             "deassign" free memory block
  8016.             "deassign gdt" free GDT selector
  8017.             "getvpage" get physical address for virtual page
  8018.             "setvpage" set physical address for virtual page
  8019.             "info" get VMiX memory usage info block
  8020.             "move" move contents of 32-bit memory
  8021.             "newmcb" make new DOS memory control block
  8022.             "owner" get process ID of MCB or PSP owner
  8023.             "umb" allocate upper memory block
  8024.             "video" toggle system use of video memory and get stat
  8025.         ---if "assign"---
  8026.          WORD    number of objects
  8027.          WORD    size in bytes (multiple of 512 bytes)
  8028.         ---if "assign extended"---
  8029.          WORD    number of objects
  8030.          WORD    size in bytes (multiple of 4K)
  8031.         ---if "assign gdt"---
  8032.          WORD    access type (low byte)
  8033.          WORD    segment size in paragraphs
  8034.          DWORD    pointer to start of physical segment
  8035.         ---if "paged"---
  8036.          WORD    number of 512-byte pages
  8037.         ---if "paged extended"
  8038.          WORD    number of 4K pages
  8039.         ---if "deassign"---
  8040.          DWORD    pointer returned by previous allocation call
  8041.         ---if "deassign gdt"---
  8042.          WORD    GDT selector
  8043.         ---if "getvpage"---
  8044.          WORD    owner's process ID
  8045.          DWORD    pointer to buffer for page structure (struct VPGE)
  8046.         ---if "setvpage"---
  8047.          WORD    owner's process ID
  8048.          DWORD    pointer to new page structure (struct VPGE)
  8049.         ---if "info"---
  8050.          no additional arguments
  8051.         ---if "move"
  8052.          DWORD    32-bit source address
  8053.          DWORD    32-bit destination address
  8054.          WORD    number of words to move
  8055.         ---if "newmcb"---
  8056.          DWORD    pointer to new MCB's location
  8057.          WORD    size of memory block
  8058.          DWORD    pointer to ASCIZ name string (max 8 chars)
  8059.         ---if "owner"---
  8060.          WORD    MCB or PSP segment
  8061.         ---if "umb"---
  8062.          WORD    size in paragraphs
  8063.         ---if "video"---
  8064.          no additional arguments
  8065. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  8066. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  8067. --------T-1502-------------------------------
  8068. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  8069.     AH = 02h
  8070.     AL = semaphore number (00h-3Fh)
  8071. Return: AH = status
  8072.         00h successful
  8073.         01h not semaphore owner
  8074.         02h invalid semaphore number
  8075. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  8076.       queue will become the new owner and be reawakened
  8077.     do not use within an interrupt handler
  8078. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  8079. --------B-1503-------------------------------
  8080. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  8081.     AH = 03h
  8082.     CX = number of bytes to write
  8083.     ES:BX -> data buffer
  8084. Return: CF clear if successful
  8085.         ES:BX -> byte following last byte written
  8086.     CF set on error
  8087.     AH = status (see #0335)
  8088.     CX = 0000h
  8089. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  8090. --------V-1503-------------------------------
  8091. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  8092.     AH = 03h
  8093.     AL = value (I,R,G,B bits)
  8094. Return: nothing
  8095. SeeAlso: AH=04h"Amstrad"
  8096. --------O-1503-------------------------------
  8097. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  8098.     AH = 03h
  8099.     STACK:    DWORD    pointer to ASCII prompt
  8100.         WORD    field outline character
  8101.         WORD    length of input field (max 7Fh)
  8102.         DWORD    address of pointer to input buffer
  8103. Return: AX = length of input (input buffer is padded with blanks)
  8104. SeeAlso: AH=04h"VMiX"
  8105. --------T-1503-------------------------------
  8106. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  8107.     AH = 03h
  8108.     DX = number of time slices to remain suspended
  8109. Return: after specified interval has elapsed
  8110. Note:    when priority-based scheduling is in use, high-priority tasks should
  8111.       use this function to yield the processor
  8112. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  8113. --------B-1504-------------------------------
  8114. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  8115.     AH = 04h
  8116.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0336)
  8117.     DS = segment containing ABIOS RAM extensions (zero if none)
  8118. Return: CF clear if successful
  8119.         AH = 00h success
  8120.         ES:DI buffer filled
  8121.         AL destroyed
  8122.     CF set on failure
  8123.         AX destroyed
  8124.         AH = 80h/86h if not supported
  8125. SeeAlso: AH=05h"ABIOS",AH=C1h
  8126.  
  8127. Format of ABIOS System Parameter Table:
  8128. Offset    Size    Description    (Table 0336)
  8129.  00h    DWORD    FAR address of ABIOS Common Start Routine
  8130.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  8131.  08h    DWORD    FAR address of ABIOS Time-out Routine
  8132.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  8133.  0Eh 16 BYTEs    reserved
  8134.  1Eh    WORD    number of entries in initialization table
  8135. --------V-1504-------------------------------
  8136. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  8137.     AH = 04h
  8138.     AL = value (RDSEL1 and RDSEL0)
  8139. Return: nothing
  8140. SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad"
  8141. --------O-1504-------------------------------
  8142. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  8143.     AH = 04h
  8144.     STACK:    DWORD    control string
  8145.         DWORD    array of arguments
  8146. Return: nothing
  8147. SeeAlso: AH=03h"VMiX"
  8148. --------T-1504-------------------------------
  8149. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  8150.     AH = 04h
  8151.     AL = mailbox number (00h-3Fh)
  8152.     CX = message length in bytes
  8153.     DS:SI -> message
  8154. Return: AH = status
  8155.         00h successful
  8156.         01h out of message memory
  8157.         02h invalid mailbox number
  8158. Note:    the message is copied into a system buffer; the caller may immediately
  8159.       reuse its buffer
  8160. SeeAlso: AH=05h"MultiDOS"
  8161. --------B-1505-------------------------------
  8162. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  8163.     AH = 05h
  8164.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0337)
  8165.     DS = segment containing ABIOS RAM extensions (zero if none)
  8166. Return: CF clear if successful
  8167.         AH = 00h success
  8168.         ES:DI buffer filled
  8169.         AL destroyed
  8170.     CF set on failure
  8171.         AX destroyed
  8172.         AH = 80h/86h if not supported
  8173. SeeAlso: AH=04h"ABIOS",AH=C1h
  8174.  
  8175. Format of one entry of ABIOS Initialization Table:
  8176. Offset    Size    Description    (Table 0337)
  8177.  00h    WORD    device ID (see #0338)
  8178.  02h    WORD    number of Logical IDs
  8179.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  8180.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  8181.  0Ah    WORD    request block length
  8182.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  8183.  0Eh    WORD    Data Pointers length (in Common Data Area)
  8184.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  8185.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  8186.  12h  6 BYTEs    reserved
  8187.  
  8188. (Table 0338)
  8189. Values for ABIOS device ID:
  8190.  00h    ABIOS internal calls
  8191.  01h    floppy disk
  8192.  02h    hard disk
  8193.  03h    video
  8194.  04h    keyboard
  8195.  05h    parallel port
  8196.  06h    serial port
  8197.  07h    system timer
  8198.  08h    real-time clock
  8199.  09h    system services
  8200.  0Ah    NMI
  8201.  0Bh    mouse
  8202.  0Eh    CMOS RAM
  8203.  0Fh    DMA
  8204.  10h    Programmable Option Select (POS)
  8205.  16h    keyboard password
  8206. --------V-1505-------------------------------
  8207. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  8208.     AH = 05h
  8209.     AL = value (I,R,G,B bits)
  8210. Return: nothing
  8211. SeeAlso: AH=04h"Amstrad"
  8212. --------O-1505-------------------------------
  8213. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  8214.     AH = 05h
  8215. Return: AX = process ID
  8216. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  8217. --------T-1505-------------------------------
  8218. INT 15 - MultiDOS Plus - CHECK MAILBOX
  8219.     AH = 05h
  8220.     AL = mailbox number (00h-3Fh)
  8221. Return: AH = status
  8222.         00h successful
  8223.         DX = length of first message in queue, 0000h if no message
  8224.         02h invalid mailbox number
  8225. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  8226. --------b-1506-------------------------------
  8227. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  8228.     AH = 06h
  8229. Return: BX = version number
  8230. --------O-1506-------------------------------
  8231. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  8232.     AH = 06h
  8233.     STACK:    WORD    process ID
  8234. Return: DX:AX -> process control block
  8235. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  8236. --------T-1506-------------------------------
  8237. INT 15 - MultiDOS Plus - READ MAILBOX
  8238.     AH = 06h
  8239.     AL = mailbox number (00h-3Fh)
  8240.     CX = size of buffer in bytes
  8241.     ES:DI -> buffer for message
  8242. Return: AH = status
  8243.         00h successful
  8244.         CX = number of bytes copied
  8245.         DX = actual length of message
  8246.         02h invalid mailbox number
  8247. Note:    if the caller's buffer is not large enough, the message is truncated
  8248.       and the remainder is lost
  8249. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  8250. --------O-1507-------------------------------
  8251. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  8252.     AH = 07h
  8253.     STACK:    WORD    object type
  8254. Return: DX:AX -> object control block
  8255. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  8256. ----------1507-------------------------------
  8257. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  8258.     AH = 07h
  8259. SeeAlso: AH=08h"IBM"
  8260. --------T-1507-------------------------------
  8261. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  8262.     AH = 07h
  8263.     BX:CX = entry point of new task
  8264.     DX = stack size in paragraphs
  8265. Return: AH = status
  8266.         00h successful
  8267.         01h no free task control blocks
  8268.         02h no free memory for task's stack
  8269. Note:    execution returns immediately to calling task
  8270. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  8271. --------O-1508-------------------------------
  8272. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  8273.     AH = 08h
  8274.     STACK:    WORD    channel ID
  8275. Return: DX:AX -> channel control block
  8276. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  8277. --------B-1508-------------------------------
  8278. INT 15 - IBM SurePath BIOS - WAIT REQUESTED TIME PERIOD
  8279.     AH = 08h
  8280.     AL = function
  8281.         00h wait in increments of 15.025 microseconds
  8282.         CX = number of time increments to wait (0000h = maximum)
  8283.         80h wait in increments of 840 ns
  8284.         ECX = number of time increments to wait
  8285.         81h I/O event wait
  8286.         BH = bitmask of bits to check
  8287.         BL = expected pattern
  8288.         DX = I/O port address
  8289.         ECX = number of 840 ns microticks to wait
  8290.         Return: ECX = 00000000h if expected pattern did not occur
  8291.         82h memory event wait
  8292.         BH = bitmask of bits to check
  8293.         BL = expected pattern
  8294.         ES:SI -> BYTE to check
  8295.         ECX = number of 840 ns microticks to wait
  8296.         Return: ECX = 00000000h if expected pattern did not occur
  8297.         other reserved
  8298. Return: CF clear if successful
  8299.     CF set on error
  8300.     AH = status
  8301.         00h successful
  8302.         01h used 15.025 microsecond interval, time rounded up
  8303.         08h reserved subfunction
  8304.         86h function not supported
  8305. Notes:    IBM classifies this function as optional
  8306.     if the POST determines that the timer is nonfunctional, this function
  8307.       uses the 15.025 microsecond refresh timer instead of the
  8308.       full-resolution timer
  8309. SeeAlso: AH=07h"IBM",AH=09h"IBM",AH=86h
  8310. --------T-1508-------------------------------
  8311. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  8312.     AH = 08h
  8313. Return: calling task terminated, so execution never returns to caller
  8314. Notes:    an internal task must be terminated with this function rather than a
  8315.       DOS termination function
  8316.     task's stack space is returned to parent task's memory pool
  8317. SeeAlso: AH=07h"MultiDOS"
  8318. --------O-1509-------------------------------
  8319. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  8320.     AH = 09h
  8321.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  8322.         WORD    subqueue ID
  8323. Return: AX = queue ID
  8324. SeeAlso: AH=0Ah"VMiX"
  8325. ----------1509-------------------------------
  8326. INT 15 - IBM BIOS - RESERVED FOR PCMCIA SYSTEM RESOURCE TABLE ACCESS
  8327.     AH = 09h
  8328.     no further details available
  8329. SeeAlso: AH=08h"IBM"
  8330. --------T-1509-------------------------------
  8331. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  8332.     AH = 09h
  8333.     AL = new priority
  8334. Return: nothing
  8335. Note:    the priority has different meanings depending on whether priority-
  8336.       based or round-robin scheduling is used
  8337. SeeAlso: AH=07h"MultiDOS"
  8338. --------O-150A-------------------------------
  8339. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  8340.     AH = 0Ah
  8341.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  8342.         WORD    ID of current element in queue chain
  8343. Return: AX = ID of next element
  8344. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  8345. --------T-150A-------------------------------
  8346. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  8347.     AH = 0Ah
  8348.     AL = new interval
  8349.         00h = 55.0 ms (default)
  8350.         80h = 27.5 ms
  8351.         40h = 13.75 ms
  8352.         20h = 6.88 ms
  8353.         10h = 3.44 ms
  8354.         08h = 1.72 ms
  8355. SeeAlso: AH=03h"MultiDOS"
  8356. --------O-150B-------------------------------
  8357. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  8358.     AH = 0Bh
  8359.     STACK:    WORD    caller's UID
  8360.         DWORD    pointer to ASCIZ name of requested method
  8361.             "abort" abort current send/receive on comm port
  8362.             "block" start/end critical section
  8363.             "close" terminate interrupt-drive comm I/O
  8364.             "open" prepare comm port for interrupt-driven I/O
  8365.             "delay" set delay timer and wait
  8366.             "hibernate" put process to sleep
  8367.             "ints" enable/disable interrupt-driven INT 14h
  8368.             "length" get current send/receive buffer offsets
  8369.             "kswitch" switch stacks
  8370.             "numproc" get number of active processes
  8371.             "protocol" set protocol function for comm interrupts
  8372.             "relocate" set/reset VMiX flag for relocating to himem
  8373.             "status" get current open comm port status
  8374.             "wake" awaken a process
  8375.             "xport" get comm port polled for logins
  8376.         ---if "abort"---
  8377.          no additional arguments
  8378.         ---if "block"---
  8379.          WORD    0000h end, 0001h start
  8380.         ---if "close"---
  8381.          no additional arguments
  8382.         ---if "open"---
  8383.          WORD    comm port (00h-03h)
  8384.          WORD    BIOS parameter byte (see #0226 at INT 14/AH=00h),
  8385.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  8386.         ---if "delay"---
  8387.          WORD    time in seconds
  8388.         ---if "hibernate"---
  8389.          WORD    process ID
  8390.         ---if "ints"---
  8391.          WORD    0000h if no, 0001h if yes
  8392.         ---if "length","numproc","relocate","status","xport"---
  8393.          no additional arguments
  8394.         ---if "kswitch"---
  8395.          DWORD    pointer to new stack
  8396.         ---if "protocol"---
  8397.          DWORD    pointer to function (must be in low "assign"ed memory
  8398.             when in 386 mode)
  8399.         ---if "wake"---
  8400.          WORD    process ID
  8401. Return: DX:AX -> result or 0000h:0000h
  8402.         ---if "length"---
  8403.          BYTE    receive offset
  8404.          BYTE    send offset
  8405.         ---if "kswitch"---
  8406.          DWORD    old stack pointer
  8407.         ---if "numproc"---
  8408.          WORD    number of active processes
  8409.         ---if "status"---
  8410.          current open comm port status
  8411.         ---if "xport"---
  8412.          current comm port being polled for logins
  8413. Note:    the "delay" command reportedly disables the keyboard until the delay
  8414.       completes
  8415. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  8416. --------T-150B-------------------------------
  8417. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  8418.     AH = 0Bh
  8419. Return: nothing
  8420. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  8421.       may be restored with AH=0Ch
  8422.     caller's video mode must be same as foreground task's video mode
  8423.     any text written while in the background will be saved to the
  8424.       foreground task's virtual screen when it switches to the background
  8425.     useful if a background task wants to display a message on the
  8426.       foreground screen
  8427. SeeAlso: AH=0Ch"MultiDOS"
  8428. --------O-150C-------------------------------
  8429. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  8430.     AH = 0Ch
  8431.     STACK:    WORD    process ID
  8432. Return: DX:AX -> TSS stack store
  8433. SeeAlso: AH=00h"VMiX"
  8434. --------T-150C-------------------------------
  8435. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  8436.     AH = 0Ch
  8437. Return: nothing
  8438. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  8439.       unless AH=0Bh has been called first
  8440. SeeAlso: AH=0Bh"MultiDOS"
  8441. --------O-150D-------------------------------
  8442. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  8443.     AH = 0Dh
  8444.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  8445.             followed by standard VMiX shell command string
  8446. Return: AX = process ID or error code "SYS_ERROR"
  8447. Note:    the maximum string length is 7Fh characters
  8448. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  8449. --------T-150D-------------------------------
  8450. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  8451.     AH = 0Dh
  8452. Return: nothing
  8453. Note:    calling task receives all time slices until AH=0Eh is called; this
  8454.       allows time-critical events or nonreentrant code to be processed
  8455. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  8456. --------O-150E-------------------------------
  8457. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  8458.     AH = 0Eh
  8459.     STACK:    WORD    process ID
  8460. Return: AX = status (SYS_OK or SYS_ERROR)
  8461. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  8462. --------T-150E-------------------------------
  8463. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  8464.     AH = 0Eh
  8465. Return: nothing
  8466. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  8467. --------d-150F-------------------------------
  8468. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  8469.     AH = 0Fh
  8470.     AL = phase code
  8471.         00h reserved
  8472.         01h surface analysis
  8473.         02h formatting
  8474. Return: CF clear if formatting should continue
  8475.     CF set if formatting should terminate
  8476. Note:    called during ESDI drive formatting after each cylinder is completed
  8477. SeeAlso: INT 13/AH=1Ah
  8478. --------O-150F-------------------------------
  8479. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  8480.     AH = 0Fh
  8481.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  8482.         WORD    ID of element in queue chain
  8483. Return: AX = key
  8484. SeeAlso: AH=0Ah"VMiX"
  8485. --------T-150F-------------------------------
  8486. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  8487.     AH = 0Fh
  8488.     DS:BX -> ASCIZ command
  8489. Return: after command has been processed
  8490. Notes:    specified string is executed as if it had been typed at the MultiDOS
  8491.       command prompt
  8492.     the task is placed on a queue which MultiDOS examines periodically and
  8493.       is suspended until MultiDOS has processed the command
  8494.     all lowercase characters up to the first blank are converted to upper
  8495.       case within the given buffer
  8496. --------O-1510-------------------------------
  8497. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  8498.     AH = 10h
  8499.     STACK:    DWORD    pointer to function
  8500.           N WORDs    function args
  8501. Return: AX = function's return value??? (not specified in documentation)
  8502. Note:    while the function is executing, the following global descriptors are
  8503.       available:
  8504.         20h stack segment
  8505.         38h code segment of function
  8506.         40h data alias for function's code segment
  8507.       additional GDT descriptors can be allocated using AH=02h with
  8508.       function "assign gdt"
  8509. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  8510. --------T-1510-------------------------------
  8511. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  8512.     AH = 10h
  8513.     AL = semaphore number (00h-3Fh)
  8514. Return: AH = status
  8515.         00h semaphore not in use
  8516.         01h semaphore owned by another task
  8517.         02h invalid semaphore number
  8518.         03h semaphore owned by caller
  8519. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  8520. --------Q-151000-----------------------------
  8521. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  8522.     AX = 1000h
  8523. Return: after other processes run
  8524. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  8525.       the current time-slice is set to expire at the next clock tick rather
  8526.       than immediately
  8527. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  8528. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
  8529. SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
  8530. --------Q-151001-----------------------------
  8531. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  8532.     AX = 1001h
  8533.     BX = number of bytes to allocate
  8534. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  8535.     AX = status (DV v2.42)
  8536.         0000h successful
  8537.         0001h failed
  8538. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  8539.       common memory.  Under DV v2.42, this call never generates a user
  8540.       prompt regardless of the SETERROR value; instead, it always returns
  8541.       AX=0001h and ES:DI=0000h:0000h if out of memory
  8542. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  8543. --------Q-151002-----------------------------
  8544. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  8545.     AX = 1002h
  8546.     ES:DI -> previously allocated block
  8547. Return: block freed
  8548. SeeAlso: AX=1001h,AX=DE0Dh
  8549. --------Q-151003-----------------------------
  8550. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  8551.     AX = 1003h
  8552.     BH = attribute
  8553.     BL = character
  8554.     DX = segment of object handle for window
  8555. Return: nothing
  8556. Note:    BX=0000h does not display anything, it only positions the hardware
  8557.       cursor to the logical cursor's current position
  8558. --------Q-1510-------------------------------
  8559. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  8560.     AH = 10h
  8561.     AL = 04h thru 12h
  8562. Return: pops up "Programming error" window in DV 2.x
  8563. --------Q-151013-----------------------------
  8564. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  8565.     AX = 1013h
  8566.     ES:DI -> FAR service routine
  8567. Return: BX = bit mask indicating which bit was allocated
  8568.         0000h if no more bits available
  8569. SeeAlso: AX=1014h,AX=1015h
  8570. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  8571.       interrupt; if other calls need to be made, the interrupt handler
  8572.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  8573. --------Q-151014-----------------------------
  8574. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  8575.     AX = 1014h
  8576.     BX = bit mask from INT 15/AX=1013h
  8577. Return: nothing
  8578. SeeAlso: AX=1013h,AX=1015h
  8579. --------Q-151015-----------------------------
  8580. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  8581.     AX = 1015h
  8582.     BX = bit mask for interrupts to post
  8583. Return: indicated routines will be called: (DV 2.0x) at next task switch
  8584.                        (DV 2.2x) immediately on return from
  8585.                              hardware interrupt
  8586. Notes:    this is one of the few TopView calls which are allowed from a hardware
  8587.       interrupt handler
  8588.     the handler will be called with ES containing the segment of the handle
  8589.       of the next task to be executed; on return, ES must be the segment of
  8590.       a task handle
  8591. SeeAlso: AX=1013h,AX=1014h
  8592. --------Q-151016-----------------------------
  8593. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  8594.     AX = 1016h
  8595.     ES:DI = possible object handle
  8596. Return: BX = status
  8597.         FFFFh if ES:DI is a valid object handle (see #0340)
  8598.         0000h if ES:DI is not
  8599. Note:    under DESQview versions prior to 2.50, an object handle is always a
  8600.       pointer to the object; for versions 2.50 and up, only task handles
  8601.       are always pointers--other handles may consist of a unique object
  8602.       number and offset into DESQview's common memory (see #0349)
  8603. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  8604.  
  8605. (Table 0339)
  8606. Values for DESQview object type:
  8607.  00h    window/task
  8608.  01h    mailbox
  8609.  02h    keyboard
  8610.  03h    timer
  8611.  04h    pointer
  8612.  05h    panel
  8613.  06h    objectq
  8614.  
  8615. Format of DESQview object:
  8616. Offset    Size    Description    (Table 0340)
  8617.  00h    WORD    offset in common memory of previous object of same type
  8618.  02h    WORD    offset in common memory of next object of same type
  8619.  04h    WORD    signature FEDCh (DV 2.42-)
  8620.         signature FEDCh or object number (DV 2.50+)
  8621.  06h    WORD    object type (see #0339)
  8622.  08h    DWORD    object handle to return to caller
  8623.  0Ch    DWORD    canonicalized object address (segment = common memory)
  8624.  10h    WORD    offset in common memory of owning task
  8625.         (0000h for unowned OBJECTQs)
  8626.  12h    WORD    mapping context
  8627.         offset in common memory of mapping context record (see #0342)
  8628.     remainder varies by object type and DESQview version
  8629. ---v2.42 keyboard object---
  8630.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  8631.         bit 15: keyboard opened
  8632.  16h  4 BYTEs    ???
  8633.  1Ah    WORD    priority in OBJECTQ???
  8634.  1Ch    ...
  8635.  25h    WORD    offset in common memory of ??? task
  8636.  27h  4 BYTEs    ???
  8637. ---v2.42 objectq object---
  8638.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  8639.         bit 15: OBJECTQ opened
  8640.  16h  2 BYTEs    ???
  8641.  18h    WORD    offset in common memory of ??? task
  8642.  1Ah  6 BYTEs    ???
  8643. ---v2.42 mailbox object---
  8644.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  8645.         bit 15: mailbox opened
  8646.  1Ah    WORD    priority in OBJECTQ???
  8647.  1Ch  6 BYTEs    ???
  8648.  22h    WORD    offset in common memory of mailbox name (counted string)
  8649.         0000h if no name
  8650.     <= 5 BYTEs    ???
  8651. ---v2.22-2.42,2.52,2.60 window/task object---
  8652.  14h    BYTE    00h window, 01h task
  8653.  15h    BYTE    internal (not Switch menu) window number???
  8654.  16h    BYTE    internal (not Switch menu) window number???
  8655.  17h    WORD    segment of internal window record (see #0343)
  8656.  19h  2 BYTEs    ???
  8657.  1Bh    BYTE    cursor row
  8658.  1Ch    BYTE    cursor column
  8659.  1Dh    BYTE    visible window origin, row
  8660.  1Eh    BYTE    visible window origin, column
  8661.  1Fh    BYTE    window height (logical)
  8662.  20h    BYTE    window width (logical)
  8663.  21h    BYTE    window position, row
  8664.  22h    BYTE    window position, column
  8665.  23h    BYTE    window height (visible)
  8666.  24h    BYTE    window width (visible)
  8667.  25h    BYTE    row of top of frame (or window if unframed)
  8668.  26h    BYTE    column of left of frame (or window if unframed)
  8669.  27h    BYTE    window height (physical, including frame)
  8670.  28h    BYTE    window width (physical, including frame)
  8671.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  8672.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  8673.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  8674.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  8675.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  8676.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  8677.         unzoomed parameters above are updated when window is zoomed
  8678.           to full screen
  8679.  2Fh    BYTE    ??? initially logical window height
  8680.  30h    BYTE    ??? initially logical window width
  8681.  31h  2 BYTEs    ???
  8682.  33h    BYTE    minimum height of window
  8683.  34h    BYTE    minimum width of window
  8684.  35h    BYTE    maximum height of window
  8685.  36h    BYTE    maximum width of window
  8686.  37h  3 BYTEs    ???
  8687.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  8688.  42h 24 BYTEs    attributes???
  8689.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  8690.  62h  3 BYTEs    ???
  8691.  65h    BYTE    ??? bitflags
  8692.  66h    BYTE    bit 0: window is zoomed
  8693.  67h    BYTE    ???
  8694.  68h    WORD    offset in common memory of window name or 0000h if untitled
  8695.  6Ah    WORD    length of window name
  8696.  6Ch  2 BYTEs    ???
  8697.  6Eh    WORD    offset of logical cursor in window (in character cells)
  8698.  70h    DWORD    pointer to field table for window
  8699.  74h    BYTE    ???
  8700.  75h  2 BYTEs    ???
  8701.  77h    BYTE    number of last-visited field
  8702.  78h    DWORD    pointer to field table entry for last-visited field
  8703.  7Ch  3 BYTEs    ???
  8704.  7Fh    BYTE    select field marker character
  8705.  80h    BYTE    ??? bit flags
  8706.         bit 0: allow ECh window stream opcode to change reverse logattr
  8707.         bit 1: alternate field processing mode selected
  8708.  81h    BYTE    ???
  8709.  82h    DWORD    notification function (manager stream opcode 8Ah)
  8710.         no notification if segment = 0000h
  8711.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  8712.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  8713.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  8714.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  8715.  90h    BYTE    ??? bitflags
  8716.  91h    BYTE    ???
  8717.  ---task object only
  8718.  92h    BYTE    bit flags (bits 0-4)
  8719.  93h    BYTE    character for ??? (default 20h)
  8720.  94h    BYTE    ??? flag
  8721.  95h    WORD    offset in common memory of ???
  8722.  97h  2 BYTEs    ???
  8723.  99h    WORD    ???
  8724.  9Bh    BYTE    ??? bit flags
  8725.         bit 3: ???
  8726.         bit 6: perform protected-attribute processing on select fields
  8727.  9Ch    BYTE    ???
  8728.  9Dh    WORD    offset in common memory of current register save record
  8729.           (see #0341).    No register save record in use if < 01C0h
  8730.  9Fh    WORD    offset in common memory of task's keyboard object
  8731.  A1h    WORD    offset in common memory of task's OBJECTQ object
  8732.  A3h    WORD    offset in common memory of task's mailbox object
  8733.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  8734.  A7h    DWORD    user's SS:SP
  8735.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  8736.  ADh  6 BYTEs    ???
  8737.  B3h    BYTE    ??? bit flags
  8738.         bit 0: run in foreground only
  8739.  B4h    BYTE    ???
  8740.  B5h    BYTE    ??? bitflags
  8741.  B6h    BYTE    task status (see #0479 at AX=DE2Ch)
  8742.  B7h  9 BYTEs    ???
  8743.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  8744.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  8745.  C4h  2 BYTEs    ??? (0000h)
  8746.  C6h    WORD    segment of keyboard buffer for task
  8747.  C8h    WORD    offset in common memory of ??? keyboard object
  8748.  CAh    BYTE    ???
  8749. ---v2.22-2.42
  8750.  CBh    WORD    offset in common memory of ??? object
  8751.  CEh    BYTE    ??? flag
  8752.  CFh    WORD    offset in common memory of default notify window for task
  8753.           or 0000h if none
  8754.  D1h  4 BYTEs    ???
  8755.  D5h    BYTE    window number on Switch Window menu
  8756.  D6h  5 BYTEs    ???
  8757.  DBh    WORD    offset in common memory of ??? object
  8758.  DDh  2 BYTEs    ???
  8759.  DFh    WORD    API level for task
  8760.  E1h    WORD    offset in common memory of object task is waiting on if task
  8761.           status is 'waiting', else 0000h
  8762.  E7h    WORD    segment of ???
  8763.  E9h 4    BYTEs    ???
  8764.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  8765.  F1h 12 BYTEs    ???
  8766.  FBh    WORD    ???
  8767.  FDh    BYTE    ???
  8768.  FFh 12 BYTEs    ???
  8769. 10Bh    DWORD    pointer to process record (see #0344,#0345)
  8770. 10Dh 10 BYTEs    ???
  8771. 119h    DWORD    SS:SP for ???
  8772. 11Dh  4 BYTEs    ???
  8773. 121h    DWORD    pointer to ???
  8774. 125h 25 BYTEs    ???
  8775. 13Eh    DWORD    pointer to ??? in system memory
  8776. ---v2.22
  8777. 142h  3 BYTEs    ???
  8778. 145h        task's default keyboard object
  8779. ---v2.42
  8780. 142h    DWORD    pointer to first task instance data record in system memory
  8781. 148h    DWORD    pointer to last task instance data record in system memory
  8782.         (see #0346)
  8783. 14Ah    BYTE    ???
  8784. 14Dh 42 BYTEs    task's default keyboard object
  8785. 177h 32 BYTEs    task's ObjectQ object
  8786. 197h 41 BYTEs    task's default mailbox object
  8787. 1C0h 24 BYTEs    first register save record
  8788. 450h    --    default top of private stack
  8789. ---v2.52 (probably all DV/X)
  8790. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  8791.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  8792.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  8793.   0000h even when waiting.
  8794. ---v2.60
  8795.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  8796.  CDh    WORD    offset in common memory of ??? object
  8797.  D0h    BYTE    ??? flag
  8798.  D1h    WORD    offset in common memory of default notify window for task
  8799.           or 0000h if none
  8800.  D3h  4 BYTEs    ???
  8801.  D7h    BYTE    window number on Switch Window menu
  8802.  D8h  5 BYTEs    ???
  8803.  DDh    WORD    offset in common memory of ??? object
  8804.  DFh  2 BYTEs    ???
  8805.  E1h    WORD    API level for task
  8806.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  8807.           that task is waiting on, else 0000h. (Task with CPU also
  8808.           has 0000h here)
  8809.  E9h    WORD    segment of ???
  8810.  EBh 4    BYTEs    ???
  8811.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  8812.  F3h 12 BYTEs    ???
  8813.  FDh    WORD    ???
  8814.  FFh    BYTE    ???
  8815. 101h  8 BYTEs    ???
  8816. 109h    DWORD    pointer to process record in system memory
  8817. 10Dh 14 BYTEs  ???
  8818. 11Bh    DWORD    SS:SP for ???
  8819. 11Fh  4 BYTEs    ???
  8820. 123h    DWORD    pointer to ???
  8821. 127h 25 BYTEs    ???
  8822. 140h    DWORD    pointer to ??? in system memory
  8823. 144h    DWORD    pointer to first task instance data record in system memory
  8824. 148h    DWORD    pointer to last task instance data record in system memory
  8825.         (from INT 15/AX=DE27h) (see #0346)
  8826. 14Ch    BYTE    ???
  8827. 14Eh 42 BYTEs    task's default keyboard object
  8828. 179h 32 BYTEs    task's ObjectQ object
  8829. 199h 41 BYTEs    task's default mailbox object
  8830. 1C2h 24 BYTEs    first register save record
  8831. 452h    --    default top of private stack
  8832.  
  8833. Format of DESQview Register Save Record:
  8834. Offset    Size    Description    (Table 0341)
  8835.  00h    WORD    AX
  8836.  02h    WORD    BX
  8837.  04h    WORD    CX
  8838.  06h    WORD    DX
  8839.  08h    WORD    DI
  8840.  0Ah    WORD    SI
  8841.  0Eh    WORD    DS
  8842.  10h    WORD    ES
  8843.  12h    DWORD    return address
  8844.  16h    WORD    original flags
  8845.  
  8846. Format of DESQview mapping context record:
  8847. Offset    Size    Description    (Table 0342)
  8848.  00h    WORD    lowest segment in process's memory
  8849.         (often start of system memory chain)
  8850.  02h    WORD    size of process's memory in paragraphs
  8851.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  8852.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  8853.  06h  2 BYTEs    ???
  8854.  08h    WORD    EMS handle if in EMS, else 0
  8855.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  8856.  0Ch    WORD    segment of system memory block that contains process record,
  8857.           referenced from segment of start of system memory chain
  8858.  0Eh    BYTE    ???
  8859.  0Fh    WORD    size of system memory block that contains process record
  8860.           and DOS memory in paragraphs
  8861.  11h    BYTE    bit flags
  8862.         Bit 0: Swapped out???
  8863.         Bit 1: ???
  8864.         Bit 2: Swapped out???
  8865.  12h    BYTE    ???
  8866.  13h    BYTE    reference count
  8867.  ---v2.31
  8868.  14h 10 BYTEs    ???
  8869.  1Eh    WORD    segment of process record
  8870.  20h  2 BYTEs    ???
  8871.  22h    WORD    segment of ???    (in first free system memory block???)
  8872.  24h    WORD    segment of end of system memory chain
  8873.  26h    WORD    segment of start of system memory chain
  8874.  28h  8 BYTEs    ???
  8875.  2Ah    DWORD    pointer to ??? (process record???)
  8876.  2Dh 10 BYTEs    ???
  8877.  37h    BYTE    lowest interrupt vector to save on context switch
  8878.  38h    BYTE    highest interrupt vector to save on context switch
  8879.  39h    WORD    offset in common memory of main task with this context
  8880.  3Ah 12 BYTEs    ???
  8881.  46h    BYTE    internal mapping context number
  8882.  47h 12 BYTEs    ???
  8883.  ---v2.5x-2.60
  8884.  14h  6 BYTEs    ???
  8885.  1Ah    WORD    segment of process record
  8886.  1Ch  2 BYTEs    ???
  8887.  1Eh    WORD    segment of first free system memory block
  8888.  20h    WORD    segment of start of system memory chain
  8889.  22h    WORD    segment of end of system memory chain
  8890.  24h 8    BYTEs    ???
  8891.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  8892.  30h 3    BYTEs    ???
  8893.  33h    WORD    Offset in common memory of main task with this context
  8894.  35h 7    BYTEs    ???
  8895.  3Ch    BYTE    internal mapping context number
  8896.  3Dh 14 BYTEs    ???
  8897.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  8898.  4Dh    BYTE    ??? (flag???)
  8899.  ---v2.53 (2.5x???)
  8900.  4Eh 12 BYTEs    ???
  8901.  ---v2.60
  8902.  4Eh    WORD    segment of script buffer (see #0347)
  8903.  50h  6 BYTEs    ???
  8904.  
  8905. Format of DESQview Internal Window Record (v2.31-2.60):
  8906. Offset    Size    Description    (Table 0343)
  8907.  00h    BYTE    internal window number???
  8908.  01h    BYTE    display page???
  8909.  02h    BYTE    video mode
  8910.  03h  3 BYTEs    ???
  8911.  06h    BYTE    logical window height
  8912.  07h    BYTE    logical window width
  8913.  08h    DWORD    pointer to text video buffer
  8914.  0Ch 116 BYTEs    ???
  8915.  
  8916. Format of DESQview process record (v2.31):
  8917. Offset    Size    Description    (Table 0344)
  8918. -470h 13 BYTEs    filename of ??? Script
  8919. -463h 1117 BYTEs ??? (script buffer???)
  8920.  -6h  6 BYTEs    ???
  8921.  00h    WORD    segment of parent PSP in process
  8922.  02h  5 BYTEs    ???
  8923.  07h    WORD    segment of current PSP in process
  8924.  09h    WORD    segment of first MCB in process
  8925.  0Bh 13 BYTEs    ???
  8926.  18h 1024 BYTEs process's interrupt vector table
  8927. 418h 376 BYTEs    ???
  8928. 590h        first MCB in process
  8929. SeeAlso: #0345
  8930.  
  8931. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  8932. Offset    Size    Description    (Table 0345)
  8933.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  8934.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  8935. 11Ch    WORD    segment of parent PSP in process
  8936. 11Eh  4 BYTEs    ???
  8937. 122h    WORD    segment of current PSP
  8938. 124h    WORD    segment of current PSP
  8939. 126h    WORD    segment of first MCB in process
  8940. 128h  4 BYTEs    ???
  8941. 12Ch    DWORD    pointer to first process instance data record in system memory
  8942. 130h    DWORD    pointer to last process instance data record in system memory
  8943.         (from INT 15/AX=DE27h) (see #0346)
  8944. 134h  8 BYTEs    ???
  8945. 13Ch    WORD    size of current environment
  8946. 13Eh    WORD    segment of current environment
  8947. 140h    WORD    segment of current PSP
  8948. 142h    DWORD    entry point of current program
  8949. 146h 10 BYTEs    ???
  8950. ---v2.52 (v2.5x???)
  8951. 150h    BYTE    ???
  8952. 151h    WORD    segment of parent PSP in process
  8953. 153h    WORD    ???
  8954. 155h    WORD    ???
  8955. 157h    WORD    ???
  8956. 159h  4 BYTEs    ???
  8957. 15Dh    WORD    segment of current environment
  8958. 15Fh    WORD    segment of current PSP
  8959. 161h    WORD    segment of ???
  8960. 162h    WORD    ???
  8961. 164h  3 BYTEs    ???
  8962. 168h 1024 BYTEs process's interrupt vector table
  8963. 568h 120 BYTEs    ???
  8964. 5E0h        first MCB in process
  8965. ---v2.60
  8966. 150h    WORD    segment of parent PSP in process
  8967. 152h    WORD    ???
  8968. 154h    WORD    ???
  8969. 156h    WORD    ???
  8970. 158h  4 BYTEs    ???
  8971. 15Ch    WORD    segment of current environment
  8972. 15Eh    WORD    segment of current PSP
  8973. 160h    WORD    segment of ???
  8974. 162h    WORD    ???
  8975. 164h 1024 BYTEs process's interrupt vector table
  8976. 564h 108 BYTEs    ???
  8977. 5D0h        first MCB in process
  8978. SeeAlso: #0344
  8979.  
  8980. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  8981. Offset    Size    Description    (Table 0346)
  8982.  00h    DWORD    pointer to next record of same type or 00000000
  8983.  04h    DWORD    pointer to previous record of same type or 00000000
  8984.  08h    DWORD    pointer to source area of memory during restore state
  8985.  0Ch    WORD    number of bytes to save/restore
  8986.  0Eh    DWORD    pointer to destination area of memory during restore state
  8987.  12h    WORD    ??? (0)
  8988.  14h  N BYTEs    source memory buffer during restore state
  8989.  
  8990. Format of DESQview script buffer (v2.60):
  8991. Offset    Size    Description    (Table 0347)
  8992.  00h 13 BYTEs    ASCIZ Script filename
  8993.  0Dh 80 BYTEs    ???
  8994.  5Eh  N BYTEs    script records (see #0348)
  8995.  
  8996. Format of one DESQview script record (v2.60):
  8997. Offset    Size    Description    (Table 0348)
  8998.  00h    BYTE    signature 12h
  8999.  01h 18 BYTEs    blank-padded script name
  9000.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  9001.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  9002.  15h    BYTE    ???
  9003.  16h    WORD    size of script in bytes
  9004.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  9005.           scan code of non-ASCII key)
  9006. SeeAlso: #0347
  9007.  
  9008. Format of DESQview Common Memory Header (v2.31-2.60):
  9009. Offset    Size    Description    (Table 0349)
  9010.  00h    WORD    offset of lowest used block
  9011.  02h    WORD    bytes of commom memory, including header
  9012.  04h    WORD    offset of first free block
  9013.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  9014. Note:    the above is located at the beginning of the commom memory segment
  9015. SeeAlso: #0350,#0351,#0359
  9016.  
  9017. Format of DESQview Free block header:
  9018. Offset    Size    Description    (Table 0350)
  9019.  00h    WORD    size of block in bytes including header
  9020.  02h    WORD    offset of next free block
  9021.  04h  N BYTEs    free block
  9022. SeeAlso: #0349,#0351
  9023.  
  9024. Format of DESQview Used block header:
  9025. Offset    Size    Description    (Table 0351)
  9026.  00h    WORD    size of block in bytes including header
  9027.  02h  N BYTEs    used block
  9028. SeeAlso: #0349,#0350
  9029. --------Q-151017-----------------------------
  9030. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  9031.     AX = 1017h
  9032. Return: pops up "Programming error" window in DV 2.x
  9033. --------Q-151018-----------------------------
  9034. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  9035.     AX = 1018h
  9036.     BH = column
  9037.     BL = row
  9038.     ES = segment of object handle for window below which to search
  9039.         0000h = start search with topmost window
  9040. Return: ES = segment of object handle for window which is visible at the
  9041.            indicated position, or covered by indicated window
  9042.         0000h if no window
  9043. SeeAlso: AX=1023h,AX=1024h
  9044. --------Q-151019-----------------------------
  9045. INT 15 - TopView - "SOUND" - MAKE TONE
  9046.     AX = 1019h
  9047.     BX = frequency in Hertz (0000h = silence)
  9048.     CX = duration in clock ticks (18.2 ticks/sec)
  9049. Return: immediately, tone continues to completion
  9050. Notes:    if another tone is already playing, the new tone does not start until
  9051.       completion of the previous one.  Up to 32 tones may be queued before
  9052.       the process is blocked until a note completes.
  9053.     in DV 2.00, the lowest tone allowed is 20 Hz
  9054.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  9055.       notes are also cancelled
  9056. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  9057. --------Q-15101A-----------------------------
  9058. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  9059.     AX = 101Ah
  9060. Return: stack switched
  9061. Notes:    this call may not be nested; a second call must be preceded by a call
  9062.       to "USTACK" (AX=1025h)
  9063.     while TopView requires many API calls to be executed while on the
  9064.       task's internal stack, DESQview allows those calls to be executed
  9065.       regardless of the current stack
  9066. SeeAlso: AX=1025h
  9067. --------Q-15101B-----------------------------
  9068. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  9069.     AX = 101Bh
  9070. Return: task-switching temporarily disabled
  9071. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  9072.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  9073.       will again be disabled)
  9074.     suspends the caller until DOS is free
  9075. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  9076. SeeAlso: INT 60/DI=0602h
  9077. --------Q-15101C-----------------------------
  9078. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  9079.     AX = 101Ch
  9080. Return: task-switching enabled
  9081. Note:    this API call may be made from within a hardware interrupt handler
  9082. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  9083. --------Q-15101D-----------------------------
  9084. INT 15 - TopView - "STOP" - STOP TASK
  9085.     AX = 101Dh
  9086.     ES = segment of object handle for task to be stopped
  9087.         (== handle of main window for that task)
  9088. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  9089. Note:    once a task has been stopped, additional "STOP"s are ignored
  9090. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  9091.       current task
  9092. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  9093. --------Q-15101E-----------------------------
  9094. INT 15 - TopView - "START" - START TASK
  9095.     AX = 101Eh
  9096.     ES = segment of object handle for task to be started
  9097.         (== handle of main window for that task)
  9098. Return: indicated task is started up again
  9099. Note:    once a task has been started, additional "START"s are ignored
  9100. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  9101. --------Q-15101F-----------------------------
  9102. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  9103.     AX = 101Fh
  9104.     BX = bit fields
  9105.         bits 0-12: number of characters to display
  9106.         bits 13,14: which mouse button may be pressed to remove window
  9107.              00 = either
  9108.              01 = left
  9109.              10 = right
  9110.              11 = either
  9111.         bit 15: beep if 1
  9112.     ES:DI -> text of message
  9113.     CH = width of error window (0 = default)
  9114.     CL = height of error window (0 = default)
  9115.     DX = segment of object handle
  9116. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  9117. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  9118. --------Q-151020-----------------------------
  9119. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  9120.     AX = 1020h
  9121. Return: pops up "Programming error" window in DV v2.00+
  9122. --------Q-151021-----------------------------
  9123. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  9124.     AX = 1021h
  9125.     BX = segment of object handle for task to interrupt (not self)
  9126.     DX:CX -> FAR routine to jump to next time task is run
  9127. Return: nothing
  9128. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  9129.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  9130.       needs to be preserved
  9131.     multiple PGMINTs to a single task are processed last-in first-out
  9132.     if the other task is in a DOS or DV API call, the interruption will
  9133.       occur on return from that call
  9134. --------Q-151022BX0000-----------------------
  9135. INT 15 - TopView - "GETVER" - GET VERSION
  9136.     AX = 1022h
  9137.     BX = 0000h
  9138. Return: BX nonzero, TopView or compatible loaded
  9139.     (BL = major version, BH = minor version)
  9140. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  9141. --------Q-151023-----------------------------
  9142. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  9143.     AX = 1023h
  9144.     BX = segment of object handle for parent window within which to
  9145.            position the window (0 = full screen)
  9146.     ES = segment of object handle for window to be positioned
  9147.     DL = general window position (see #0352)
  9148.     CH = number of columns to offset from position specified by DL
  9149.     CL = number of rows to offset from position specified by DL
  9150. Return: nothing
  9151.  
  9152. Bitfields for TopView general window position:
  9153. Bit(s)    Description    (Table 0352)
  9154.  0,1    horizontal position
  9155.     00 = current, 01 = center, 10 = left, 11 = right
  9156.  2,3    vertical position
  9157.     00 = current, 01 = center, 10 = top, 11 = bottom
  9158.  4    don't redraw screen if set
  9159.  5-7    not used
  9160. --------Q-151024-----------------------------
  9161. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  9162.     AX = 1024h
  9163.     BX = segment of object handle for window (0000h = use default)
  9164. Return: ES:DI -> virtual screen
  9165.     CX = size of virtual screen in bytes
  9166.     DL = screen type
  9167.         00h text screen
  9168.         01h graphics screen
  9169. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  9170. --------Q-151025-----------------------------
  9171. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  9172.     AX = 1025h
  9173. Return: stack switched back
  9174. Notes:    call only after having switched to internal stack with AX=101Ah
  9175.     while TopView requires many API calls to be executed while on the
  9176.       task's private stack, DESQview allows those calls to be executed
  9177.       regardless of the current stack
  9178. SeeAlso: AX=101Ah
  9179. --------Q-1510-------------------------------
  9180. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  9181.     AH = 10h
  9182.     AL = 26h thru 2Ah
  9183. Return: pops up "Programming error" window in DV 2.x
  9184. --------Q-15102B-----------------------------
  9185. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  9186.     AX = 102Bh
  9187.     BX = segment of object handle for task
  9188. Return: nothing
  9189. Note:    forces a task which is waiting on its objectq to continue by placing
  9190.       the handle for the task on the objectq
  9191. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  9192. --------Q-15102C-----------------------------
  9193. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  9194.     AX = 102Ch
  9195.     ES:DI -> contents of .PIF/.DVP file (see #0353)
  9196.     BX = size of .PIF/.DVP info
  9197. Return: BX = segment of object handle for new task
  9198.         0000h on error
  9199. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  9200.  
  9201. Format of .PIF/.DVP file:
  9202. Offset    Size    Description    (Table 0353)
  9203.  00h    BYTE    reserved (0)
  9204.  01h    BYTE    checksum of bytes 02h through 170h
  9205.  02h 30 BYTEs    blank-padded program title
  9206.  20h    WORD    maximum memory to allocate to partition in KB
  9207.  22h    WORD    minimum memory required in KB
  9208.  24h 64 BYTEs    ASCIZ program pathname
  9209.  64h    BYTE    default drive letter ('A',...)
  9210.  65h 64 BYTEs    ASCIZ default directory name
  9211.  A5h 64 BYTEs    ASCIZ program parameters
  9212.  E5h    BYTE    initial screen mode (0-7) (also see offset 189h)
  9213.  E6h    BYTE    number of text pages used
  9214.  E7h    BYTE    number of first interrupt to save
  9215.  E8h    BYTE    number of last interrupt to save
  9216.  E9h    BYTE    rows in virtual screen buffer
  9217.  EAh    BYTE    columns in virtual screen buffer
  9218.  EBh    BYTE    initial window position, row
  9219.  ECh    BYTE    initial window position, column
  9220.  EDh    WORD    system memory in KB
  9221.  EFh 64 BYTEs    ASCIZ shared program name
  9222. 12Fh 64 BYTEs    ASCIZ shared program data file
  9223. 16Fh    BYTE    program flags 1 (see #0354)
  9224. 170h    BYTE    flags2
  9225.         bit 6: uses command-line parameters in field at A5h
  9226.         bit 5: swaps interrupt vectors
  9227. ---information unique to .DVP files---
  9228. 171h  2 BYTEs    keys to use on open menu
  9229. 173h    WORD    size of script buffer in bytes
  9230. 175h    WORD    automatically give up CPU after this many tests for keyboard
  9231.           input in one clock tick (default 0 = never)
  9232. 177h    BYTE    nonzero = "uses own colors"
  9233. 178h    BYTE    nonzero if application swappable
  9234. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  9235.         in actual .DVP files, frequently 01h
  9236. 17Ch    BYTE    nonzero to automatically close on exit (see also #0356)
  9237. 17Dh    BYTE    nonzero if copy-protect floppy is required
  9238. ---information unique to DESQview 2.0+---
  9239. 17Eh    BYTE    .DVP version number
  9240.         00h DESQview v1.2+
  9241.         01h DESQview v2.0+
  9242.         02h DESQview v2.2+
  9243. 17Fh    BYTE    reserved (0)
  9244. 180h    BYTE    initial number of rows in physical window
  9245. 181h    BYTE    initial number of columns in physical window
  9246. 182h    WORD    maximum expanded memory to allow, in KB
  9247. 184h    BYTE    DVP program flags 3 (see #0355)
  9248. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  9249.         (see #0357)
  9250. 186h    BYTE    number of graphics pages used
  9251. 187h    WORD    extra system memory size
  9252. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  9253. ---information unique to DESQview 2.2+---
  9254. 18Ah    BYTE    serial port usage
  9255.         FFh uses all serial ports
  9256.         00h no serial ports
  9257.         01h only COM1
  9258.         02h only COM2
  9259. 18Bh    BYTE    DVP program flags 4 (see #0356)
  9260. 18Ch    BYTE    protection level for 386 machines
  9261. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  9262. ---information unique to DESQview/X 1.0---
  9263. 18Dh    BYTE    X flags
  9264.         bits 3-7: unused (0)
  9265.         bit 2: don't display wait message when opening window
  9266.         bit 1: don't display DOS window
  9267.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  9268.                (NEWPROC) inherit DOS client layer usage
  9269. 18Eh    BYTE    X keyboard behavior (0-3)
  9270. 18Fh    BYTE    font scaling
  9271.         00h fixed fonts
  9272.         01h scalable fonts
  9273. 190h 10 BYTEs    reserved (0)
  9274. 19Ah    WORD    length of data follownig XDVP signature
  9275. 19Ch  4 BYTEs    signature "XDVP"
  9276. 1A0h  N BYTEs    list of variable length records (see #0358)
  9277.  
  9278. Bitfields for .PIF/.DVP program flags 1:
  9279. Bit(s)    Description    (Table 0354)
  9280.  7    writes text directly to screen
  9281.  6    runs in foreground only (see also #0353 offset 184h)
  9282.  5    uses math coprocessor
  9283.  4    accesses system keyboard buffer directly
  9284.  3-1    reserved (0)
  9285.  0    swappable
  9286. SeeAlso: #0353,#0355,#0356
  9287.  
  9288. Bitfields for .DVP program flags 3:
  9289. Bit(s)    Description    (Table 0355)
  9290.  7    automatically assign window position
  9291.  5    maximum memory value has been specified
  9292.  4    disallow "Close" command
  9293.  3    foreground-only when doing graphics
  9294.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  9295.  2    don't virtualize (see also #0356)
  9296.  1    foreground-only during DOS calls
  9297.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  9298. SeeAlso: #0353,#0354,#0356
  9299.  
  9300. Bitfields for .DVP program flags 4:
  9301. Bit(s)    Description    (Table 0356)
  9302.  7    automatically close application on exit if .COM or .EXE    specified
  9303.     (see also #0353 offset 17Ch)
  9304.  6    swappable if not using serial ports
  9305.  5    start program with window hidden (v2.26+)
  9306.  4    start program in background (v2.26+)
  9307.  3    virtualize text (see also #0355)
  9308.  2    virtualize graphics (see also #0355)
  9309.  1    share CPU when foreground
  9310.  0    share EGA when foreground and zoomed
  9311. SeeAlso: #0353,#0354,#0355
  9312.  
  9313. Bitfields for DESQview keyboard conflict level:
  9314. Bit(s)    Description    (Table 0357)
  9315.  3    save/restore entire INT 09 handler state every taskswtch
  9316.  2    take special precautions for programs which read the BIOS keyboard
  9317.       buffer directly from memory
  9318.  1    never indicate keystroke available during scripts/xfers
  9319.  0    only indicate keystroke available every sixth poll
  9320. SeeAlso: #0353
  9321.  
  9322. Format of DESQview/X variable length record:
  9323. Offset    Size    Description    (Table 0358)
  9324.  00h    WORD    length of following record, 0000h if end of record list
  9325.  02h    BYTE    record type
  9326.         01h script filename, up to 64 characters
  9327.         02h command-line parameters (allows >64 characters on cmdline)
  9328.         03h environment inheritance
  9329.         04h environment string
  9330.         05h starting window position
  9331. ---types 01h,02h,04h---
  9332.  03h  N BYTEs    ASCII data
  9333. ---type 03h---
  9334.  03h    BYTE    inheritance
  9335.         00h do not inherit
  9336.         01h inherit environment
  9337. ---type 05h---
  9338.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  9339.         starting row, starting column, starting height, starting width
  9340. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  9341.       only the last instance of each type is used; multiple occurrences of
  9342.       type 04h are concatenated
  9343. SeeAlso: #0353
  9344. --------Q-15102D-----------------------------
  9345. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  9346.     AX = 102Dh
  9347.     BL = subfunction
  9348.         00h determine whether using keyboard mouse
  9349.         Return: BL = 00h using real mouse
  9350.                  01h using keyboard mouse
  9351.         01h turn keyboard mouse on
  9352.         02h turn keyboard mouse off
  9353. SeeAlso: INT 33/AX=0024h
  9354. --------Q-15102E-----------------------------
  9355. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  9356.     AX = 102Eh
  9357.     BX = number of bytes
  9358. Return: AX = status
  9359.         0000h successful
  9360.         ES:DI -> allocated system memory (see #0359)
  9361.         0001h failed
  9362.         ES:DI = 0000h:0000h
  9363. Note:    under DV 2.42, this call is identical to AX=1001h
  9364. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  9365.  
  9366. Format of DESQview system memory block header:
  9367. Offset    Size    Description    (Table 0359)
  9368.  00h    WORD    segment of next header or 0000h
  9369.  02h    WORD    segment of previous header or 0000h
  9370.  04h    WORD    size of block in paragraphs, including header
  9371.  06h    BYTE    availability flag (00h in use, 01h free)
  9372. Note:    this header is located one paragraph before the memory block proper
  9373. SeeAlso: #0349
  9374. --------Q-1511-------------------------------
  9375. INT 15 - TopView commands
  9376.     AH = 11h
  9377.     AL = various (except 17h)
  9378. Return: varies by function
  9379. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  9380.       see those below
  9381. SeeAlso: AX=DE00h,AX=DE22h,AX=DE30h
  9382. --------T-1511-------------------------------
  9383. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  9384.     AH = 11h
  9385.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  9386.             request (max len = 127)
  9387. Return: AX = status (SYS_OK or SYS_ERROR)
  9388. SeeAlso: AH=0Ch"VMiX"
  9389. --------T-1511-------------------------------
  9390. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  9391.     AH = 11h
  9392. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  9393. SeeAlso: AH=12h"MultiDOS"
  9394. Index:    hotkeys;MultiDOS Plus
  9395. --------Q-151117BX0000-----------------------
  9396. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  9397.     AX = 1117h
  9398.     BX = 0000h    get current mapping context without setting
  9399.          nonzero    set new mapping context
  9400. Return: BX = mapping context in effect before call
  9401.     interrupts enabled
  9402. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  9403.     mapping contexts determine conventional-memory addressability; setting
  9404.       a mapping context ensures that the associated program and data areas
  9405.       are in memory for access.  Usable by drivers, TSRs and shared
  9406.       programs.
  9407.     caller need not be running under DESQview, but must ensure that the
  9408.       stack in use will not be mapped out by the call
  9409. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  9410. --------m-1511DE-----------------------------
  9411. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  9412.     AX = 11DEh
  9413. Return: CF clear if installed
  9414.         AX = segment at which QEXT.SYS is located
  9415. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  9416.       versions also implement the XMS standard
  9417. Note:    a private entry point (see #0360) may be found by searching the
  9418.       beginning of the returned segment for the signature string
  9419.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  9420.       prior to the signature contains the QEXT version number in BCD,
  9421.       and the word prior to that contains the offset within the QEXT
  9422.       code segment of the private entry point
  9423. SeeAlso: INT 2F/AX=4310h"XMS",INT 67/AH=3Fh
  9424.  
  9425. (Table 0360)
  9426. Call QEXT.SYS private entry point with:
  9427.     AH = 00h ???
  9428.     AH = nonzero ???
  9429. --------!---Section--------------------------
  9430.